Как в отчете на СКД настроить выбор периода с точностью до секунд?

Программист 1С v8.3 (Управляемые формы) 1С:Розница IT и автоматизация бизнеса
← На главную

При разработке и доработке отчетов на базе системы компоновки данных (СКД) разработчики часто сталкиваются с ситуацией, когда стандартное поле выбора периода позволяет задавать только календарные даты, округляя границы до целого дня (с 00:00:00 даты начала по 23:59:59 даты окончания). Если требуется анализировать движения регистров или документы в разрезе конкретных часов, минут и секунд, стандартный диалог периода оказывается неприменим. Разберем причины такого поведения платформы и пошагово настроим схему компоновки данных для точного ввода времени.

Почему стандартный период не поддерживает секунды?

Проанализируем архитектуру работы с датами в типовых отчетах. В типовых конфигурациях выбор интервала дат обычно привязан к параметру со специальным системным типом СтандартныйПериод. Этот тип данных на уровне платформы «1С:Предприятие» предназначен исключительно для работы с календарными днями и стандартными интервалами (день, месяц, квартал, год).

Форма отчета автоматически распознает наличие параметра типа СтандартныйПериод и генерирует единый элемент управления для выбора дат. Даже если у зависимых параметров НачалоПериода и КонецПериода задан состав даты Дата и время, вычисляемые выражения СКД (например, &Период.ДатаНачала и КонецПериода(&Период.ДатаОкончания, "День")) все равно приводят границу к началу или концу суток.

Чтобы предоставить пользователю возможность указывать время вплоть до секунд, необходимо отказаться от использования составного типа СтандартныйПериод и перевести параметры на прямой ввод точной даты и времени.

Пошаговая настройка параметров в схеме компоновки данных

Разберем по шагам, как правильно перенастроить параметры в конструкторе СКД:

  1. Отключение составного периода: перейдем на вкладку Параметры в схеме компоновки данных. Найдем параметр с типом СтандартныйПериод (обычно он называется Период или СтандартныйПериод) и снимем флаг его использования либо полностью удалим его, если он не задействован в других выражениях.
  2. Настройка параметров начала и окончания: для параметров НачалоПериода и КонецПериода проверим тип данных — должно быть установлено значение Дата с составом даты Дата и время.
  3. Очистка выражений: обязательно очистим поле Выражение у обоих параметров. Если там остались формулы получения дат из стандартного периода или функции вроде КонецПериода(), их нужно удалить, чтобы платформа не перезаписывала введенные пользователем секунды.
  4. Снятие ограничения доступности: снимем флаг в колонке Ограничение доступности для обоих параметров. Если этот флаг установлен, параметры считаются служебными и не отображаются в пользовательском интерфейсе.
  5. Настройка формата редактирования: в свойствах параметров найдем поле Формат редактирования и укажем форматную строку вида:

    ДФ='dd.MM.yyyy HH:mm:ss'

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

Вывод параметров в быстрый доступ на форме отчета

После изменения параметров на вкладке схемы они могут пропасть из шапки отчета, если не настроен их пользовательский вывод. Чтобы вернуть удобные поля ввода в шапку отчета без программирования формы, выполним следующие действия:

  1. Перейдем на вкладку Настройки схемы компоновки данных и выберем нужный вариант отчета.
  2. В нижней панели перейдем на вкладку Параметры.
  3. Выделим параметр НачалоПериода и нажмем кнопку настройки пользовательского свойства (значок с карандашом/шестеренкой).
  4. Установим флаг Включать в пользовательские настройки, укажем понятное представление (например, Дата начала) и выберем режим редактирования Быстрый доступ.
  5. Повторим аналогичную настройку для параметра КонецПериода.

В результате на форме отчета сформируются два независимых поля ввода даты и времени, в которых пользователь сможет интерактивно задавать время с точностью до секунды.

Особенности передачи параметров в виртуальные таблицы

Рассмотрим нюанс передачи точного времени в виртуальные таблицы регистров накопления и сведений (например, ОстаткиИОбороты). При передаче даты со временем в СКД граница интервала применяется строго по значению указанной секунды.

Если для параметра КонецПериода пользователь выбирает значение 31.01.2026 15:30:00, в отчет попадут движения ровно до этой секунды включительно. Дополнительных преобразований типа Граница в тексте запроса СКД делать не требуется — платформа корректно отрабатывает переданные значения даты и времени.

← На главную