Вызывается расширением формы при необходимости проверки заполнения реквизитов в форме, при вызове стандартных команд "OK", "Да", "Повторить", "Пропустить", а также при выполнении метода ПроверитьЗаполнение. Позволяет разработчику конфигурации самостоятельно реализовать проверку заполнения в обработчике события. При этом в обработчике можно полностью отказаться от системной обработки (очистив список проверяемых реквизитов), отказаться от проверки системой части реквизитов (выполнив проверку отдельных реквизитов особенным образом и исключив эти реквизиты из списка), а также добавить для проверки другие реквизиты, проверка которых не была указана. Пример: Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) // Проверим заполненность реквизита "Покупатель" Если Не ЗначениеЗаполнено(Покупатель) Тогда // Если он не заполнен, сообщим об этом пользователю Сообщение = Новый СообщениеПользователю(); Сообщение.Текст = "Не указан Покупатель, на которого выписывается товарная накладная!"; Сообщение.Поле = "Покупатель"; Сообщение.УстановитьДанные(ЭтотОбъект); Сообщение.Сообщить(); // Сообщим платформе, что мы сами обработали проверку заполнения реквизита "Покупатель" ПроверяемыеРеквизиты.Удалить(ПроверяемыеРеквизиты.Найти("Покупатель")); // Так как информация не консистентна, то продолжать работу дальше смысла нет Отказ = Истина; КонецЕсли; // Сообщим платформе, что мы сами обрабатываем проверку реквизита товар в табличной части Товары ПроверяемыеРеквизиты.Удалить(Проверяемые
Синтаксис
ОбработкаПроверкиЗаполнения(<Отказ>, <ПроверяемыеРеквизиты>)Полное описание, параметры и ограничения
ВнешняяОбработка.ОбработкаПроверкиЗаполнения (ExternalDataProcessor.FillCheckProcessing)
ВнешняяОбработка (ExternalDataProcessor)
ОбработкаПроверкиЗаполнения (FillCheckProcessing)
Доступен, начиная с версии 8.2.
Синтаксис:
ОбработкаПроверкиЗаполнения(<Отказ>, <ПроверяемыеРеквизиты>)
Параметры:
<Отказ>
Тип: Булево.
Если в теле процедуры-обработчика установить данному параметру значение Истина, то будет выполнен отказ от продолжения работы после выполнения проверки заполнения.
Значение по умолчанию: Ложь.
<ПроверяемыеРеквизиты>
Тип: Массив.
Массив путей к реквизитам, для которых будет выполнена проверка заполнения. Массив может быть модифицирован удалением или добавлением путей к необходимым реквизитам.
Описание:
Вызывается расширением формы при необходимости проверки заполнения реквизитов в форме, при вызове стандартных команд "OK", "Да", "Повторить", "Пропустить", а также при выполнении метода ПроверитьЗаполнение.
Позволяет разработчику конфигурации самостоятельно реализовать проверку заполнения в обработчике события. При этом в обработчике можно полностью отказаться от системной обработки (очистив список проверяемых реквизитов), отказаться от проверки системой части реквизитов (выполнив проверку отдельных реквизитов особенным образом и исключив эти реквизиты из списка), а также добавить для проверки другие реквизиты, проверка которых не была указана.
Пример:
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
// Проверим заполненность реквизита "Покупатель"
Если Не ЗначениеЗаполнено(Покупатель) Тогда
// Если он не заполнен, сообщим об этом пользователю
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = "Не указан Покупатель, на которого выписывается товарная накладная!";
Сообщение.Поле = "Покупатель";
Сообщение.УстановитьДанные(ЭтотОбъект);
Сообщение.Сообщить();
// Сообщим платформе, что мы сами обработали проверку заполнения реквизита "Покупатель"
ПроверяемыеРеквизиты.Удалить(ПроверяемыеРеквизиты.Найти("Покупатель"));
// Так как информация не консистентна, то продолжать работу дальше смысла нет
Отказ = Истина;
КонецЕсли;
// Сообщим платформе, что мы сами обрабатываем проверку реквизита товар в табличной части Товары
ПроверяемыеРеквизиты.Удалить(ПроверяемыеРеквизиты.Найти("Товары.Товар"));
// Обходим строки и проверяем заполнение реквизита
Для Индекс = 0 по Товары.Количество()-1 Цикл
СтрокаТовар = Товары.Получить(Индекс);
Если Не ЗначениеЗаполнено(СтрокаТовар.Товар) Тогда
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = "В строке " + Индекс + " не заполнено значение товара";
Сообщение.Поле = "Товары[" + Индекс + "].Товар";
Сообщение.УстановитьДанные(ЭтотОбъект);
Сообщение.Сообщить();
Отказ = Истина;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Доступность:
Толстый клиент.
Использование в версии:
Доступен, начиная с версии 8.2.
Методическая информация
Практические примеры
Проверить количество своей внешней обработки перед ОК
Полный обработчик модуля объекта собственной внешней обработки проверяет бизнес-условие без записи в базу.
Где и как запускать
Модуль объекта собственной внешней обработки; обычная форма, толстый клиент.
Подготовка
Создайте собственную внешнюю обработку УчебнаяПокупкаКниг.epf с реквизитом Количество Число 10.0 со знаком. Основную обычную форму создайте мастером; реквизит количества перетащите на форму.
Модуль объекта обработки: назначьте данный обработчик ОбработкаПроверкиЗаполнения. У кнопки обычной формы используйте стандартную команду ОК, вызывающую проверку заполнения.
Только толстый клиент: именно такую доступность у этого события внешней обработки указывает установленная справка. Не переносите код в событие поля формы или в серверный общий модуль.
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
Если Количество <= 0 Тогда
Отказ = Истина;
Сообщить("Для учебной покупки количество должно быть больше нуля");
КонецЕсли;
Индекс = ПроверяемыеРеквизиты.Найти("Количество");
Если Индекс <> Неопределено Тогда
ПроверяемыеРеквизиты.Удалить(Индекс);
КонецЕсли;
КонецПроцедурыРазбор по шагам
Откройте собственную обработку в обычном толстом клиенте.
Введите 0 / -1 и нажмите стандартное ОК.
Введите 3 и повторите: собственная проверка больше не выставляет Отказ.
Как проверить результат
Нулевое и отрицательное количество дают явный отказ. ПроверяемыеРеквизиты меняется только для уже проверенного Количество.
При количестве 3 не сбрасывается чужой ранее установленный Отказ: код не присваивает Отказ=Ложь.
Ожидаемый результат
Показана реальная проверка собственной формы перед стандартным действием.
На что обратить внимание
Проверка не сохраняет документ покупки и не проводит движения.
BSL и открытие обработки при сборке HTML не выполнялись.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.