Имя: Пароль:
1C
 
Ввод на основании - документ
,
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) благодарю