Как сделать шапку таблицы в отчете СКД в одну строку

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

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

Причины формирования многоуровневой шапки

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

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

Вариант 1. Настройка параметров компоновки данных

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

  1. Расположение заголовков группировок: Перейдем на вкладку «Другие настройки» (для отчета в целом или для конкретной группировки) и установим значение параметра Расположение заголовков группировок в положение «Нет». Это отключит вывод верхнего уровня ячеек с названием группировки.
  2. Расположение полей группировки: Изменим значение настройки Расположение полей группировки на «Вместе». Это объединит наименования полей и их заголовки, убрав дублирование уровней по вертикали.
  3. Расположение ресурсов: В окне «Другие настройки» установим параметр Расположение ресурсов в значение «Горизонтально», чтобы ресурсы выводились в одной строке последовательно.
  4. Группировка полей на вкладке «Выбранные поля»: Выделим нужные поля и ресурсы, вызовем контекстное меню и выберем пункт «Сгруппировать поля...». В свойствах созданной группы оставим заголовок пустым и зададим тип расположения «Вместе» или «В отдельной колонке».

Вариант 2. Использование пользовательских макетов СКД

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

  1. В конструкторе схемы компоновки данных перейдем на вкладку «Макеты».
  2. Добавим «Макет заголовка группировки» или «Макет группировки» для нужного поля.
  3. Оформим область ячеек высотой ровно в одну строку и укажем заполнение параметров.
  4. Свяжем созданную область с группировкой или полем. Вывод самих данных и расчет итогов продолжит выполняться автоматически.

Вариант 3. Программная обработка табличного документа

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


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

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

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

← На главную