Как программно изменить цвет фона в отчете СКД?

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

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

Разберем основной подход к решению

Для управления внешним видом отчета программно, нам необходимо использовать обработчик ПриКомпоновкеРезультата в модуле объекта отчета. Этот метод позволяет перехватить готовый ТабличныйДокумент до того, как он будет выведен на экран пользователю.

Основная идея заключается в том, чтобы найти нужную область в сформированном табличном документе и изменить ее свойства оформления, такие как ЦветФона, ЦветТекста или параметры шрифта.

Реализация через обработку табличного документа

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


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

Работа с параметрами в шапке отчета

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

Давайте проанализируем алгоритм поиска и модификации:

  1. Инициируем поиск текстовой метки параметра (например, названия параметра).
  2. Получаем объект Область, соответствующую найденной ячейке.
  3. Применяем необходимые изменения к свойствам этой области.

Пример кода для поиска и удаления (который легко адаптируется под изменение цвета):


Процедура СкрытьВспомогательныеПараметрыОтчета(СхемаКомпоновкиДанных, КомпоновщикНастроек, ТабличныйДокумент, ПараметрыОтчета) Экспорт
    Для Каждого ПараметрОтчета Из ПараметрыОтчета Цикл
        // Ищем область, содержащую текст параметра
        НайденнаяОбласть = ТабличныйДокумент.НайтиТекст(СкрываемыйПараметрОтчета);
        
        Если НайденнаяОбласть <> Неопределено Тогда
            // Вместо удаления мы можем обратиться к свойствам области:
            // НайденнаяОбласть.ЦветФона = WebЦвета.Серый;
            // Или использовать ЦветаСтиля для лучшей совместимости с темами оформления
            НайденнаяОбласть.ЦветФона = ЦветаСтиля.ФонУправляющегоЭлемента;
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры

Важные рекомендации при разработке

При программном изменении оформления табличного документа важно учитывать несколько аспектов:

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

← На главную