Внешний отчёт: проверить даты перед формированием

Учебные задачи

Обрабатываем проверку заполнения внешнего отчёта и не разрешаем период с началом позже окончания.

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

Модуль объекта внешнего отчёта (.erf). Для воспроизводимого запуска используется собственная обычная форма в толстом клиенте.

Подготовка

  1. Создайте внешний отчёт. Добавьте реквизиты объекта ДатаНачала и ДатаОкончания типа Дата (состав даты — Дата), проверка заполнения — Выдавать ошибку.

  2. Создайте основную обычную форму отчёта, разместите на ней поля ДатаНачала и ДатаОкончания и кнопку ПроверитьПериод.

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

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

Основная обычная форма внешнего отчёта → Модуль формы.

Вызывается штатная проверка объекта отчёта. Сам обработчик вручную не вызывайте.

Процедура ПроверитьПериод(Кнопка)
    Если Не ПроверитьЗаполнение() Тогда
        Возврат;
    КонецЕсли;
    Сообщить("Период заполнен правильно, можно формировать отчёт");
КонецПроцедуры

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

  1. Кнопка вызывает метод ПроверитьЗаполнение() внешнего отчёта; платформа передаёт в событие флаг Отказ и список проверяемых реквизитов.

  2. Стандартная проверка обязательных дат сохранена: список ПроверяемыеРеквизиты здесь не очищается.

  3. Когда обе даты указаны, обработчик проверяет их порядок. Только при ошибке он устанавливает Отказ = Истина; ранее установленный отказ не сбрасывается.

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

  1. Оставьте обе даты пустыми: стандартная проверка должна показать обязательные поля, сообщение об успешной проверке не выводится.

  2. Укажите начало 15.10.2026, окончание 01.10.2026: появится сообщение об ошибочном порядке дат.

  3. Укажите начало 01.10.2026, окончание 15.10.2026: появится сообщение о правильно заполненном периоде.

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

Пустой или перевёрнутый период не проходит проверку, корректный проходит. Состояние базы не изменяется.

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

  1. Отказ относится к текущей проверке, а не к записи внешнего отчёта в базу. Не присваивайте ему Ложь в конце обработчика.

  2. Список ПроверяемыеРеквизиты содержит реквизиты стандартной проверки. Удаление имени из этого списка отменяет его стандартную проверку и здесь не требуется.

  3. В управляемой форме работайте с объектом отчёта на сервере. Не переносите обращения контекста обычной формы в клиентский модуль без адаптации.

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

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

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

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

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