Как в СКД убрать вывод шапки выбранного поля и заголовков группировок

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

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

Почему стандартная настройка «Выводить заголовок» не убирает шапку колонок

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

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

Способ 1. Использование собственного макета заголовка группировки

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

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

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

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

Способ 2. Скрытие текста заголовка через автозаголовок поля

Если требуется оставить высоту строки или структуру таблицы неизменной, но при этом убрать отображение названия конкретного поля или ресурса, применим прием с переопределением автозаголовка:

  1. Перейдем на вкладку Наборы данных схемы компоновки данных.
  2. В списке полей набора найдем нужное поле и установим флаг Автозаголовок.
  3. Вместо пустого значения (которое платформа расценивает как признак формирования системного названия) введем одиночный пробел " ".

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

Способ 3. Отключение вывода итогов и заголовка «Итого»

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

  1. В настройках отчета на вкладке Другие настройки найдем параметр Расположение общих итогов по горизонтали и установим значение Нет (это полностью скроет итоговые колонки справа).
  2. Параметр Расположение общих итогов по вертикали установим в значение Нет, чтобы исключить вывод нижней итоговой строки.
  3. Параметр Расположение итогов установим в значение Нет, если необходимо отключить промежуточные итоги по уровням группировок.

Способ 4. Изменение цвета оформления шапки на белый

Если шапка все же генерируется, но нужно визуально скрыть ее фон и границы, настроим оформление:

  1. На уровне нужной группировки в разделе Другие настройки для параметра Макет оформления выберем вариант Без оформления. Это уберет стандартную раскраску строк и ячеек заголовков.
  2. На вкладке Условное оформление добавим новое правило: зададим Цвет фона = Белый и Цвет текста = Белый, а в списке Оформляемые поля укажем поля, шапку которых необходимо сделать невидимой.

Способ 5. Программный пропуск вывода заголовков при компоновке

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


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

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

← На главную