УсловноеОформлениеСтроки оформляет все строки

1. Farhat95 28.08.23 13:12 Сейчас в теме
Добрый день! Пытаюсь сделать оформление строк с условием. Но оформляются все строки. Может кто подсказать что не так сделал?

ТабЧасть = Объект.Запасы.Выгрузить();
	//Номенклатура = ТабЧасть.ВыгрузитьКолонку("Номенклатура");
	//Количество = ТабЧасть.ВыгрузитьКолонку("Количество");
	Для Каждого Стр из ТабЧасть Цикл
		Запрос = Новый Запрос;
		Запрос.Текст = 
		"ВЫБРАТЬ
		|	Номенклатура1.МинимальныйОстаток КАК МинимальныйОстаток,
		|	ЗапасыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток
		|ИЗ
		|	Справочник.Номенклатура КАК Номенклатура1
		|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗапасыНаСкладах.Остатки КАК ЗапасыНаСкладахОстатки
		|		ПО Номенклатура1.Ссылка = ЗапасыНаСкладахОстатки.Номенклатура.Ссылка
		|ГДЕ
		|	Номенклатура1.Ссылка = &Номенклатура";
		
		Запрос.УстановитьПараметр("Номенклатура", Стр.Номенклатура);
		
		РезультатЗапроса = Запрос.Выполнить();
		
		Выборка = РезультатЗапроса.Выбрать();
		
		Пока Выборка.Следующий() Цикл
			
			ИтогоБудет = Стр.Количество+Выборка.КоличествоОстаток; 
			
			ВДокументе = Стр.Количество;
			НаСкладе   = Выборка.КоличествоОстаток; 
			
			МаксимумНадо = Выборка.МинимальныйОстаток;
			
			
			Если ИтогоБудет > МаксимумНадо Тогда
				
				ЭлементУсловноеОформление = УсловноеОформление.Элементы.Добавить();
				
				ЭлементОтбора = ЭлементУсловноеОформление.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
				ЭлементОтбора.ЛевоеЗначение = ИтогоБудет;
				ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
				ЭлементОтбора.ПравоеЗначение = МаксимумНадо; 
				ЭлементОтбора.Использование = Истина;
				
				ЭлементУсловноеОформление.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.СветлоРозовый);
				
				ОфПоле = ЭлементУсловноеОформление.Поля.Элементы.Добавить();
				ОфПоле.Поле = Новый ПолеКомпоновкиДанных("ЗапасыКоличество");
				ОфПоле.Использование = Истина;
				
							
			КонецЕсли;
		КонецЦикла;
	КонецЦикла;
Показать
Найденные решения
4. newlogin1 28.08.23 13:31 Сейчас в теме
(3)
Получается придется новое поле добавлять на форму потом запросом заполнить это поле и после сделать оформление ?

Именно так, без добавления у вас получается что для всех строк всегда Истина, ведь есть такое условие
Если ИтогоБудет > МаксимумНадо Тогда

А само условие оформление его просто дублирует
ЭлементОтбора.ЛевоеЗначение = ИтогоБудет;
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
ЭлементОтбора.ПравоеЗначение = МаксимумНадо;
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. newlogin1 28.08.23 13:18 Сейчас в теме
(1)
ЭлементОтбора = ЭлементУсловноеОформление.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = ИтогоБудет;
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
ЭлементОтбора.ПравоеЗначение = МаксимумНадо;
ЭлементОтбора.Использование = Истина;


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

в ИмяПоля - надо писать имя поля на форме в котором у вас находятся нужные данные в таблице, если его нет надо добавить на форму данные которые вы в запросе выбираете
3. Farhat95 28.08.23 13:29 Сейчас в теме
(2) Я думал без добавления данных как то можно будет. Получается придется новое поле добавлять на форму потом запросом заполнить это поле и после сделать оформление ?
4. newlogin1 28.08.23 13:31 Сейчас в теме
(3)
Получается придется новое поле добавлять на форму потом запросом заполнить это поле и после сделать оформление ?

Именно так, без добавления у вас получается что для всех строк всегда Истина, ведь есть такое условие
Если ИтогоБудет > МаксимумНадо Тогда

А само условие оформление его просто дублирует
ЭлементОтбора.ЛевоеЗначение = ИтогоБудет;
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
ЭлементОтбора.ПравоеЗначение = МаксимумНадо;
5. Farhat95 28.08.23 13:42 Сейчас в теме
(4) Спасибо, Тогда так и сделаю)
6. Farhat95 28.08.23 14:37 Сейчас в теме
Получается обе сравнения должны быть на форме ?
7. Farhat95 28.08.23 14:38 Сейчас в теме
Левое и правое значение
8. Sashares 34 28.08.23 15:07 Сейчас в теме
9. newlogin1 28.08.23 16:50 Сейчас в теме
(7)Нет (вот теперь и думайте кто прав))
На самом деле на форме может быть как оба элемента, так и не один из них. В вашем случае надо смотреть, если переменная МаксимумНадо указывается отдельно для каждой строки (например номенклатуры), то она должна быть на форме. Но на самом деле не обязательно, т.к. можно проверить, что для такой - то номенклатуры у вас заказано слишком много и выделить не по условию число1 > число2, а номенклатура В Списке. Такой вариант подойдет в том случае, если у вас проверка не динамическая, а по кнопке или после подбора всей номенклатуры, а в форме список менять нельзя.
10. Farhat95 30.08.23 11:04 Сейчас в теме
(9) Я добавил в таблице колонку "итогобудетнаскладе" сделал ее невидимым и решил вопрос с оформлением. Правое значение выбрал из выборки.
Оставьте свое сообщение

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