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

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

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

Метод 1. Условное оформление на уровне отчета или группировки

Это самый быстрый и гибкий способ, который не требует рисования сложных макетов. Мы будем использовать механизм Условного оформления, который позволяет точечно воздействовать на элементы отчета. Рассмотрим этот процесс по шагам.

Перейдем на вкладку «Настройки» в схеме компоновки данных, а затем на вкладку «Условное оформление». Нам необходимо добавить новый элемент оформления:

  1. В колонке «Оформление» нажмем на кнопку выбора и найдем параметр Горизонтальное положение. Установим его значение в Центр.
  2. Теперь самое важное — вкладка Область использования. Чтобы центрирование применилось только к «шапке» отчета, а не к самим данным в строках, необходимо снять все галочки, кроме пункта В заголовке полей. Если этого не сделать, текст внутри колонок тоже выровняется по центру, что не всегда желательно (например, для числовых показателей).
  3. В поле «Оформляемые поля» выберем те поля или группы, заголовки которых мы хотим центрировать.

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

Метод 2. Использование системного поля «Уровень» для иерархических заголовков

Иногда задача усложняется: нужно центрировать заголовки только определенного уровня вложенности. Например, только заголовки верхнего уровня, оставляя детальные записи выровненными по левому краю. Выясним, как это сделать с помощью системных данных.

В настройках условного оформления на вкладке «Условие» мы можем использовать системное поле. Разберем пример настройки:

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

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

Метод 3. Центрирование «Групп выбранных полей»

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

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

Если стандартный механизм не справляется (например, при сложной вложенности групп), мы можем прибегнуть к настройке «Другие настройки» — «Расположение группировок». Изменение этого параметра на Отдельно или Вместе иногда помогает системе корректно интерпретировать иерархию заголовков для оформления.

Метод 4. Создание собственного макета оформления

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

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

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

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

Метод 5. Программная корректировка в модуле отчета

В некоторых случаях условия настолько динамичны, что настроить их в конструкторе невозможно. Тогда мы используем процедуру ПриКомпоновкеРезультата в модуле объекта отчета. Посмотрим на пример логики, которую можно реализовать:


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

Проанализируем программный подход: вместо того чтобы править уже выведенный документ, мы можем программно добавить элемент УсловноеОформление в КомпоновщикНастроек непосредственно перед формированием макета. Это сохранит высокую производительность отчета и позволит динамически управлять центрированием заголовков в зависимости от параметров, выбранных пользователем.

Подведем итог: для большинства задач центрирования достаточно Условного оформления с правильно настроенной областью использования (только заголовки). Если же требуется специфическое оформление для печати или экспорта со сложной структурой — используйте Макеты на соответствующей вкладке СКД.

← На главную