Помогите с ошибкой в программном оформлении ячейки табличной части документа

1. Sanario 26 24.04.17 11:26 Сейчас в теме
Пытаюсь оформить цвет фона ячейки табличной части документа в зависимости от значения. Вроде все сделал правильно, но не красится...

 &НаСервере
Процедура ОформлениеТЧ()	
	ДанныеФормы = ЭтаФорма.Объект.Товары;
	
	Для Каждого Строка из ДанныеФормы Цикл
		
		СправочныйЦветФонаЯчейкиВ_ТЧ = ЦветНаСервере(Строка.Номенклатура);
		Стр = СтрЗаменить(СправочныйЦветФонаЯчейкиВ_ТЧ,",",Символы.ПС);
		
		Если ЗначениеЗаполнено(СправочныйЦветФонаЯчейкиВ_ТЧ) Тогда
			ЦветЯчейкиВ_ТЧ = "";
			X = Число(СтрПолучитьСтроку(Стр,1));
			Y = Число(СтрПолучитьСтроку(Стр,2));
			Z = Число(СтрПолучитьСтроку(Стр,3));
			
			ЦветЯчейкиВ_ТЧ   = Новый Цвет(X,Y,Z);
			//Элемент.ЦветФона = ЦветЯчейкиВ_ТЧ;
			
			ЭлементУсловногоОформления   = УсловноеОформление.Элементы.Добавить();
			ОформляемоеПоле              = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
			ОформляемоеПоле.Поле         = Новый ПолеКомпоновкиДанных("Номенклатура");
			ОформляемоеПоле.Использование = Истина;

			ЭлементОтбора                = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
			ЭлементОтбора.ЛевоеЗначение  = Новый ПолеКомпоновкиДанных("Объект.Товары.Номенклатура");
			ЭлементОтбора.ВидСравнения   = ВидСравненияКомпоновкиДанных.Равно;
			ЭлементОтбора.ПравоеЗначение = Строка.Номенклатура;
			ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", ЦветЯчейкиВ_ТЧ);
			
		КонецЕсли;
	КонецЦикла;
	
КонецПроцедуры
Показать


