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