Почему отбор по дате в отчете СКД отображается как флажок и как вернуть поле выбора значения

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

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

Причина 1: Заполнение колонки «Представление» непосредственно в таблице отборов

Проанализируем базовый механизм работы пользовательских настроек в СКД. Платформа разделяет понятия именования элемента пользовательской настройки и фиксированного фильтра:

  1. Если разработчик заполняет колонку «Представление» прямо в строке отбора на вкладке «Настройки», платформа 1С считает такой отбор фиксированным. В этом случае предполагается, что вид сравнения и значение уже жестко заданы, а пользователю дается только возможность включить или отключить данный критерий. Именно поэтому на форму выводится только флажок с указанным текстом.
  2. Если же пользователю необходимо дать возможность менять саму дату или период, колонка «Представление» в общей таблице отборов должна оставаться совершенно пустой.

Разберем по шагам, как правильно задать понятный заголовок для отбора, не ломая поле ввода даты:

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

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

Причина 2: Выбранный вид сравнения

Выясним еще одну распространенную причину подобного поведения. Если для поля даты по ошибке выбран вид сравнения, не предполагающий правого значения (например, «Заполнено» или «Не заполнено»), система автоматически скрывает поле ввода значения. Для корректного ввода даты вид сравнения должен требовать значение: Равно, Больше или равно, Меньше или равно или Интервал.

Причина 3: Кэширование настроек в режиме «1С:Предприятие»

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

Альтернативное решение: Отбор через параметры данных и тип «СтандартныйПериод»

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

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

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

Управление параметрами через собственную форму отчета

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


ПарамНачалоПериода = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("НачалоПериода");
Если ПарамНачалоПериода <> Неопределено Тогда
    ПарамНачалоПериода.Использование = Истина;
    ПарамНачалоПериода.Значение = НачалоПериода;
КонецЕсли;

ПарамКонецПериода = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("КонецПериода");
Если ПарамКонецПериода <> Неопределено Тогда
    ПарамКонецПериода.Использование = Истина;
    ПарамКонецПериода.Значение = КонецПериода;
КонецЕсли;

Таким образом, для быстрого решения проблемы с отображением даты достаточно очистить колонку «Представление» в таблице отборов на вкладке «Настройки» и перенести наименование отбора в окно «Свойства элемента пользовательских настроек», либо перевести фильтрацию на использование параметров данных СКД.

← На главную