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

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

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

Способ 1: Использование групп в выбранных полях

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

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

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

Способ 2: Программная группировка в модуле отчета

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

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

Посмотрим на пример базового кода для группировки:


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

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

Способ 3: Использование макетов оформления

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

Разберем этот процесс:

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

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

Способ 4: Настройка «Расположение полей группировок»

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

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

Способ 5: Условное оформление для имитации единства

Проанализируем ситуацию, когда нам нужно просто визуально выделить группу колонок. Мы можем использовать Условное оформление:

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

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

← На главную