Имя: Пароль:
1C
 
Условное оформление в УФ, цвет ячейки.
,
0 dlogius
 
23.10.24
09:07
Дали задание: в табличной части документа (Список) изменить  цвет ячейки в зависимости от ее содержания.
Использую такой код:

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

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

красится весь столбец.

Поле "ВариантУтверждения" это ссылка на одноименный справочник.

Я так понимаю, что условие не срабатывает, в ЛевомЗначении что-то не так, там ссылка, а я ее пытаюсь приравнять к строке.
Помогите сформировать условие.
"ОМ" это одно из значений справочника - наименование. В списке есть строки с "ОМ" и с другим содержимым, красится вся колонка.
1 Krendel
 
23.10.24
09:09
Это же типовой функционал ;-)
2 dlogius
 
23.10.24
09:15
Сорри я тут неточность допустил.
Красится весь столбец если я ставлю: ВидСравненияКомпоновкиДанных.НЕРавно;
а если ВидСравненияКомпоновкиДанных.Равно, то ничего не красится.
3 dlogius
 
23.10.24
09:16
(1) В том то и дело, типовой и не работает. (
4 dmt
 
23.10.24
09:25
(0) попробуй вручную задать так условное оформление, чтобы работало. А потом полученные настройки переведи в программный код
5 dmt
 
23.10.24
09:28
а, возможно тебе надо сделать что-то вроде
ОтборЭлемента.ПравоеЗначение = Справочники.ТвойСправочник.НайтиПоНаименованию("ОМ")

лучше конечно как-то по-другому получить ссылку на ТвойСправочник, например из константы. Но хотя бы так
6 Fedor-1971
 
23.10.24
09:39
(0) Самый простой вариант, добавь поле в таблицу (просто на форме, например, УтвержденоОМ с типом Булево, или число, если тебе нужно несколько цветов) и заполни его кодом.
Потом делай покраску на основе уже готового значения

Если хочешь проверять просто так, то пробуй через .Наименование или преобразуй ссылку в строку через СокрЛП(ТвояСсылка)
Тут без гарантии и с бубном
7 osa1C
 
23.10.24
09:42
(6) Клюшечный говнокод детектед
8 osa1C
 
23.10.24
09:46
(0) В свойствах табличной части есть условное оформление. Вставляешь нужные тебе условия, по этим условиям выбираешь цвет оформления и поля, которые надо оформить (если не выбрано, то вся строка)
9 dlogius
 
23.10.24
09:53
(5) dmt, Спасибо, заработало!
10 Fedor-1971
 
23.10.24
11:25
(7) а где твои предложения? в 5 поиск по наименованию в динамике обновлений формы, точно лучше? или дешевле один раз кодом выставить признак цвета?

(8) по ходу, это поведение по умолчанию от СКД, для форм нужно указывать раскрашиваемые поля (возможно, что-то поменялось)
11 Мультук
 
гуру
23.10.24
11:30
(10)

Один поиск при создании формы. Откуда 5 ?
12 Fedor-1971
 
23.10.24
11:59
(11) Я имел в виду пост 5, признаю, лопухнулся, надо было так (5)
И поиск получим не один раз, а при каждом добавлении строки будет происходить перекраска (возможно, при смене вкладок, тоже будут красить видимую таблицу) - посему, поиск будет производиться по количеству строк в ТЧ

Для гарантии, что поиск отработает один раз, нужно сделать реквизит формы, например ЦвКрасный = Справочники.НекийСправочник.Найти... любым способом и сравнивать с ним
ОтборЭлемента.ПравоеЗначение = ЦвКрасный;