При работе с Системой компоновки данных (СКД) разработчики часто сталкиваются с ситуацией, когда созданное правило условного оформления (например, подсветка ячеек цветным фоном) применяется не только к строкам с данными, но и к шапке таблицы. Проанализируем, почему возникает эта проблема и какими способами можно исключить заголовки из правил оформления.
По умолчанию условное оформление, заданное на верхнем уровне настройки отчета («Отчет»), автоматически распространяется на все элементы таблицы. Если условие оформления сформулировано обобщенно (например, проверка поля на равенство или неравенство нулю), платформа 1С может применить это правило и к ячейке заголовка, подсветив ее заданным цветом.
Для решения этой задачи существуют два основных подхода: штатная настройка области использования в СКД и программный сброс цвета ячеек после формирования табличного документа.
Разберем наиболее правильный способ решения проблемы через конструктор схемы компоновки данных без написания кода.
Также можно перенести правило условного оформления с верхнего уровня отчета непосредственно внутрь конкретной группировки (например, в группировку Детальные записи). В этом случае оформление физически не затронет заголовок всей таблицы.
Рассмотрим ситуативный вариант, когда оформление сбрасывается в коде обработки уже после того, как отчет сформирован в табличный документ. Для этого выполняется поиск ячейки с заголовком по тексту и принудительно изменяется цвет фона.
Посмотрим на пример реализации этого алгоритма:
цветФонаЯчеек = Новый Цвет(192, 188, 177);
результат.ТекущаяОбласть = результат.Область("R1C1");
ТекущаяОбласть = Неопределено;
Пока Истина Цикл
ТекущаяОбласть = Результат.НайтиТекст("Сумма продажи в руб.", ТекущаяОбласть, Результат.Область, Истина, Истина, Истина, Ложь);
Если ТекущаяОбласть = Неопределено Тогда
Прервать;
КонецЕсли;
Если ТекущаяОбласть.ЦветФона <> цветФонаЯчеек Тогда
ТекущаяОбласть.ЦветФона = цветФонаЯчеек;
КонецЕсли;
КонецЦикла;
В этом примере используются следующие объекты и методы платформы:
Цвет — определяет базовый цвет фона, который нужно вернуть заголовочной ячейке.НайтиТекст объекта ТабличныйДокумент — ищет текстовое вхождение названия колонки по всей области документа.ЦветФона — переопределяет текущее оформление найденной ячейки.Ограничения программного метода: Программный сброс цвета ячеек в сформированном табличном документе является обходным решением. Если название поля изменится пользователем или в настройках отчета, метод НайтиТекст не найдет нужные ячейки. По этой причине в штатных ситуациях всегда рекомендуется использовать настройку области использования в самом СКД.