Помогите с ошибкой в программном оформлении ячейки табличной части документа
Пытаюсь оформить цвет фона ячейки табличной части документа в зависимости от значения. Вроде все сделал правильно, но не красится...
Проверял - Цвет фона вытаскивается, подставляется, но не красит. Сильно не пинайте - в УФ еще недавно
&НаСервере
Процедура ОформлениеТЧ()
ДанныеФормы = ЭтаФорма.Объект.Товары;
Для Каждого Строка из ДанныеФормы Цикл
СправочныйЦветФонаЯчейкиВ_ТЧ = ЦветНаСервере(Строка.Номенклатура);
Стр = СтрЗаменить(СправочныйЦветФонаЯчейкиВ_ТЧ,",",Символы.ПС);
Если ЗначениеЗаполнено(СправочныйЦветФонаЯчейкиВ_ТЧ) Тогда
ЦветЯчейкиВ_ТЧ = "";
X = Число(СтрПолучитьСтроку(Стр,1));
Y = Число(СтрПолучитьСтроку(Стр,2));
Z = Число(СтрПолучитьСтроку(Стр,3));
ЦветЯчейкиВ_ТЧ = Новый Цвет(X,Y,Z);
//Элемент.ЦветФона = ЦветЯчейкиВ_ТЧ;
ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
ОформляемоеПоле = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("Номенклатура");
ОформляемоеПоле.Использование = Истина;
ЭлементОтбора = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Номенклатура");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = Строка.Номенклатура;
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", ЦветЯчейкиВ_ТЧ);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
ПоказатьПроверял - Цвет фона вытаскивается, подставляется, но не красит. Сильно не пинайте - в УФ еще недавно
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
ЭлементУО = ЭтаФорма.УсловноеОформление.Элементы.Добавить();
ОформлениеЦветФона = ЭлементУО.Оформление.Элементы.Найти("ЦветТекста");
Если ОформлениеЦветФона <> Неопределено Тогда
ОформлениеЦветФона.Использование = Истина;
ОформлениеЦветФона.Значение = Новый Цвет(100, 90, 0);
КонецЕсли;
Ведь даже кодить не надо
https://its.1c.ru/db/metod8dev/content/3551/hdoc
Но в отличие от динамического списка, где настройка списка доступна и в пользовательском режиме, сделать это можно только в режиме конфигуратора или из встроенного языка. Для этого нужно использовать свойство УсловноеОформление формы.
&НаСервере
Функция ЦветНаСервере(НоменНаим)
МассивРеквизитов = Новый Массив;
Номен = Справочники.Номенклатура.НайтиПоНаименованию(НоменНаим);
МассивРеквизитов.Добавить(ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Цвет группы (Справочник ""Номенклатура"" (Общие))"));
ТЗРекв = УправлениеСвойствами.ПолучитьЗначенияСвойств(Номен,Истина,Ложь,МассивРеквизитов);
Возврат ?(ТЗРекв.Количество()>0,ТЗРекв[0].Значение,"");
КонецФункции
Показать
В цикле не надо делать. У вас последняя итерация все затирает.
Вот рабочий пример, разбирайтесь
Вот рабочий пример, разбирайтесь
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
УстановитьУсловноеОформление();
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформление()
Проверено = Истина;
Брак = Истина;
УстановитьУсловноеОформлениеСтрок(Проверено, НЕ Брак, WebЦвета.СветлоЗеленый);
УстановитьУсловноеОформлениеСтрок(Проверено, Брак, WebЦвета.СветлоРозовый);
//ранее были указаны как бракованные и попали в этот документ
УстановитьУсловноеОформлениеСтрок(НЕ Проверено, Брак, WebЦвета.СветлоГрифельноСерый);
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформлениеСтрок(Проверено, Брак, ЦветФона)
ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
ЭлементУсловногоОформления.Использование = Истина;
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", ЦветФона);
ЭлементОтбора = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Состав.Проверено");
ЭлементОтбора.ПравоеЗначение = Проверено;
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.Использование = Истина;
ЭлементОтбора = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Состав.Брак");
ЭлементОтбора.ПравоеЗначение = Брак;
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.Использование = Истина;
Для Каждого Элемент Из Элементы.Состав.ПодчиненныеЭлементы Цикл
ОформляемоеПоле = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных(Элемент.Имя);
ОформляемоеПоле.Использование = Истина;
КонецЦикла;
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот