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