1. VictorRGB2 10 11.06.19 10:35 Сейчас в теме

не применяется условное оформление для таблицы формы

УТ 11.4 обработка "ПодборТоваровВДокументПродажи"

Нужно раскрасить строку или ячейку строки таблицы Корзина по условию.

Добавляю программно условное оформление

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

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.КорзинаНоменклатура.Имя);

	ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Корзина.Номенклатура");
	ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
	ОтборЭлемента.ПравоеЗначение = МассивТоварыУсловияВхождения;

	Элемент.Оформление.УстановитьЗначениеПараметра("ЦветФона", Новый Цвет(0, 255, 0));
Показать


Проблема в том, что условное оформление не отрабатывает.

Что делаю не так?
Найденные решения
8. antz 11.06.19 11:31 Сейчас в теме
(4) А, невнимательно смотрю, не выспался) Короче, с количеством у меня работает. Может, с МассивТоварыУсловияВхождения что не так? Там не группы случаем?
Прикрепленные файлы:
УО.epf
VictorRGB2; +1 Ответить
Остальные ответы
Избранное Подписка Сортировка: Древо
2. ZergKRSK 126 11.06.19 10:46 Сейчас в теме
У меня сделана своя процедура к-рая добавляет УО по заданной структуре, держи может пригодится:
СтруктураОформления = Новый Структура("ЦветФона", WebЦвета.Желтый);
МассивУсловия 	= Новый Массив;
МассивУсловия.Добавить(Новый Структура("УсловиеЛевое, ВидСравнения", "СтатьяРегл", ВидСравненияКомпоновкиДанных.НеЗаполнено));
МассивУсловия.Добавить(Новый Структура("УсловиеЛевое, УсловиеПравое", "ЭтоГруппа", Ложь));
МассивОформляемыхПолей = Новый Массив;
МассивОформляемыхПолей.Добавить("СтатьяРегл");
СтруктураУО = Новый Структура;
СтруктураУО.Вставить("СтруктураОформления"   , СтруктураОформления);
СтруктураУО.Вставить("СтруктураУсловия"      , МассивУсловия);
СтруктураУО.Вставить("МассивОформляемыхПолей", МассивОформляемыхПолей);
ДобавитьЭлементУсловногоОформления(Список.УсловноеОформление, "Отсутствует статья регл.", СтруктураУО);

// Процедура добавляет элемент условного оформления
//
// Параметры:
//  УсловноеОформление  - УсловноеОформлениеКомпановкиДанных
//  Представление  		- Строка
//  СтруктураУО 		- Структура ("СтруктураОформления, СтруктураУсловия, МассивОформляемыхПолей")
//  Позиция				- Число (Позиция, в которую необходимо добавить оформление. 
//							Если = Неопределено, тогда добавляется в конец)
//
Процедура ДобавитьЭлементУсловногоОформления(УсловноеОформление, Представление, СтруктураУО, Позиция = Неопределено) Экспорт

	// Раскроем структуру УО
	СтруктураОформления 	= СтруктураУО.СтруктураОформления;
	СтруктураУсловия 		= СтруктураУО.СтруктураУсловия;
	МассивОформляемыхПолей 	= СтруктураУО.МассивОформляемыхПолей;
	
	// Новый элемент условного оформления
	Если Позиция = Неопределено Тогда
	 	ЭлементУО = УсловноеОформление.Элементы.Добавить();
	Иначе	
	    ЭлементУО = УсловноеОформление.Элементы.Вставить(Позиция);
	КонецЕсли;
	//ЭлементУО = УсловноеОформление.Элементы.Добавить();
	ЭлементУО.Представление = Представление;
	ЭлементУО.Использование = Истина;
	
	// Оформление 	
	Для каждого КлЗн Из СтруктураОформления Цикл
		Параметр = КлЗн.Ключ;
		Значение = КлЗн.Значение;
		ЭлементУО.Оформление.УстановитьЗначениеПараметра(Параметр, Значение);
	КонецЦикла;	
	
	// Условие
	Если ТипЗнч(СтруктураУсловия) = Тип("Массив") Тогда
		МассивУсловий = СтруктураУсловия;
	Иначе
		МассивУсловий = Новый Массив;
		МассивУсловий.Добавить(СтруктураУсловия);
	КонецЕсли;
		
	Для Каждого СтрУсловия Из МассивУсловий Цикл
		
		УсловиеУО 				 = ЭлементУО.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
		УсловиеУО.ЛевоеЗначение  = Новый ПолеКомпоновкиДанных(СтрУсловия.УсловиеЛевое);
		Если СтрУсловия.Свойство("ВидСравнения") Тогда
			// По умолчанию: ВидСравненияКомпоновкиДанных.Равно
			УсловиеУО.ВидСравнения = СтрУсловия.ВидСравнения;
		КонецЕсли;
		Если СтрУсловия.Свойство("УсловиеПравое") Тогда
			УсловиеУО.ПравоеЗначение = СтрУсловия.УсловиеПравое;
		КонецЕсли;                                                    	
		
	КонецЦикла;
	
	// Оформляемые поля	
	Для каждого ОфПоле Из МассивОформляемыхПолей Цикл
		ОформляемоеПоле 	 = ЭлементУО.Поля.Элементы.Добавить();
		ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных(ОфПоле);
	КонецЦикла;
		
КонецПроцедуры // ДобавитьЭлементУсловногоОформления()
Показать
3. antz 11.06.19 10:50 Сейчас в теме
4. VictorRGB2 10 11.06.19 11:04 Сейчас в теме
(3) что с Использовать, что без результат один
не применяется, даже если через конфигуратор условное оформление делать, например раскрасить ячейку "Количество" если введено больше заданного числа
5. antz 11.06.19 11:15 Сейчас в теме
(4) А поля оформления кто указывать будет?

	ПолеОформления = Элемент.Поля.Элементы.Добавить();
	ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("Объект.Корзина.Номенклатура");
8. antz 11.06.19 11:31 Сейчас в теме
(4) А, невнимательно смотрю, не выспался) Короче, с количеством у меня работает. Может, с МассивТоварыУсловияВхождения что не так? Там не группы случаем?
Прикрепленные файлы:
УО.epf
VictorRGB2; +1 Ответить
9. VictorRGB2 10 11.06.19 13:11 Сейчас в теме
(8) вся соль была в том. что в МассивТоварыУсловияВхождения передавался именно массив, а не список
спасибо за наводку
6. t.v.s. 93 11.06.19 11:17 Сейчас в теме
В модуле формы есть функция УстановитьУсловноеОформление, внутри которой все элементы условного оформления очищаются. Соответственно, если вы создаете свое оформление ДО того как она вызывается, то в дальнейшем оно удалится.
7. VictorRGB2 10 11.06.19 11:20 Сейчас в теме
(6) это понятно, но я свое вызываю после
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Бобров
зарплата от 100 000 руб. до 150 000 руб.
Временный (на проект)

Студент (стажер) 1С
Нижний Новгород
зарплата от 25 000 руб.
Полный день

Программист 1С
Санкт-Петербург
зарплата от 120 000 руб.
Полный день

Программист 1С
Нижний Новгород
зарплата до 100 000 руб.
Полный день

Программист 1С
Новосибирск
зарплата от 80 000 руб.
Полный день