ПоследовательностьНаборЗаписей.<Имя последовательности>.ОбработкаПроверкиЗаполнения

События · FillCheckProcessing

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

Синтаксис

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

ПоследовательностьНаборЗаписей.<Имя последовательности>.ОбработкаПроверкиЗаполнения (SequenceRecordSet.<Sequence name>.FillCheckProcessing)

ПоследовательностьНаборЗаписей.<Имя последовательности> (SequenceRecordSet.<Sequence name>)

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

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

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

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

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

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

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

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

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

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

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

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

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

Замечание:

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

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

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

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

ОбработкаПроверкиЗаполнения: свой набор последовательности УчебныйПорядокДокументов

Настоящее событие набора, собственное измерение и ограниченный опыт с обязательной отменой транзакции.

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

Основной блок — модуль набора; дополнительные процедуры — свой серверный общий модуль.

Подготовка

  1. Собственная учебная конфигурация: документ УчебнаяЗапискаПоследовательности, номер Строка 12 с автонумерацией, проведение не требуется.

  2. Создайте последовательность УчебныйПорядокДокументов, включите свой документ в состав. Измерение Склад типа Строка 40. Не меняйте рабочие последовательности и их границы.

  3. Основной обработчик поместите в модуль набора записей последовательности УчебныйПорядокДокументов, не в модуль менеджера и не в форму документа.

  4. Две дополнительные процедуры — в свой серверный общий модуль УчебныеСобытияНабора с установленным Сервер. Вызовите его экспортную процедуру ПроверитьСвойНабор отдельной собственной командой; у неё не должно быть внешней транзакции.

  5. Для положительного опыта оставьте заполненное собственное измерение. Для отрицательного очистите только Запись.Склад в подготовке. Не удаляйте системные проверяемые реквизиты всего набора.

  6. Обе ветки драйвера отменяют собственную транзакцию. При сборке HTML BSL и записи базы не выполнялись.

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

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

  1. Создайте указанные собственные метаданные и назначьте событие в модуле набора.

  2. Вызовите отдельную экспортную процедуру драйвера: она создаёт и проверяет настоящий набор.

  3. Сравните заполненный и пустой варианты измерения; после опыта вся собственная транзакция отменена.

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

  1. Пустое / пробельное собственное измерение приводит к Отказ=Истина. Заполненный пример не переписывает входной отказ на Ложь.

  2. Для проверки заполнения исключён только собственный реквизит, уже проверенный кодом; остальные штатные проверки сохранены.

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

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

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

  1. ПроверитьЗаполнение вызывает ОбработкаПроверкиЗаполнения; не вызывайте эту процедуру вручную.

  2. Код не меняет границы последовательности, не перепроводит документы и не пересчитывает зарплату.

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

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

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

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

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