У объекта, который вводится на основании другого объекта (например, документа) существует обработчик события - ОбработкаЗаполнения
Данные обработчик имеет следующие параметры
- ДанныеЗаполнения
- ТекстЗаполнения
- СтандартнаяОбработка
Описание:
Возникает при вводе документа на основании, а также при выполнении метода Заполнить, при вводе на основании, а также при интерактивном вводе нового. В процедуре-обработчике этого события должен быть описан сам алгоритм заполнения реквизитов документа на основании переданного значения.
Как отменить действие ОбработкаЗаполнения
Часто возникает вопрос, как отменить действие этого обработчика. Или проще говоря отказаться от процедуры заполнения объекта на основании. Как мы видим из описания выше, параметра Отказ у обработчика нет. А отказ от стандартной обработки (СтандартнаяОбработка = Ложь) не отменяет действие.
Для того, чтобы оповестить пользователя о причинах отказа, следует использовать исключение (это официальная рекомендация 1С, изложенная в документации):
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
Если ТипЗнч(ДанныеЗаполнения) = Тип("СправочникСсылка.Сотрудники") Тогда
Если ПолучитьЗначениеРеквизита(ДанныеЗаполнения, "ЭтоГруппа") = Истина Тогда
ВызватьИсключение "Ввод приказа о приеме на основании группы сотрудников невозможен!
|Выберите сотрудника. Для раскрытия группы используйте клавиши Ctrl и стрелку вниз";
Иначе
// обработка заполнения объекта по данным заполнения
КонецЕсли;
КонецЕсли;
КонецПроцедуры
При этом не рекомендуются какие-либо иные решения для подобных проверок. В частности, не следует создавать дополнительные команды для ввода на основании и размещать проверки в обработчиках этих команд.