Как настроить заголовки и иерархию группировок колонок в СКД

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

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

Метод 1: Использование макетов для оформления заголовков

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

Разберем по шагам процесс создания такого макета:

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

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

Метод 2: Управление расположением группировок в настройках

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

Разберем настройки расположения полей:

В конструкторе СКД на вкладке Настройки выберем нужный вариант отчета. Перейдем на вложенную вкладку Другие настройки. Здесь нас интересуют следующие параметры:

Чтобы «Организация» оказалась над «Периодом», в дереве настроек на вкладке Настройки мы должны создать вложенную структуру: сначала группировка колонок по полю Организация, а внутри нее — группировка по полю Период. В этом случае 1С автоматически сформирует иерархическую шапку, где название организации будет объединять колонки с датами, относящимися к этой организации.

Метод 3: Группировка выбранных полей

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

Выполним следующие действия:

  1. Перейдем на вкладку Выбранные поля в настройках отчета.
  2. Нажмем правой кнопкой мыши и выберем Новая группа выбранных полей.
  3. В поле Заголовок введем текст, который должен отображаться в верхней ячейке (например, «Итоговые показатели»).
  4. В параметре Расположение выберем Горизонтально.
  5. Перетащим мышкой поля Сумма и Количество внутрь созданной группы.

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

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

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

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

Разберем пример кода:


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

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

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

Метод 5: Использование условного оформления для заголовков

Иногда задача стоит не в объединении, а в изменении текста заголовка в зависимости от условий (например, если в параметрах выбрана одна валюта, заголовок должен быть «Сумма (руб)», если другая — «Сумма (usd)»).

Проанализируем, как это реализовать через Условное оформление:

  1. В настройках СКД перейдем на вкладку Условное оформление.
  2. Добавим новый элемент оформления.
  3. В поле Оформление выберем свойство Текст и укажем нужное значение.
  4. В поле Условие пропишем логику (например, ЗначениеПараметра.Валюта = Справочники.Валюты.НайтиПоКоду("643")).
  5. В поле Оформляемые поля выберем именно то поле, заголовок которого мы хотим изменить.
  6. Важный нюанс: Чтобы изменился именно заголовок, а не значения в колонках, в области использования оформления необходимо оставить флажок только на пункте В заголовке поля.

Советы по работе с колонками «Итого»

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

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

← На главную