Имя: Пароль:
1C
 
Условное оформление УФ
0 ДолекоДо1Са
 
16.03.25
00:38
Здравствуйте, опять я. Не могу понять почему не меняется цвет строк в табличной части, может что то не то делаю.

&НаСервере
Процедура ИзменитьЦвет(НомерСтроки)

    УсловноеОформление.Элементы.Очистить();

    ЦветОформление = УсловноеОформление.Элементы.Добавить();
    ЦветОформление.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.Желтый);

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


КонецПроцедуры
1 Chameleon1980
 
16.03.25
08:37
(0) я бы предложил сделать руками УО и посмотреть (сравнить) в отладчике что не так.
2 Мультук
 
гуру
16.03.25
09:22
(0)

https://its.1c.ru/db/v8std/content/710/hdoc

и вообще

google:
1C УсловноеОформление


Сначала повторите чей-то готовый пример, потом делайте  свой
3 RomanYS
 
16.03.25
09:40
(0) ошибка здесь:
... = Новый ПолеКомпоновкиДанных("НомерСтроки");
4 ДолекоДо1Са
 
16.03.25
14:28
(3) &НаСервере
Процедура ИзменитьЦвет(Номер)  

    УсловноеОформление.Элементы.Очистить();

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

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

КонецПроцедуры

Сделал так, но почему то окрашиваются все строки
5 ДолекоДо1Са
 
16.03.25
14:29
(4) А не те которые соответствуют условию
6 ДолекоДо1Са
 
16.03.25
14:38
Спасибо всем, исправил.
Вот рабочий код

&НаСервере
Процедура ИзменитьЦвет(Номер)  

    УсловноеОформление.Элементы.Очистить();

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

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

КонецПроцедуры
7 Chameleon1980
 
16.03.25
17:54
Просто нужно внимательней и вникнуть что зачем написано.
8 Волшебник
 
16.03.25
18:47
В обычных формах всё гораздо проще. Изучайте обычные формы
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший