Как вывести в шапке отчета СКД только часть параметров?

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

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

Разберем по шагам доступные способы решения этой задачи — от простейших настроек в схеме компоновки до гибкого управления через собственные макеты и код.

Способ 1. Установка флага «Ограничение доступности»

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

  1. Откроем схему компоновки данных и перейдем на вкладку Параметры.
  2. Найдем в таблице параметр, который не должен появляться в шапке сформированного отчета.
  3. Установим флаг в колонке Ограничение доступности.

После включения этого флага СКД перестает выводить данный параметр в область параметров шапки. Однако важно учитывать ключевое ограничение: параметр становится полностью недоступен для интерактивного редактирования конечным пользователем в форме отчета.

Нюанс с признаком «Использовать»

Иногда возникает идея просто отключить свойство Использовать (установить значение Ложь) для ненужного параметра в компоновщике настроек. Разберем, почему этот вариант часто приводит к ошибкам.

Признак Использовать = Ложь полностью отключает передачу параметра в исполняемый запрос компоновки. Если в тексте запроса СКД параметр был обернут в синтаксические фигурные скобки условий (например, конструкции вида {ГДЕ Поле = &Параметр}), условие просто исключается из текста запроса. Если же параметр прописан в тексте запроса жестко и без фигурных скобок, платформа 1С выдаст ошибку о неинициализированном параметре. Поэтому отключать признак использования ради скрытия из шапки нельзя.

Способ 2. Создание собственного макета параметров

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

  1. В схеме компоновки данных перейдем на вкладку Макеты.
  2. Нажмем кнопку Добавить и выберем пункт Добавить макет параметров.
  3. В открывшемся редакторе табличного документа нарисуем шапку нужного вида: объединим ячейки, зададим шрифты и границы.
  4. В ячейках, где должны выводиться нужные параметры, укажем в свойствах ячейки заполнение Параметр и введем точное имя параметра СКД (например, &Период или &Организация).
  5. Параметры, которые не должны отображаться в шапке, просто не добавляем в эту область.

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

Способ 3. Вывод параметров через заголовок отчета

Если требуется вывести всего один или два параметра (например, период формирования или название организации), можно полностью отключить вывод параметров и использовать блок заголовка:

  1. На вкладке Настройки перейдем в Другие настройки и для пункта Выводить параметры выберем значение Не выводить.
  2. В этой же панели для свойства Выводить заголовок выберем Выводить.
  3. Перейдем на вкладку Макеты и добавим Макет заголовка, где сформируем нужный текст с подстановкой значений параметров через шаблоны или выражения.

Способ 4. Программный вывод через событие «ПриКомпоновкеРезультата»

Посмотрим на пример, когда отчет формируется программно либо требуется максимальный контроль над структурой результирующего табличного документа. Разберем реализацию в модуле отчета:


Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)

	СтандартнаяОбработка = Ложь;

	// Отключаем вывод стандартной области параметров
	КомпоновщикНастроек.Настройки.ПараметрыВывода.УстановитьЗначениеПараметра(
		"ВыводитьПараметры", 
		ТипВыводаПараметровКомпоновкиДанных.НеВыводить
	);

	// Выводим шапку с нужными параметрами из вспомогательного макета
	МакетОтчета = ПолучитьМакет("МакетШапки");
	ОбластьШапка = МакетОтчета.ПолучитьОбласть("ШапкаПараметров");
	
	ЗначениеПериода = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Период").Значение;
	ОбластьШапка.Параметры.Период = ЗначениеПериода;
	
	ДокументРезультат.Вывести(ОбластьШапка);

	// Выполняем стандартную цепочку компоновки данных
	КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
	МакетКомпоновки = КомпоновщикМакета.Выполнить(
		СхемаКомпоновкиДанных, 
		КомпоновщикНастроек.ПолучитьНастройки(), 
		ДанныеРасшифровки
	);

	ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
	ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);

	ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
	ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
	ПроцессорВывода.Вывести(ПроцессорКомпоновки);

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

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

← На главную