|   |   | 
| 
 | Ввод на основании - документ | ☑ | ||
|---|---|---|---|---|
| 0
    
        pro3ri 13.10.15✎ 12:46 | 
        Добрый день! 
 Как сделать чтобы документ можно было ввести только вводом на основании, а не по кнопке "добавить"? | |||
| 1
    
        Горогуля 13.10.15✎ 12:47 | 
        никак     | |||
| 2
    
        pro3ri 13.10.15✎ 12:48 | 
        Требуется чтобы один филиал мог вводить документ Предварительная накладная на основании СЧета на оплату, а другой только на оснвании СЧета покупателя     | |||
| 3
    
        Горогуля 13.10.15✎ 12:49 | 
        (2) в чём разница меж этими документами?     | |||
| 4
    
        pro3ri 13.10.15✎ 12:49 | 
        один резервирует товар, другой нет     | |||
| 5
    
        Чайник Рассела 13.10.15✎ 12:50 | 
        только через попытка Исключение.     | |||
| 6
    
        Горогуля 13.10.15✎ 12:50 | 
        вообще, документу пофиг, откуда он взялся     | |||
| 7
    
        pro3ri 13.10.15✎ 12:51 | ||||
| 8
    
        Горогуля 13.10.15✎ 12:51 | 
        (7) чо там?     | |||
| 9
    
        pro3ri 13.10.15✎ 12:52 | 
        ввод на основании структура     | |||
| 10
    
        Горогуля 13.10.15✎ 12:52 | 
        (9) ну. заполняется по-разному. какая связь с запретом?     | |||
| 11
    
        Kondarat 13.10.15✎ 12:53 | 
        (0) ПередОткрытием проверить наличие основания.
 Если его нет - объяснить пользователю, Отказ=Истина; | |||
| 12
    
        Чайник Рассела 13.10.15✎ 12:54 | 
        (7) одному подразделению дай права на заказ, другому на счет     | |||
| 13
    
        lera01 13.10.15✎ 12:54 | 
        Делайте настройку пользователя какую-нибудь, Типа "Вводить предварительную накладную только по счету" и перед открытием проверять как (11) советует. И так же если надо только по заказу - другая настройка и т.д.     | |||
| 14
    
        mehfk 13.10.15✎ 12:55 | 
        (11) Не надо так, надо в обработкезаполнения проверять все что нужно и при необходимости делать вызватьисключение     | |||
| 15
    
        pro3ri 13.10.15✎ 13:05 | 
        Подумал, может проще так: сделать реквизит дока Разрешено открытие, если в ОБаботкаЗаполнения филиал вводит док на основании запрещенного документа, тогда в ОБаботкаЗаполнения Разрешено открытие = ложь и в прощедуре Перед открытием Условие на отказ по этой переменной.     | |||
| 16
    
        Kondarat 13.10.15✎ 13:06 | 
        (14) Почему?     | |||
| 17
    
        lera01 13.10.15✎ 13:16 | 
        (14) А если документ вводить вообще не на основании, то как код из обработки заполнения поможет решить проблему?     | |||
| 18
    
        mehfk 13.10.15✎ 13:38 | 
        (17)
 Возникает при вводе документа на основании, а также при выполнении метода Заполнить, при вводе на основании, а также при интерактивном вводе нового. В процедуре-обработчике этого события должен быть описан сам алгоритм заполнения реквизитов документа на основании переданного значения. | |||
| 19
    
        Лефмихалыч 13.10.15✎ 14:12 | 
        в обработке заполнения, если ДанныеЗаполнения не пустые устанавливать какое-нибудь  ДополнительныеСвойства.Добавить("ВведенНаОсновании",Истина)
 потом перед открытием, если это новый, - проверять наличие свойства в ДополнительныеСвойства | |||
| 20
    
        pro3ri 13.10.15✎ 14:25 | 
        (19) спасибо! Так и реквизита дока создавать не надо!     | |||
| 21
    
        pro3ri 13.10.15✎ 14:39 | 
        Предварительная накладная, модуль объекта:
 Процедура ОбработкаЗаполнения(Основание) ИначеЕсли ТипЗнч(Основание) = Тип("ДокументСсылка.СчетНаОплатуПокупателю") И Основание.Подразделение.Код = "00001" Тогда ДополнительныеСвойства.Вставить("ВведенНаОсновании",Истина); //Сообщить("Вам запрещено создавать документ Предварительная накладная на основании Счета На Оплату Покупателю"); Предупреждение("Вам запрещено создавать документ Предварительная накладная на основании Счета На Оплату Покупателю, делайте его на основании Счета покупателя!!!"); Модуль формы Процедура ПередОткрытием(Отказ, СтандартнаяОбработка) Если ДополнительныеСвойства.Свойство("ВведенНаОсновании") Тогда Отказ = Истина; КонецЕсли; КонецПроцедуры | |||
| 22
    
        mehfk 13.10.15✎ 14:43 | 
        мало того что копрокод, так еще и нерабочий.     | |||
| 23
    
        Лефмихалыч 13.10.15✎ 15:36 | 
        (21) ты невнимательно прочитал     | |||
| 24
    
        pro3ri 14.10.15✎ 08:12 | 
        (22) все работает, логика такая: одно подразделение делает документы Счет на оплату и Счет покупателя, другое только Счет на оплату. Первое должно вводить док Предварительная накладная только на основании Счета покупателя, второе без ограничений. Все прекрасно работает, хотя Основание.Подразделение.Код = "00001" не есть гуд, но от него же не уйдешь?     | |||
| 25
    
        Лефмихалыч 14.10.15✎ 08:26 | 
        (24) уйдешь. Способов овер 9000.
 Например, можно добавить роль без прав, просто, чтобы была сущность в конфигурации, которую можно с пользователем связать. Назвать роль "ВводПредварительнойНакладнойБезОснования". Далее заменить весь твой унылый код про подразделения на проверку Если не РольДоступна() и ОснованиеяНет Тогда // вам нельзя без основания Иначе // вам можно КонецЕсли роль, соответственно, раздать просто всем, кому должно быть можно вводить без основания. | |||
| 26
    
        Лефмихалыч 14.10.15✎ 08:27 | 
        +(25) в текущей твоей реализации изменение штатной структуры всегда будет требовать доработок в конфигурации, а за такой в приличном обществе канделябром могут отоварить     | |||
| 27
    
        Лефмихалыч 14.10.15✎ 09:04 | 
        а, ну, и еще - в 1С используется политика разрешения. То есть запрещено все, что явно не разрешено и, если что-то разрешено хотя бы в одной роли, то оно разрешено для всей ролей.
 Таким образом вот эти все, подобные (0) костыли всегда надо разрабатывать путем разрешения по условию, а не запретов по условию. Иначе в долгосрочной перспективе все эти костыли обрушиваются. | |||
| 28
    
        pro3ri 14.10.15✎ 09:56 | 
        (27) благодарю     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |