|
Почему не работает условное оформление динамического списка? hollow138, Толич, Кир Пластелинин, maxar, Fregat, okmail, RomanYS, Kongo2019, Климов Сергей, Доминошник, ДенисСмирнов, Silgis, trooba, Мультук, FirstLineSupport, Ychenik1c, toypaul, asady, spiller26, vicof, d18, zenik, ReaLg, nick86, Garykom, Ненавижу 1С, Homer, Anton1307, 2mugik, 2S, LienXo, PLUT, Fish, alexxx961503, Prog_man, GlRoznica, АгентБезопаснойНацио, Михаил Козлов, d4rkmesa, obs191, furchia, Шурик71, Волшебник, JanK, Web00001, DeeK, shuhard, sikuda, ass1c, Лирик, Franchiser, mTema32
| ☑ | ||
|---|---|---|---|---|
|
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) Таки я сделал УО формы, а не списка. А за что могут быть проклятия, если устанавливать УО списка? |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |