Условное оформление, выражение в поле компоновки данных

1. Professor338 17 16.12.21 17:03 Сейчас в теме
Добрый день.

Пришла в голову идея реализации данного куска кода в виде условного оформления

	If OrderTotalPallets <> Int(OrderTotalPallets) Then
		Items.OrderTotalPallets.TextColor = WebColors.Red;
	Else
		Items.OrderTotalPallets.TextColor = WebColors.Black;  
	Endif;

Тут мы сравниваем поле с его округленным вариантом
Был создан тестовый стенд который не сработал
ЭлементОформления = УсловноеОформление.Элементы.Добавить();
ЭлементОформления.Использование = Истина;
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона",  Новый Цвет(250, 191, 143));
//ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Шрифт", Новый Шрифт("Arial", 11, Истина));
	
ЭлементУсловия                = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементУсловия.ЛевоеЗначение  = Новый ПолеКомпоновкиДанных("Attribute1");
ЭлементУсловия.ПравоеЗначение = Новый ПолеКомпоновкиДанных("");
//ЭлементУсловия.ПравоеЗначение = Новый ПолеКомпоновкиДанных("ВЫРАЗИТЬ( Attribute1 КАК (Число(10,0)) ");
//ЭлементУсловия.ПравоеЗначение = Новый ПолеКомпоновкиДанных("Вычислить(""ОКР(Attribute1,0)"")");
//ЭлементУсловия.ПравоеЗначение = Новый ПолеКомпоновкиДанных("ОКР(Attribute1,0)");
ЭлементУсловия.ВидСравнения   = ВидСравненияКомпоновкиДанных.неРавно;   
ЭлементУсловия.Использование  = Истина;                                 
	
ОформляемоеПоле      = ЭлементОформления.Поля.Элементы.Добавить();
ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("Attribute1");
Показать

Может у кого ещё есть идеи как это красиво реализовать, и возможно ли вообще как то?
в интернете нигде не видел чтобы в Компоновку вставляли выражение.
По теме из базы знаний
Найденные решения
5. coollerinc 196 17.12.21 10:39 Сейчас в теме
Обычно делаю как указано в (2) . Но тут можно добавить новую колонку с округленными значениями и на нее бы настроил условное оформление
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. SlavaKron 16.12.21 17:07 Сейчас в теме
(1) Делал подобную раскраску в табличной части документа поступления: если товар штучный, а количество не целое, то подкрашивать такие ячейки. Необходимо создать свою колонку (реквизит формы) типа булево и заполнять ее программно. Условное же оформление повесить на эту колонку.
6. Professor338 17 17.12.21 13:50 Сейчас в теме
(2) Я не хочу добавлять ещё какие то реквизиты пусть даже и невидимые, так как это только всё усложняет, хранить в данных такой бесполезный реквизит не оптимально, а если этот реквизит не хранится в данных то заполнять его при открытии и каждый раз при изменении костыль какой то и смысл в таком условном оформлении пропадает.

Меня именно интересовала возможность выражения при использовании условного оформления, но видимо 1С ещё не созрела для такого.
4. Kolesonik 15 17.12.21 06:50 Сейчас в теме
(1)Вот пример программного наложения формата, вы забыли указать использование для поля
ЭлементОформления = КомпоновщикНастроек_.Настройки.УсловноеОформление.Элементы.Добавить();
	ЭлементОформления.Использование = Истина;

	Поле = ЭлементОформления.Поля.Элементы.Добавить() ;
	Поле.Использование = Истина;
	Поле.Поле = Новый ПолеКомпоновкиДанных("ЦенаРозничная");
	
	Поле = ЭлементОформления.Поля.Элементы.Добавить() ;
	Поле.Использование = Истина;
	Поле.Поле = Новый ПолеКомпоновкиДанных("Себестоимость");

	ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Формат", "ЧДЦ=2");
Показать
7. Professor338 17 17.12.21 13:51 Сейчас в теме
(4) Меня не программное наложение формата интересует а подсветка поля если в нём находится не целое число.
10. Kolesonik 15 17.12.21 14:28 Сейчас в теме
(7)Да я вас понял, просто пример привел Допишите у себя:
ОформляемоеПоле.Использование = Истина;
14. Professor338 17 21.12.21 15:00 Сейчас в теме
(10) почему то оформление и так работает...
3. anton13m 4 16.12.21 17:23 Сейчас в теме
Если есть номер строки, то можно использовать его.
Само условие заполнять в цикле.
Для Каждого Строка из Таблица Цикл
	
	Если Строка.Attribute1 = Окр(Строка.Attribute1) Тогда
		Продолжить;
	КонецЕсли;
	
	//...
	
	ЭлементУсловия = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ЭлементУсловия.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Таблица.НомерСтроки");
	ЭлементУсловия.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
	ЭлементУсловия.ПравоеЗначение = Строка.НомерСтроки;

	//...
	
КонецЦикла;

Показать
8. Professor338 17 17.12.21 13:55 Сейчас в теме
(3) вы предлагаете при изменении каждый раз пересобирать условное оформление?
т.е. найти старое условное оформление и затирать его новым или удалять? это ж ерунда неудобная получится.
11. anton13m 4 17.12.21 14:52 Сейчас в теме
(8) один из вариантов, если не хотите добавлять реквизит. Очищается одной командой. Опять же зависит от конкретной задачи, если список каждый раз меняется, то самое простое добавить реквизит и по нему оформлять. С выражением сравнивать все равно не получится.
15. Professor338 17 21.12.21 15:02 Сейчас в теме
(11) у меня были надежды что ПолеКомпоновкиДанных достаточно хитрое чтобы понять выражение
5. coollerinc 196 17.12.21 10:39 Сейчас в теме
Обычно делаю как указано в (2) . Но тут можно добавить новую колонку с округленными значениями и на нее бы настроил условное оформление
9. Professor338 17 17.12.21 13:56 Сейчас в теме
(5) Эта идея кажется самой адекватной, но хотелось бы избежать лишних реквизитов чтобы не следить за их актуальностью.
12. Kolesonik 15 18.12.21 07:52 Сейчас в теме
(9) если хотите еще одно не адекватное решение то можно перед наложением условного оформления формировать СЗ со значениями от 0 до 1000000 и вид сравнения неВсписке))
Зато без лишних реквизитов))
13. Professor338 17 21.12.21 14:59 Сейчас в теме
Оставьте свое сообщение

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