Как убрать условное оформление в заголовке отчета СКД

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

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

Выясним причину подсвечивания заголовка

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

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

Способ 1. Настройка области использования условного оформления

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

  1. Откроем схему компоновки данных и перейдем на закладку Настройки.
  2. Выберем элемент условного оформления, который ошибочно окрашивает заголовок.
  3. В колонке или окне настройки элемента найдем параметр Область использования.
  4. Снимем флаги с пунктов В заголовке поля и В заголовке группировки.
  5. Оставим включенными только флаги В группировке и В иерархической группировке.

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

Способ 2. Программный сброс оформления ячеек заголовка

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

Посмотрим на пример реализации этого алгоритма:


цветФонаЯчеек = Новый Цвет(192, 188, 177); 
результат.ТекущаяОбласть = результат.Область("R1C1"); 
ТекущаяОбласть = Неопределено; 

Пока Истина Цикл 
    ТекущаяОбласть = Результат.НайтиТекст("Сумма продажи в руб.", ТекущаяОбласть, Результат.Область, Истина, Истина, Истина, Ложь); 
    Если ТекущаяОбласть = Неопределено Тогда 
        Прервать; 
    КонецЕсли; 
    
    Если ТекущаяОбласть.ЦветФона <> цветФонаЯчеек Тогда 
        ТекущаяОбласть.ЦветФона = цветФонаЯчеек; 
    КонецЕсли; 
КонецЦикла;

В этом примере используются следующие объекты и методы платформы:

  1. Объект Цвет — определяет базовый цвет фона, который нужно вернуть заголовочной ячейке.
  2. Метод НайтиТекст объекта ТабличныйДокумент — ищет текстовое вхождение названия колонки по всей области документа.
  3. Свойство ЦветФона — переопределяет текущее оформление найденной ячейки.

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

← На главную