ДокументОбъект.<Имя документа>.ОбработкаПроверкиЗаполнения

События · FillCheckProcessing

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

Синтаксис

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

ДокументОбъект.<Имя документа>.ОбработкаПроверкиЗаполнения (DocumentObject.<Document name>.FillCheckProcessing)

ДокументОбъект.<Имя документа> (DocumentObject.<Document name>)

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

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

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

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

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

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

Пример:

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

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

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

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

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

Сообщение.Сообщить();

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

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

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

КонецЕсли;

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

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

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

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

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

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

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

Замечание:

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

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

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

Описание изменено в версии 8.5.1.

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

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

Проверить сумму учебной заявки

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

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

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

Подготовка

  1. В отдельной учебной конфигурации создайте документ УчебнаяЗаявка: строковый номер длиной 12 с автонумерацией и разрешённым проведением.

  2. Добавьте реквизиты Комментарий (Строка 100), Сумма (Число 15.2), Утвержден (Булево), ЗакрытПериод (Булево). Регистры и движения для этого урока не нужны.

  3. Откройте Документы → УчебнаяЗаявка → Модуль объекта, вставьте обработчик и обновите только учебную базу. Это пример жизненного цикла, а не готовый бухгалтерский документ.

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

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

  1. Запустите проверку заполнения нового документа.

  2. Сумма <= 0 нарушает условие урока.

  3. Не очищайте ПроверяемыеРеквизиты: остальные системные проверки остаются.

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

  1. Нулевая сумма даёт отказ при ПроверитьЗаполнение().

  2. Сумма 600 проходит наше правило.

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

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

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

  1. Программная запись не обязательно запускает этот этап.

  2. Ограничение, обязательное при любой записи, дублируется в ПередЗаписью.

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

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

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

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

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