ОбработкаОбъект.<Имя обработки>.ОбработкаПроверкиЗаполнения (DataProcessorObject.<Имя обработки>.FillCheckProcessing)

Синтаксис:

ОбработкаПроверкиЗаполнения(<Отказ>, <ПроверяемыеРеквизиты>)

Параметры:

<Отказ>

Тип: Булево.
Если в теле процедуры-обработчика установить данному параметру значение Истина, то будет выполнен отказ от продолжения работы после выполнения проверки заполнения.
Значение по умолчанию: Ложь.

<ПроверяемыеРеквизиты>

Тип: Массив.
Массив путей к реквизитам, для которых будет выполнена проверка заполнения. Массив может быть модифицирован удалением или добавлением путей к необходимым реквизитам.

Описание:

Вызывается расширением формы при необходимости проверки заполнения реквизитов в форме, при вызове стандартных команд "OK", "Да", "Повторить", "Пропустить", а также при выполнении метода ПроверитьЗаполнение.
Позволяет разработчику конфигурации самостоятельно реализовать проверку заполнения в обработчике события. При этом в обработчике можно полностью отказаться от системной обработки (очистив список проверяемых реквизитов), отказаться от проверки системой части реквизитов (выполнив проверку отдельных реквизитов особенным образом и исключив эти реквизиты из списка), а также добавить для проверки другие реквизиты, проверка которых не была указана.
Пример:
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)

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

// Сообщим платформе, что мы сами обрабатываем проверку реквизита товар в табличной части Товары
ПроверяемыеРеквизиты.Удалить(ПроверяемыеРеквизиты.Найти("Товары.Товар"));

// Обходим строки и проверяем заполнение реквизита
Для Индекс = 0 по Товары.Количество()-Цикл
    Товар = Товары.Получить(Индекс);
    Если 
Не ЗначениеЗаполнено(Товары.Товар) Тогда
        Сообщение = Новый СообщениеПользователю();
        Сообщение.Текст = "В строке " + Индекс + " не заполнено значение товара";
        Сообщение.Поле = "Товары[" + Индекс + "].Товар";
        Сообщение.УстановитьДанные(ЭтотОбъект);
        Сообщение.Сообщить();
        Отказ = Истина;
    КонецЕсли
;
КонецЦикла
;
    
КонецПроцедуры


    

1C:Enterprise Developer's Community