Как вывести параметр запроса СКД на управляемую форму отчета в 1С?

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

При разработке отчетов на базе Схемы компоновки данных (СКД) в платформе 1С:Предприятие 8.3 одной из самых частых задач является предоставление пользователю возможности интерактивно выбирать параметры фильтрации данных (например, период отчета, организацию, склад или контрагента). По умолчанию параметры, объявленные в тексте запроса СКД (через символ &), скрыты от пользователя или доступны только в глубоких настройках отчета. Рассмотрим подробно, как вывести эти параметры непосредственно на управляемую форму отчета для быстрого и удобного заполнения.

Способ 1. Вывод параметров через «Пользовательские настройки» (Стандартный механизм)

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

Разберем по шагам, как это настроить в конфигураторе:

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

Теперь при запуске отчета в режиме «1С:Предприятие» платформа автоматически создаст поле ввода для этого параметра в верхней части формы отчета.

Способ 2. Объединение дат начала и окончания в единый параметр «Период»

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

Проанализируем ситуацию и настроим связь двух параметров через один вспомогательный:

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

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

Способ 3. Управление порядком и группировкой параметров

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

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

Способ 4. Вывод параметров на собственную (произвольную) форму отчета

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

Вариант А. Размещение стандартной панели пользовательских настроек

Мы можем перетащить на созданную форму элемент управления, связанный с настройками компоновщика. Для этого выполним следующие действия:

  1. Откроем редактор управляемой формы отчета.
  2. В дереве реквизитов формы найдем путь: Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.
  3. Перетащим этот объект в область элементов формы.

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

Вариант Б. Программная передача значений из реквизитов формы

Если дизайн формы требует жесткого размещения конкретных реквизитов (например, поле «Организация» должно быть строго в определенном месте экрана, рядом с декорациями или кнопками), мы можем создать обычные реквизиты формы и связать их с параметрами СКД программно.

Разберем пример реализации этого подхода:

  1. Создадим на управляемой форме реквизит (например, ОрганизацияНаФорме с типом ссылки на справочник Организации) и выведем его на форму.
  2. В модуле объекта отчета в обработчике события ПриКомпоновкеРезультата (или в модуле формы перед формированием отчета) пропишем код для программной установки параметров схемы.

Рассмотрим пример программного заполнения параметров в коде 1С:


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

КонецПроцедуры

Типичные ошибки при выводе параметров

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

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

← На главную