Каталог решений - Раскраска заголовков вертикальных ресурсов в СКД

Раскраска заголовков вертикальных ресурсов в СКД

Раскраска заголовков вертикальных ресурсов в СКД

В наличии

Как покрасить заголовки ресурсов, расположенных вертикально? Предложенный вариант решает эту проблему

Категория:

Описание

 

Когда мне поручили создать отчет, в котором виды выплат по каждому сотруднику будут располагаться вертикально, а периоды (месяцы) горизонтально, то проблема решилась достаточно быстро длягодаря Infostart и серому веществу ;).

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

Но всё решилось банально просто — постобработкой табличного документа. Вначале формируется документ на основе СКД, а потом меняется цвет нужных ячеек по их содержимому. Можно задавать оригинальное форматирование, а можно брать из соседней правой ячейки с ресурсом.

 


    ДокументРезультат=ЭлементыФормы.Результат;
   
ПроцессорВывода=Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
   
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
   
ПроцессорВывода.НачатьВывод();
    Пока Истина Цикл
       
ЭлементРезультата=ПроцессорКомпоновки.Следующий();
        Если
ЭлементРезультата=Неопределено Тогда
            Прервать;
        Иначе
           
ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
        КонецЕсли;
    КонецЦикла;
   
ПроцессорВывода.ЗакончитьВывод();

    МассивЦвета = Новый Массив();
   
МассивЦвета.Добавить(«Уровень начисленный»);
   
МассивЦвета.Добавить(«Всего нач с учетом компенсаций»);
   
МассивЦвета.Добавить(«Всего начислено»);
   
МассивЦвета.Добавить(«Уровень на руки»);
   
МассивЦвета.Добавить(«На руки с учетом компенсаций»);
   
МассивЦвета.Добавить(«На руки со всех видов начислений»);
   
МассивЦвета.Добавить(«НДФЛ со всех видов начислений»);

    Для каждого Элемент Из МассивЦвета Цикл
       
НайденнаяОбласть = ДокументРезультат.НайтиТекст(Элемент);
        Пока
НайденнаяОбласть <> Неопределено Цикл
           
СоседняяЯчейка = ДокументРезультат.Область(НайденнаяОбласть.Верх, НайденнаяОбласть.Право + 1, НайденнаяОбласть.Низ, НайденнаяОбласть.Право + 1);
           
НайденнаяОбласть.ЦветФона = СоседняяЯчейка.ЦветФона; //Цвет;
           
НайденнаяОбласть.Шрифт = СоседняяЯчейка.Шрифт; //Цвет;
           
НайденнаяОбласть = ДокументРезультат.НайтиТекст(Элемент, НайденнаяОбласть);
        КонецЦикла;

    КонецЦикла;


 

Приведенный код требует правки каждый раз, когда меняется наименование заголовка ресурса в СКД.

Если у кого-то данная задача имеет более изящное решение, буду рад увидеть Ваш вариант.

has been added to your cart:
Оформление заказа