Проверял - Цвет фона вытаскивается, подставляется, но не красит. Сильно не пинайте - в УФ еще недавно
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
7. chock23 2 24.04.17 14:16 Сейчас в теме
2. Sanario 26 24.04.17 13:14 Сейчас в теме
3. корум 287 24.04.17 13:37 Сейчас в теме
ОбновитьДанныеФормы() вроде должно быть?
alex-l19041; +1 Ответить
5. Sanario 26 24.04.17 13:53 Сейчас в теме
(3). Не то(
(4). Счас попробую
4. iksanow1988 2 24.04.17 13:44 Сейчас в теме
ЭлементУО = ЭтаФорма.УсловноеОформление.Элементы.Добавить();
		ОформлениеЦветФона = ЭлементУО.Оформление.Элементы.Найти("ЦветТекста");
		Если ОформлениеЦветФона <> Неопределено Тогда
			ОформлениеЦветФона.Использование = Истина;
			ОформлениеЦветФона.Значение = Новый Цвет(100, 90, 0);
		КонецЕсли;
6. Sanario 26 24.04.17 13:56 Сейчас в теме
(4) Не помогло. Почему не могу понять. И кстати почему ЦветТекста?
ОформлениеЦветФона = ЭлементУО.Оформление.Элементы.Найти("ЦветТекста"); 
8. iksanow1988 2 24.04.17 15:14 Сейчас в теме
Перед циклом попробуй :

ДокументОбъект = ДанныеФормыВЗначение(Объект, Тип("ДокументОбъект.СчетФактураВыданный"));

ДанныеФормы = ДокументОбъект.Метаданные().ТабличныеЧасти[ИмяТЧ].Реквизиты;
9. iksanow1988 2 24.04.17 15:17 Сейчас в теме
А, ну и в активной строке - это не работает..
10. iksanow1988 2 24.04.17 15:38 Сейчас в теме
Ну и замени
ОформлениеЦветФона = ЭлементУО.Оформление.Элементы.Найти("ЦветТекста");
на
ОформлениеЦветФона = ЭлементУО.Оформление.Элементы.Найти("ЦветФона");
11. Sanario 26 24.04.17 15:45 Сейчас в теме
(10) :) это я поменял.
А данные формы я выше переопределил
ДанныеФормы = ЭтаФорма.Объект.Товары;
12. iksanow1988 2 24.04.17 15:53 Сейчас в теме
ЭтаФорма.Объект у тебя тип - ДанныеФормыСтруктура
А тебе нужно Получить тип "ДокументОбъект"
Замени Просто свои ДанныеФормы на мои, и наслаждайся результатом.
13. config 189 24.04.17 16:02 Сейчас в теме
Ведь даже кодить не надо
https://its.1c.ru/db/metod8dev/content/3551/hdoc
Но в отличие от динамического списка, где настройка списка доступна и в пользовательском режиме, сделать это можно только в режиме конфигуратора или из встроенного языка. Для этого нужно использовать свойство УсловноеОформление формы.
iksanow1988; +1 Ответить
15. iksanow1988 2 24.04.17 16:06 Сейчас в теме
(13)Тут речь о реквизитах ТЧ, насколько я понял, и в зависимости от различных условий свой цвет.
20. Sanario 26 24.04.17 17:11 Сейчас в теме
(13) Читалось. Использовалось при несложных условиях)
21. iksanow1988 2 24.04.17 17:17 Сейчас в теме
(20) Скинь функцию, где у тебя цвета для номенклатуры определяются.
14. igo1 267 24.04.17 16:05 Сейчас в теме
Если форма управляемая, то это делается через раздел "Условное оформление" в настройках формы.
17. Sanario 26 24.04.17 16:55 Сейчас в теме
(14) Это не при сложных условиях. И их я настроил. А вот прочее оформление - берется из значений дополнительных реквизитов справочника номенклатуры. Так заказчику захотелось покрасить строки
16. iksanow1988 2 24.04.17 16:08 Сейчас в теме
Хотя если условия не сложные, то согласен с предыдущими комментаторами.
18. iksanow1988 2 24.04.17 16:59 Сейчас в теме
Ну тогда только программно. Пробовал мой код?
19. Sanario 26 24.04.17 17:10 Сейчас в теме
Да. Не могу понять, но что-то не срабатывает(
22. Sanario 26 24.04.17 17:23 Сейчас в теме
&НаСервере
Функция ЦветНаСервере(НоменНаим)
	МассивРеквизитов = Новый Массив;
	Номен            = Справочники.Номенклатура.НайтиПоНаименованию(НоменНаим);
	МассивРеквизитов.Добавить(ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Цвет группы (Справочник ""Номенклатура"" (Общие))"));
	ТЗРекв = УправлениеСвойствами.ПолучитьЗначенияСвойств(Номен,Истина,Ложь,МассивРеквизитов);
	Возврат ?(ТЗРекв.Количество()>0,ТЗРекв[0].Значение,"");
КонецФункции
Показать
23. ipoloskov 162 24.04.17 17:27 Сейчас в теме
В цикле не надо делать. У вас последняя итерация все затирает.
Вот рабочий пример, разбирайтесь

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	УстановитьУсловноеОформление();
	
КонецПроцедуры

&НаСервере
Процедура УстановитьУсловноеОформление()
	
	Проверено = Истина;
	Брак = Истина;
	
	УстановитьУсловноеОформлениеСтрок(Проверено, НЕ Брак, WebЦвета.СветлоЗеленый);
	УстановитьУсловноеОформлениеСтрок(Проверено, Брак, WebЦвета.СветлоРозовый);
	
	//ранее были указаны как бракованные и попали в этот документ
	УстановитьУсловноеОформлениеСтрок(НЕ Проверено, Брак, WebЦвета.СветлоГрифельноСерый); 
	
КонецПроцедуры

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

Показать
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот