|
Почему не работает условное оформление динамического списка? | ☑ | ||
|---|---|---|---|---|
|
0
Климов Сергей
19.05.26
✎
09:58
|
УФ. На форме динамический список СписокУПоставщика, произвольный запрос. В запросе есть поле "Остаток", число. Хочу раскрасить строки в зависимости от величины остатка: больше нуля - один цвет, меньше нуля - другой.
В запросе поле получается вот так: ЕСТЬNULL(ОстаткиУПоставщиковОстатки.КоличествоОстаток, 0) КАК Количество Оформление устанавливаю так: СписокУПоставщика.КомпоновщикНастроек.Настройки.УсловноеОформление.Элементы.Очистить(); ЭлементУО = СписокУПоставщика.КомпоновщикНастроек.Настройки.УсловноеОформление.Элементы.Добавить(); ЭлементУО.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.Зеленый); ЭлементОтбора = ЭлементУО.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СписокУПоставщика.Количество"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше; ЭлементОтбора.ПравоеЗначение = 0; ЭлементОтбора.Использование = Истина; В результате все строки зелёные, как с остатком, так и без. ЧЯДНТ? |
|||
|
1
asady
19.05.26
✎
10:40
|
(0) для начала попытайся установить уо через форму и элемент СписокУПоставщика визуальными методами - ПКМ - Свойства...
Если сможешь, пробуй этого же добиться программно |
|||
|
2
Климов Сергей
19.05.26
✎
10:50
|
(1) Та же фигня, не работает.
|
|||
|
3
LienXo
19.05.26
✎
10:55
|
(0) Количество выведено на форму? Если нет - тогда галочку "Использовать всегда" поставь
|
|||
|
4
toypaul
гуру
19.05.26
✎
10:55
|
а где поля, к которым УО применяется?
|
|||
|
5
Климов Сергей
19.05.26
✎
10:59
|
(3) Да
|
|||
|
6
Климов Сергей
19.05.26
✎
10:59
|
(4) В букваре написано, что если поля не указывать, то к всей строке применяется. И оно таки применяется, красит в зелёный цвет. Но без разбора.
|
|||
|
7
Климов Сергей
19.05.26
✎
11:02
|
А если условное оформление задавать визуально, в свойствах формы, то оно НЕ применяется. Тоже без разбора.
|
|||
|
8
LienXo
19.05.26
✎
11:00
|
(3) так оно у тебя зеленое и так. (4) только заметил, хотел спросить тоже самое
|
|||
|
9
toypaul
гуру
19.05.26
✎
11:01
|
А. Думал УО формы добавляется. Обычно УО самого ДС не трогаем. Делаем все через УО формы. Чтобы последователи потом не проклинали.
|
|||
|
10
Климов Сергей
19.05.26
✎
11:06
|
(8) См (5). Все строки зелёные, хоть с остатком, хоть без.
|
|||
|
11
toypaul
гуру
19.05.26
✎
11:29
|
СписокУПоставщика.Количество если применяется у ДС может убрать "СписокУПоставщика."
|
|||
|
12
Мультук
гуру
19.05.26
✎
11:42
|
(10)
Ради интереса. 1) Создал обработку. Кинул на форму ДС с запросом
ВЫБРАТЬ
"440" КАК код,
100 как Количество
ПОМЕСТИТЬ ВТ_Т
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
"380",
200
;
ВЫБРАТЬ
СтраныМира.Код КАК Код,
СтраныМира.Ссылка КАК Ссылка,
СтраныМира.Наименование КАК Наименование,
СтраныМира.КодАльфа2 КАК КодАльфа2,
СтраныМира.КодАльфа3 КАК КодАльфа3,
ЕСТЬNULL(ВТ_Т.Количество, -1) КАК Количество
ИЗ
Справочник.СтраныМира КАК СтраныМира
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Т
ПО СтраныМира.Код = ВТ_Т.КОД
2) УО натыкал в форме в самом дин.списке Как видим - мир не пошатнулся. УО работает. P.S. Обычно, когда непонятно, NULL это или ноль или... Я пишу для отладки вот так ЕСТЬNULL(ОстаткиУПоставщиковОстатки.КоличествоОстаток, -1) КАК Количество P.P.S. Я бы почистил кэш, перезагрузился и пошёл бы покурил (осуждаю конечно. Или нет ?). Ибо явно, ты тут просто где-то обманываешь сам себя. Ну или жмешь Ctrl+S, а оно не жмется
|
|||
|
13
Климов Сергей
19.05.26
✎
11:47
|
Вот так работает:
ЭлементУО = УсловноеОформление.Элементы.Добавить(); ЭлементУО.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.Серый); ЭлементОтбора = ЭлементУО.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СписокУПоставщика.Количество"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.МеньшеИлиРавно; ЭлементОтбора.ПравоеЗначение = 0; ЭлементОтбора.Использование = Истина; ПолеОформления = ЭлементУО.Поля.Элементы.Добавить(); ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("СписокУПоставщика"); ПолеОформления.Использование = Истина; Всем спасибо за волшебные пендели! |
|||
|
14
Климов Сергей
19.05.26
✎
11:51
|
(12) УО работает :-) А обманул я сам себя в двух местах:
1. При программной установке таки надо обязательно указывать оформляемые поля; 2. А если устанавливаешь УО в свойствах формы, то не надо в коде писать УсловноеОформление.Элементы.Очистить(); (9) Таки я сделал УО формы, а не списка. А за что могут быть проклятия, если устанавливать УО списка? |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |