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