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