СправочникОбъект.<Имя справочника>.ОбработкаПроверкиЗаполнения

События · FillCheckProcessing

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

Синтаксис

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

СправочникОбъект.<Имя справочника>.ОбработкаПроверкиЗаполнения (CatalogObject.<Catalog name>.FillCheckProcessing)

СправочникОбъект.<Имя справочника> (CatalogObject.<Catalog name>)

ОбработкаПроверкиЗаполнения (FillCheckProcessing)

Доступен, начиная с версии 8.2.

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

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

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

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

Пример:

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

// Проверим заполненность реквизита "Покупатель"

Если Не ЗначениеЗаполнено(Покупатель) Тогда

// Если он не заполнен, сообщим об этом пользователю

Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = "Не указан Покупатель, на которого выписывается товарная накладная!";
Сообщение.Поле = "Покупатель";
Сообщение.УстановитьДанные(ЭтотОбъект);
Сообщение.Сообщить();

// Сообщим платформе, что мы сами обработали проверку заполнения реквизита "Поставщик"

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

Отказ = Истина;

КонецЕсли;

// Сообщим платформе, что мы сами обрабатываем проверку реквизита Товар в табличной части Товары

ПроверяемыеРеквизиты.Удалить(ПроверяемыеРеквизиты.Найти("Товары.Товар"));

// Обходим строки и проверяем заполнение реквизита

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

КонецПроцедуры

Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.

Замечание:

Безопасный режим на время исполнения данного обработчика будет отключен. Данное замечание не относится к обработчикам событий, расположенным в расширении конфигурации.
См. также:
СправочникОбъект.<Имя справочника>, метод ПроверитьЗаполнение

Использование в версии:

Доступен, начиная с версии 8.2.

Методическая информация

Практические примеры

Проверить положительную цену до записи товара

ОбработкаПроверкиЗаполнения дополняет проверку заполнения бизнес-правилом.

Где и как запускать

Модуль объекта или набора записей, указанный в подготовке. Обработчик вызывается платформой; не вызывайте его как обычную команду формы.

Подготовка

  1. В отдельной учебной конфигурации создайте неиерархический справочник УчебныеТовары: строковый код длиной 10 с автонумерацией, наименование длиной 100.

  2. Добавьте реквизиты Цена (Число 15.2) и СнятСПродажи (Булево). Для Цена не включайте автоматический запрет отрицательного знака: в примере его проверяет код.

  3. Откройте Справочники → УчебныеТовары → Модуль объекта. Обработчики размещаются на уровне модуля, не внутри команды формы. Обновите только учебную базу и проверяйте её элементы.

  4. Для отдельной проверки вызовите ПроверитьЗаполнение() у созданного учебного элемента; не заменяйте им правило ПередЗаписью.

Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
    Если Цена <= 0 Тогда
        Отказ = Истина;
        Сообщить("Укажите цену больше нуля");
    КонецЕсли;
КонецПроцедуры

Разбор по шагам

  1. Платформа передаёт список реквизитов для своей проверки.

  2. Наш код проверяет цену, не очищая этот список.

  3. Отказ сообщает о неуспешной проверке заполнения, но сам не записывает элемент.

Как проверить результат

  1. ПроверитьЗаполнение() при нулевой цене сообщает о нарушении.

  2. При цене 150 эта дополнительная проверка проходит.

Ожидаемый результат

Проверка заполнения учитывает прикладное правило цены.

На что обратить внимание

  1. Программная запись не обязана вызывать ПроверитьЗаполнение: критичные ограничения проверяйте и перед записью.

  2. Не очищайте весь список системной проверки ради одного реквизита.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.