Собственно задумался над вопросом как отказаться от ввода на основании в упр. формах, чтобы окно формы не появлялось?
В обычных формах было все просто, берем экспортную переменную в виде флага, устанавливаем, проверяем перед открытием и идем в отказ.
В управляемых формах такого сделать не получится, стал думать как можно красивее такое замутить, видел публикацию нашего уважаемого админа Vofki, там в обработке заполнения вызывается исключение
ВызватьИсключение("Упс, произошла какая-то неведомая фигня");
Решение интересное, но думал может есть что-то красивее, чем еррор на экране))Так вот, подумали с коллегой и решили попробовать через структуру "ДополнительныеСвойства", которая есть по умолчанию в объекте. Получилось что-то вроде такого:
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
// наше условие, при котором документ не должен заполняться и
ДополнительныеСвойства.Вставить("НеОткрыватьФорму", Истина);
КонецПроцедуры
и далее в форме:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ТекущийОбъект = РеквизитФормыВЗначение("Объект");
НеОткрыватьФорму = Ложь;
Если ТекущийОбъект.ДополнительныеСвойства.Свойство("НеОткрыватьФорму", НеОткрыватьФорму) Тогда
Отказ = НеОткрыватьФорму;
КонецЕсли;
КонецПроцедуры
вот думали такой вариант будет красивым, но почему в событии ПриСозданииНаСервере, в нашем объекте, структура ДополнительныеСвойства пустая...
Вопрос №1) Почему структура ДополнительныеСвойства пустая в модуле формы?
Вопрос №2) Знает ли кто какой-то ещё красивый способ (без добавления реквизита "ДокументОснование" в метаданные) отказаться от ввода на основании?