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

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

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

Выясним причину особенностей работы динамических колонок в СКД

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

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

Способ 1. Настройка групп на вкладке «Выбранные поля»

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

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

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

Способ 2. Вертикальное расположение ресурсов в настройках отчета

Если отчет содержит несколько показателей (ресурсов) и необходимо, чтобы они отображались не отдельными колонками по горизонтали, а вертикальным списком внутри каждой динамической колонки, проанализируем параметр Расположение ресурсов:

  1. В настройках структуры СКД перейдем на вкладку «Другие настройки».
  2. Найдем параметр Расположение ресурсов.
  3. Изменим его значение со стандартного Авто на Вертикально.

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

Способ 3. Оптимизация структуры отчета (перенос группировок)

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

  1. Перенесем аналитические разрезы с нефиксированным количеством значений (подразделения, типы договоров, сотрудники) из «Колонок» в «Строки» таблицы.
  2. В измерении «Колонки» оставим только временные периоды (например, Месяц или Квартал).
  3. В результате получим наглядную иерархическую структуру по строкам с компактной динамической сеткой по периодам в колонках. Уровни иерархии в строках пользователь сможет легко сворачивать и разворачивать.

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

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

Разберем алгоритм выполнения постобработки:

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

Посмотрим на пример кода, выполняющего объединение ячеек в шапке сформированного табличного документа:


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

// Программный обход и объединение ячеек шапки
РезультатТабДок.Область(2, 3, 2, 5).Объединить(); // Объединение колонок по горизонтали
РезультатТабДок.Область(2, 3, 4, 3).Объединить(); // Объединение ячеек по вертикали

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

← На главную