Вызывается расширением формы при необходимости проверки заполнения реквизитов в форме, при вызове команды "Сформировать", а также при выполнении метода ПроверитьЗаполнение. Позволяет разработчику конфигурации самостоятельно реализовать проверку заполнения в обработчике события. При этом в обработчике можно полностью отказаться от системной обработки (очистив список проверяемых реквизитов), отказаться от проверки системой части реквизитов (выполнив проверку отдельных реквизитов особенным образом и исключив эти реквизиты из списка), а также добавить для проверки другие реквизиты, проверка которых не была указана. Пример: Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) // Проверим заполненность реквизита "Покупатель" Если Не ЗначениеЗаполнено(Покупатель) Тогда // Если он не заполнен, сообщим об этом пользователю Сообщение = Новый СообщениеПользователю(); Сообщение.Текст = "Не указан Покупатель, на которого выписывается товарная накладная!"; Сообщение.Поле = "Покупатель"; Сообщение.УстановитьДанные(ЭтотОбъект); Сообщение.Сообщить(); // Сообщим платформе, что мы сами обработали проверку заполнения реквизита "Покупатель" ПроверяемыеРеквизиты.Удалить(ПроверяемыеРеквизиты.Найти("Покупатель")); // Так как информация в документе не консистентна, то продолжать работу дальше смысла нет Отказ = Истина; КонецЕсли; // Сообщим платформе, что мы сами обрабатываем проверку реквизита товар в табличной части Товары ПроверяемыеРеквизиты.Удалить(ПроверяемыеРеквизиты.Найти("Товар
Синтаксис
ОбработкаПроверкиЗаполнения(<Отказ>, <ПроверяемыеРеквизиты>)Полное описание, параметры и ограничения
ОтчетОбъект.<Имя отчета>.ОбработкаПроверкиЗаполнения (ReportObject.<Report name>.FillCheckProcessing)
ОтчетОбъект.<Имя отчета> (ReportObject.<Report name>)
ОбработкаПроверкиЗаполнения (FillCheckProcessing)
Доступен, начиная с версии 8.2.
Синтаксис:
ОбработкаПроверкиЗаполнения(<Отказ>, <ПроверяемыеРеквизиты>)
Параметры:
<Отказ>
Тип: Булево.
Если в теле процедуры-обработчика установить данному параметру значение Истина, то будет выполнен отказ от продолжения работы после выполнения проверки заполнения.
Значение по умолчанию: Ложь.
<ПроверяемыеРеквизиты>
Тип: Массив.
Массив путей к реквизитам, для которых будет выполнена проверка заполнения. Массив может быть модифицирован удалением или добавлением путей к необходимым реквизитам.
Описание:
Вызывается расширением формы при необходимости проверки заполнения реквизитов в форме, при вызове команды "Сформировать", а также при выполнении метода ПроверитьЗаполнение.
Позволяет разработчику конфигурации самостоятельно реализовать проверку заполнения в обработчике события. При этом в обработчике можно полностью отказаться от системной обработки (очистив список проверяемых реквизитов), отказаться от проверки системой части реквизитов (выполнив проверку отдельных реквизитов особенным образом и исключив эти реквизиты из списка), а также добавить для проверки другие реквизиты, проверка которых не была указана.
Пример:
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
// Проверим заполненность реквизита "Покупатель"
Если Не ЗначениеЗаполнено(Покупатель) Тогда
// Если он не заполнен, сообщим об этом пользователю
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = "Не указан Покупатель, на которого выписывается товарная накладная!";
Сообщение.Поле = "Покупатель";
Сообщение.УстановитьДанные(ЭтотОбъект);
Сообщение.Сообщить();
// Сообщим платформе, что мы сами обработали проверку заполнения реквизита "Покупатель"
ПроверяемыеРеквизиты.Удалить(ПроверяемыеРеквизиты.Найти("Покупатель"));
// Так как информация в документе не консистентна, то продолжать работу дальше смысла нет
Отказ = Истина;
КонецЕсли;
// Сообщим платформе, что мы сами обрабатываем проверку реквизита товар в табличной части Товары
ПроверяемыеРеквизиты.Удалить(ПроверяемыеРеквизиты.Найти("Товары.Товар"));
// Обходим строки и проверяем заполнение реквизита
Для Индекс = 0 по Товары.Количество()-1 Цикл
Товар = Товары.Получить(Индекс);
Если Не ЗначениеЗаполнено(Товары.Товар) Тогда
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = "В строке " + Индекс + " не заполнено значение товара";
Сообщение.Поле = "Товары[" + Индекс + "].Товар";
Сообщение.УстановитьДанные(ЭтотОбъект);
Сообщение.Сообщить();
Отказ = Истина;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Доступность:
Сервер, толстый клиент, внешнее соединение.
Замечание:
Безопасный режим на время исполнения данного обработчика будет отключен. Данное замечание не относится к обработчикам событий, расположенным в расширении конфигурации.
Использование в версии:
Доступен, начиная с версии 8.2.
Методическая информация
Практические примеры
ОбработкаПроверкиЗаполнения: собственный отчёт книг
Событие модуля объекта связано со стандартной командой формирования своего настоящего отчёта, а не вызывается вручную вместо платформы.
Где и как запускать
Модуль объекта своего отчёта УчебныеКнигиСКД; сервер / толстый клиент.
Подготовка
В своей учебной конфигурации создайте Отчеты → УчебныеКнигиСКД. У отчёта откройте ОсновнаяСхемаКомпоновкиДанных и сохраните её макетом ОсновнаяСхемаКомпоновкиДанных.
В конструкторе СКД создайте источник Local и набор-запрос Книги. Вставьте приведённый запрос двух константных строк; это не чтение рабочих справочников. Доступные поля Наименование, Количество, Сумма заполните автоматически.
В настройках схемы создайте вариант Подробно: выбраны Наименование, Количество, Сумма; структура — группировка Детальные записи. Второй вариант Кратко: Наименование и Сумма, также Детальные записи. Первым оставьте Подробно; у обоих задайте понятное представление.
Мастером создайте у своего отчёта управляемую форму ОтчетКниг, тип Основная, со стандартными командами Сформировать / Настройки. Основной реквизит Отчет типа ОтчетОбъект.УчебныеКнигиСКД должен остаться основным.
Проверьте штатный реквизит Результат типа ТабличныйДокумент и связанное поле ПолеРезультата с путём Результат. Если мастер дал другое имя, согласуйте именно этот свой реквизит и связь штатной команды, не добавляйте второй результат.
Добавьте свои реквизиты Статус Строка 200 и ЧислоФормирований Число 10.0, разместите на форме. События отчётной формы назначаются самой форме, не полю результата и не модулю объекта отчёта.
Для уроков сохранения у конфигурации оставьте незаданными ХранилищеВариантовОтчетов и ХранилищеПользовательскихНастроекОтчетов: используется стандартное внутреннее хранилище собственной учебной базы. Пользователю нужно право СохранениеДанныхПользователя. Сохраняйте и загружайте только свои именованные настройки этого отчёта.
Каждый пример самостоятельный. Формируйте только этот собственный отчёт; рабочие настройки, печать и сохранение в чужие хранилища не используются. BSL здесь не исполнялся.
У собственного отчёта добавьте реквизит НазваниеУчебногоОтчета Строка 100, выведите его на основной форме и перед опытом заполните «Покупка учебных книг». Это реквизит отчёта, не только независимый реквизит формы.
Каждый обработчик ниже относится к модулю объекта отчёта, не к одноимённому событию отчётной формы. Изучайте примеры по одному; названия / сигнатуры событий объекта и формы различаются.
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
Если ПустаяСтрока(СокрЛП(НазваниеУчебногоОтчета)) Тогда
Отказ = Истина;
Сообщить("Введите название собственного отчёта");
КонецЕсли;
Индекс = ПроверяемыеРеквизиты.Найти("НазваниеУчебногоОтчета");
Если Индекс <> Неопределено Тогда
ПроверяемыеРеквизиты.Удалить(Индекс);
КонецЕсли;
КонецПроцедурыКонструктор СКД своего отчёта: запрос двух константных строк, не BSL
ВЫБРАТЬ
"Учебная книга" КАК Наименование,
3 КАК Количество,
750 КАК Сумма
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ "Учебная тетрадь", 5, 200Разбор по шагам
Подготовьте собственный отчёт, константный запрос и реквизит названия.
Назначьте процедуру точному событию модуля объекта.
Нажмите Сформировать на своей основной форме и сравните результат / отказ.
Как проверить результат
Строка из одних пробелов отклоняется собственной проверкой. Из списка исключается только уже самостоятельно проверенное поле, а не весь список.
Отказ=Истина останавливает продолжение после проверки. Процедура не формирует отчёт и не вызывает проверку рекурсивно.
Ожидаемый результат
Показан настоящий этап проверки / подготовки / компоновки с корректными параметрами.
На что обратить внимание
ОбработкаКомпоновкиРезультата выполняется после ПриКомпоновкеРезультата при сохранённой стандартной обработке ранней стадии.
В фоновом обработчике изменения реквизитов отчёта не являются способом передачи результата.
BSL и формирование отчёта при сборке HTML не выполнялись.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.