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

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

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

Основы настройки группировок в таблице СКД

Первым делом необходимо правильно настроить структуру отчета. Для вывода группировок в колонках используйте элемент Таблица в настройках отчета.

  1. Перейдите на вкладку Настройки в схеме компоновки данных — для этой задачи есть консоль СКД для отладки компоновки и макетов.
  2. Добавьте элемент Таблица.
  3. В поле Строки добавьте нужные измерения (например, Номенклатура или Клиент).
  4. В поле Колонки добавьте поля, по которым требуется группировка. Чтобы добиться иерархии, сначала перетащите поле Группа для отчетов, а следом под него вложите поле Подразделение.

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

Ограничения стандартного вывода

Стандартный механизм СКД выводит иерархию колонок «ступеньками». Это означает, что если у вас есть «Группа1» и в ней несколько «Подразделений», СКД всегда будет выводить их как отдельные блоки. Платформа 1С не имеет встроенной «галочки» для автоматического объединения ячеек заголовка, как это реализовано в табличных процессорах. Если вам необходимо, чтобы заголовок группы растягивался на все подчиненные подразделения, стандартных настроек компоновки будет недостаточно.

Решение задачи через постобработку результата

Чтобы добиться визуального объединения ячеек в шапке отчета, необходимо прибегнуть к программной постобработке результата компоновки. Этот процесс выполняется в модуле отчета в событии ПриКомпоновкеРезультата — для этого пригодится инструмент отладки кода 1С в режиме Предприятие.

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

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

Для реализации объединения выполните следующие шаги:

  1. В обработчике события ПриКомпоновкеРезультата получите итоговый ТабличныйДокумент.
  2. Инициируйте цикл по областям ячеек, которые формируют вашу шапку.
  3. Используйте метод Объединить() объекта ТабличныйДокумент для склеивания ячеек, имеющих одинаковое значение в поле «Группа для отчетов».

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


// Пример логики обработки табличного документа
Для НомерСтроки = 1 По ТабДок.ВысотаТаблицы Цикл
    Для НомерКолонки = 1 По ТабДок.ШиринаТаблицы Цикл
        Область = ТабДок.Область(НомерСтроки, НомерКолонки);
        // Здесь выполняется проверка значения ячейки
        // и сравнение с соседней ячейкой по горизонтали
        Если ЗначениеСовпадает(Область, СоседняяОбласть) Тогда
            ТабДок.Объединить(ОбластьИСоседняя);
        КонецЕсли;
    КонецЦикла;
КонецЦикла;

Альтернативный подход: Макеты оформления

Если структура отчета является статической и количество групп известно заранее, можно использовать Макеты оформления. Вы можете создать макет для конкретной группировки в СКД.

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

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

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

← На главную