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