Как объединить или сгруппировать заголовки колонок в отчетах СКД?

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

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

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

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

  1. Перейдите на вкладку Макеты в настройках отчета СКД.
  2. Выберите Макет группировки.
  3. Укажите группировку, для которой вы хотите создать кастомный заголовок.
  4. В открывшемся дизайнере ТабличногоДокумента отрисуйте нужные ячейки, объедините их и впишите необходимые заголовки.

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

Постобработка табличного документа

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

Рассмотрим пример логики такой обработки:


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

Использование метода Объединить() для ячеек ТабличногоДокумента позволяет добиться идеального визуального соответствия требованиям, но требует от программиста дополнительных трудозатрат на написание кода обхода областей.

Хитрости скрытия лишних заголовков

Иногда достаточно просто избавиться от лишнего текста «Сумма», который дублируется в каждой колонке ресурсов. Для этого можно применить несколько приемов:

Подводя итоги

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

  1. Сначала попробуйте скрыть лишние заголовки с помощью пробелов или условного оформления — это самый быстрый путь.
  2. Если это не помогает, используйте Макеты группировки для фиксированных отчетов.
  3. В сложных динамических случаях используйте ТабличныйДокумент и его методы объединения ячеек после вывода результата компоновки.

Помните, что борьба за идеальную визуализацию в СКД может занять значительно больше времени, чем создание отчета «с нуля» на основе ТабличногоДокумента, если требования к внешнему виду критически сложны.

← На главную