При разработке отчетов на базе системы компоновки данных (СКД) разработчики часто сталкиваются с неожиданным поведением интерфейса: после вывода отбора по дате в пользовательские настройки («Быстрый доступ») на форме отчета появляется только флажок включения отбора, а само поле ввода даты отсутствует. В результате пользователь может лишь включить или выключить заранее зафиксированное значение, но не может изменить саму дату. Разберем по шагам, почему платформа 1С ведет себя таким образом, и рассмотрим правильные варианты настройки отборов и параметров.
Проанализируем базовый механизм работы пользовательских настроек в СКД. Платформа разделяет понятия именования элемента пользовательской настройки и фиксированного фильтра:
Разберем по шагам, как правильно задать понятный заголовок для отбора, не ломая поле ввода даты:
После этого платформа выведет в шапку отчета полноценный элемент: флажок активности, заданный заголовок, вид сравнения и доступное для редактирования поле выбора даты.
Выясним еще одну распространенную причину подобного поведения. Если для поля даты по ошибке выбран вид сравнения, не предполагающий правого значения (например, «Заполнено» или «Не заполнено»), система автоматически скрывает поле ввода значения. Для корректного ввода даты вид сравнения должен требовать значение: Равно, Больше или равно, Меньше или равно или Интервал.
Нередко разработчик исправляет схему компоновки в конфигураторе, запускает отчет в режиме пользователя, но видит старый интерфейс. Это связано с тем, что платформа автоматически сохраняет персональные настройки формы для каждого пользователя при закрытии отчета. Чтобы применить изменения схемы, выполним в режиме «1С:Предприятие» команду Еще — Стандартные настройки (или выберем заново основной вариант отчета).
Рассмотрим разницу между отборами и параметрами данных. Отбор накладывается на уже полученную выборку строк, тогда как параметры передаются непосредственно в текст запроса, что ускоряет выборку данных из базы. Для фильтрации по датам гораздо удобнее использовать параметры:
ПериодОтчета с типом СтандартныйПериод.&НачалоПериода и &КонецПериода укажем в колонке «Выражение» соответственно: &ПериодОтчета.ДатаНачала и &ПериодОтчета.ДатаОкончания, а также установим для них флаг «Ограничение доступности» (чтобы скрыть их от пользователя).ПериодОтчета, вызовем «Свойства элемента пользовательских настроек» и укажем режим «Быстрый доступ».При таком подходе пользователь получает стандартный, удобный диалог выбора интервала («Этот месяц», «Этот квартал», произвольный период), исключающий путаницу с отдельными датами.
Если проект требует создания отдельной управляемой формы отчета, связывать параметры можно как автоматически (добавив на форму стандартную таблицу пользовательских настроек компоновщика), так и программно через реквизиты формы. Рассмотрим программный способ передачи значений из реквизитов формы в настройки компоновщика:
ПарамНачалоПериода = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("НачалоПериода");
Если ПарамНачалоПериода <> Неопределено Тогда
ПарамНачалоПериода.Использование = Истина;
ПарамНачалоПериода.Значение = НачалоПериода;
КонецЕсли;
ПарамКонецПериода = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("КонецПериода");
Если ПарамКонецПериода <> Неопределено Тогда
ПарамКонецПериода.Использование = Истина;
ПарамКонецПериода.Значение = КонецПериода;
КонецЕсли;
Таким образом, для быстрого решения проблемы с отображением даты достаточно очистить колонку «Представление» в таблице отборов на вкладке «Настройки» и перенести наименование отбора в окно «Свойства элемента пользовательских настроек», либо перевести фильтрацию на использование параметров данных СКД.