Имя: Пароль:
1C
1С v8
Программное оформление формы
,
0 Shalun
 
05.12.21
10:56
Всем привет! Ребят, помогите новичку. Задача простая. нужно изменить цвет строки списка, при равенстве двух значений их этого списка. Т.к. сделать это через условноеОформление формы, не получается, пишу следующий код:

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

В результате, отбор не осуществляется и все строки окрашиваются в зеленый. Если указываю конкретное поле оформления, все поля списка зеленые.
Подскажите, где тут собака зарылась?
1 acht
 
05.12.21
11:02
(0) > при равенстве двух значений их этого списка
Значения СуммаНачислено и СуммаОплачено находятся в одной строке?
2 Мимохожий Однако
 
05.12.21
11:07
Попробуй ....
ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("Список.КонкретноеПолеОформления");
3 Shalun
 
05.12.21
13:56
(1) Разумеется, В ОДНОЙ СТРОКЕЮ
(2) Почитай внимательно. Делал. Данное поле по всем строкам окрашивается.
Отбор почему то не отбирает.
4 hhhh
 
05.12.21
15:08
(3) вроде же так нельзя, 2 поля сравнивать. В правом значении должна быть какая-то константа, а не поле.
5 youalex
 
05.12.21
15:11
"СуммаНачислено" - так поле (элемент формы) и называется, или все таки "СписокСуммаНачислено" ?
6 youalex
 
05.12.21
15:21
(5) а нет, наврал, это же отбор а не поле оформления.
в отборе должно быть что-то вроде
Новый ПолеКомпоновкиДанных("Список.СуммаОплачено");
7 Ёпрст
 
05.12.21
19:04
(0)
    ЭлементУО = УсловноеОформление.Элементы.Добавить();

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

    ОтборЭлемента = ЭлементУО.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Список.СуммаОплачено");
    ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
    ОтборЭлемента.ПравоеЗначение = Новый ПолеКомпоновкиДанных("Список.СуммаНачислено");
    ЭлементУО.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.БледноЗеленый);
8 Shalun
 
05.12.21
20:53
(6)(7) Парни спасибо! Все верно Список.СуммаДокумента, так нужно!
(;) Программно можно. Это в форме когда делаешь УО, там низя.
9 Ёпрст
 
05.12.21
21:30
(8) кто запретил????
Открываешь интерактивно уо, в правое значение надимаешь крестик, далее выбираешь поле компоновки из своего списка. Усё
10 Shalun
 
05.12.21
22:36
(9) Так это левое значение ты выбираешь поле из списка. Если оно числовое, то в правое значение дает ввести только конкретное значение. Ввести другое поле из списка не получается.
11 серый КТУЛХУ
 
05.12.21
23:14
(10): получится. убей крестиком и потом при выборе доступен будет тип "поле компоновки данных" (как-то так), а потом - выбрать нужный. в (9) все сказано.
Закон Брукера: Даже маленькая практика стоит большой теории.