Почему не применяется условное оформление к шапке таблицы в СКД и как это исправить?

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

При разработке отчетов на базе системы компоновки данных (СКД) разработчики часто сталкиваются с ситуацией, когда стандартное условное оформление с областью применения «В заголовке полей» корректно меняет шрифт или фон шапки в одних конфигурациях (например, на базе современных версий БСП), но полностью игнорируется в устаревших конфигурациях (таких как УПП 1.2 или УПП 1.3), несмотря на запуск на современной версии платформы 1С:Предприятие 8.3.

Разберем подробно причины такого поведения платформы и проанализируем основные способы настройки внешнего вида шапки таблицы.

Выясним причину проблемы: влияние режима совместимости

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

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

Рассмотрим рабочие способы решения данной задачи в условиях режима совместимости.

Способ 1. Использование макета поля или заголовка в СКД

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

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

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

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

Если требуется применить единый стиль ко всем заголовкам отчета, эффективным решением будет создание собственного макета оформления:

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

Способ 3. Отключение стандартного макета оформления

Иногда перекрытие стилей происходит из-за наложения встроенного макета оформления 1С. Проверим следующий вариант:

  1. Перейдем на вкладку «Настройки» в СКД.
  2. На вкладке «Другие настройки» найдем параметр «Макет оформления».
  3. Установим значение «Без оформления».

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

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

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


// Создаем объекты для компоновки данных
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.ПолучитьНастройки());

ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);

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

// Программное оформление шапки отчета
// Предположим, что заголовок находится во 2-й строке
ОбластьШапки = ТабличныйДокумент.Область("R2");
ОбластьШапки.Шрифт = Новый Шрифт(ОбластьШапки.Шрифт,,, Истина); // Устанавливаем жирный шрифт

Как задать пользовательские заголовки для полей СКД

Если помимо оформления шрифта требуется изменить стандартные наименования колонок (чтобы выводились пользовательские названия вместо системных имен полей базы данных), выполним следующие действия:

  1. Откроем СКД на вкладке «Наборы данных».
  2. В таблице полей найдем нужное поле и в колонке «Заголовок» укажем требуемое представление.
  3. Если заголовок нужно переопределить только в рамках конкретной настройки отчета, перейдем на вкладку «Настройки» -> «Выбранные поля», откроем свойства выбранного поля и заполним поле «Заголовок».
← На главную