Условное оформление из расширения

1. Ujine1313 9 24.11.20 19:31 Сейчас в теме
Всем привет,
Задача раскрасить строки товаров в заказе в УТ11 если цена ниже чем в установке цен
Делаю через расширение
Добавил реквизит в таблицу, вывел галку что цена ниже прайса, но при добавлении условного оформления ничего не красится
(пробовал руками добавить в расширение на форму УО - ничего не наработает)

&НаСервере
Процедура Расш1_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
	Для Каждого ТекТовары из Объект.товары Цикл 
		 	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ЦеныНоменклатурыСрезПоследних.Цена КАК Цена
		|ИЗ
		|	РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
		|ГДЕ
		|	ЦеныНоменклатурыСрезПоследних.Номенклатура = &Номенклатура
		|	И ЦеныНоменклатурыСрезПоследних.ВидЦены = &ВидЦены";
	
	Запрос.УстановитьПараметр("ВидЦены", ТекТовары.ВидЦены);
	Запрос.УстановитьПараметр("Номенклатура", ТекТовары.Номенклатура);
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		Если ТекТовары.Цена <   ВыборкаДетальныеЗаписи.Цена тогда
			ТекТовары.Расш1_ЦенаНижеПрайса= истина;
		иначе
			ТекТовары.Расш1_ЦенаНижеПрайса= Ложь;
		КонецЕсли;
	КонецЦикла;
	
	
		КонецЦикла;
		УсловноеОформление.Элементы.Очистить();
		
		ЭлементУО = УсловноеОформление.Элементы.Добавить();
		//устанавливаем само оформление
		ЭлементУО.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.СветлоЗеленый);
		//добавляем условие
		ЭлементУсловия = ЭлементУО.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
		//что сравниваем()
		ЭлементУсловия.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("объект.Товары.Расш1_ЦенаНижеПрайса");
		//как сравниваем
		ЭлементУсловия.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
		//с чем сравниваем
		ЭлементУсловия.ПравоеЗначение =истина;
	
КонецПроцедуры
Показать
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
10. SlavaKron 25.11.20 11:43 Сейчас в теме
(9) Поля в отборах условного оформления определяйте по пути к данным, как у вас и было. Мой предыдущий комментарий касался только оформляемых полей.
Ujine1313; +1 Ответить
11. Ujine1313 9 25.11.20 13:20 Сейчас в теме
(10)Спасибо добрый человек
все заработало
вот итоговое решение
УсловноеОформление.Элементы.Очистить();
		
		ЭлементУО = УсловноеОформление.Элементы.Добавить();
		//устанавливаем само оформление
		ЭлементУО.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.СветлоЗеленый);
		//добавляем условие
		ЭлементУсловия = ЭлементУО.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
		//что сравниваем()
		ЭлементУсловия.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Расш1_ЦенаНижеПрайса");
		//как сравниваем
		ЭлементУсловия.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
		//с чем сравниваем
		ЭлементУсловия.ПравоеЗначение =истина;
		
		ОформляемоеПоле = ЭлементУО.Поля.Элементы.Добавить();
		ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("Товары"); 
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Dream_kz 129 24.11.20 19:35 Сейчас в теме
(1)
ЭлементУсловия.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;

Больше? При сравнении булево?
Также думаю надо указать элементы, на которые действует УО
3. Ujine1313 9 24.11.20 21:11 Сейчас в теме
(2)
Больше? При сравнении булево?

осталось от экспериментов
добавил что оформлять - все равно не работает (может ка кто не так добавил поле на оформление)

УсловноеОформление.Элементы.Очистить();
		
		ЭлементУО = УсловноеОформление.Элементы.Добавить();
		//устанавливаем само оформление
		ЭлементУО.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.СветлоЗеленый);
		//добавляем условие
		ЭлементУсловия = ЭлементУО.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
		//что сравниваем()
		ЭлементУсловия.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("объект.Товары.Расш1_ЦенаНижеПрайса");
		//как сравниваем
		ЭлементУсловия.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
		//с чем сравниваем
		ЭлементУсловия.ПравоеЗначение =истина;
		
		ОформляемоеПоле = ЭлементУО.Поля.Элементы.Добавить();
		ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("объект.Товары.Расш1_ЦенаНижеПрайса");
Показать
5. SlavaKron 25.11.20 08:53 Сейчас в теме
(3)
может ка кто не так добавил поле на оформление

Оформляемое поле надо определять по наименованию элемента формы. У вас скорее всего это будет:
ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("ТоварыРасш1_ЦенаНижеПрайса");
dhurricane; +1 Ответить
7. dhurricane 25.11.20 09:36 Сейчас в теме
(3) Дополню комментарий из (5)
Если Вы хотите окрасить всю строку целиком, нужно указать имя элемента таблицы на форме. Т.е. скорее всего просто "Товары":
ОформляемоеПоле = ЭлементУО.Поля.Элементы.Добавить();
ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("Товары");

В отличие от условного оформления динамических списков, для таблиц формы обязательно указывать оформляемое поле.
4. Ujine1313 9 24.11.20 22:06 Сейчас в теме
смущает еще то что и стандартными средствами не работает.
Прикрепленные файлы:
6. EVKash 14 25.11.20 08:58 Сейчас в теме
(4) "стандартное" не работает, т.к. программно удаляется.
&НаСервере
Процедура УстановитьУсловноеОформление()

УсловноеОформление.Элементы.Очистить();
8. Ujine1313 9 25.11.20 11:10 Сейчас в теме
(6)
УсловноеОформление.Элементы.Очистить();

Этот кусок кода вставил для чистоты эксперимента (грешил что стандартные перехлестываются с программными настройками) - без него то же не работает стандартное УО.
9. Ujine1313 9 25.11.20 11:39 Сейчас в теме
все равно не работает - что то где то я упускаю

УсловноеОформление.Элементы.Очистить();

ЭлементУО = УсловноеОформление.Элементы.Добавить();
//устанавливаем само оформление
ЭлементУО.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.СветлоЗеленый);
//добавляем условие
ЭлементУсловия = ЭлементУО.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
//что сравниваем()
ЭлементУсловия.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ТоварыРасш1_ЦенаНижеПрайса");
//как сравниваем
ЭлементУсловия.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
//с чем сравниваем
ЭлементУсловия.ПравоеЗначение =истина;

ОформляемоеПоле = ЭлементУО.Поля.Элементы.Добавить();
ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("Товары");
Прикрепленные файлы:
10. SlavaKron 25.11.20 11:43 Сейчас в теме
(9) Поля в отборах условного оформления определяйте по пути к данным, как у вас и было. Мой предыдущий комментарий касался только оформляемых полей.
Ujine1313; +1 Ответить
11. Ujine1313 9 25.11.20 13:20 Сейчас в теме
(10)Спасибо добрый человек
все заработало
вот итоговое решение
УсловноеОформление.Элементы.Очистить();
		
		ЭлементУО = УсловноеОформление.Элементы.Добавить();
		//устанавливаем само оформление
		ЭлементУО.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.СветлоЗеленый);
		//добавляем условие
		ЭлементУсловия = ЭлементУО.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
		//что сравниваем()
		ЭлементУсловия.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Расш1_ЦенаНижеПрайса");
		//как сравниваем
		ЭлементУсловия.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
		//с чем сравниваем
		ЭлементУсловия.ПравоеЗначение =истина;
		
		ОформляемоеПоле = ЭлементУО.Поля.Элементы.Добавить();
		ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("Товары"); 
Показать
Оставьте свое сообщение

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