Имя: Пароль:
1C
 
Условное оформление в списке
0 Prog_man
 
гуру
18.06.24
14:53
Добрый день

подскажите как настроить условное оформление в списке на два условия
1 Prog_man
 
гуру
18.06.24
14:53
УО = УсловноеОформление.Элементы.Добавить();
    УО.Оформление.УстановитьЗначениеПараметра("ЦветТекста",WebЦвета.Красный);
    УО.Использование = Истина;
        
    ГруппаОтбора = УО.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
    ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
    ГруппаОтбора.Использование = Истина;
    
    ЭлементОтбора = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Список.мНачДатаЭДО");
    ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
    ЭлементОтбора.ПравоеЗначение = Истина;
    ЭлементОтбора.Использование = Истина;
    
    ЭлементОтбора = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Список.Дата");
    ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно;
    ЭлементОтбора.ПравоеЗначение = Новый ПолеКомпоновкиДанных("Список.мНачДатаЭДО");
;
    ЭлементОтбора.Использование = Истина;
    
    ЦветПоле = УО.Поля.Элементы.Добавить();
    ЦветПоле.Поле = Новый ПолеКомпоновкиДанных("Список.Контрагент");
2 Prog_man
 
гуру
18.06.24
14:54
вот такой код не работает, что поправить?
3 Мультук
 
гуру
18.06.24
15:18
(0) Имхо точечка лишняя

ЦветПоле.Поле = Новый ПолеКомпоновкиДанных("СписокКонтрагент");
4 Prog_man
 
гуру
18.06.24
15:26
(3) так тоже не работает(
5 spiller26
 
18.06.24
15:34
(4)     ЦветПоле.Поле = Новый ПолеКомпоновкиДанных("СписокКонтрагент");

Только что проверил.
6 Prog_man
 
гуру
18.06.24
15:37
(5) ЦветПоле.Поле = Новый ПолеКомпоновкиДанных("Контрагент");
вот так работает на первое условие, второе игнорирует.
7 spiller26
 
18.06.24
15:37
Первое через форму создано для проверки, второе программно.
8 Prog_man
 
гуру
18.06.24
15:44
(7) спорить не буду, у меня оформление работает
ЦветПоле.Поле = Новый ПолеКомпоновкиДанных("Контрагент");

но проблема не в этом, как сделать чтобы второе условие срабатывало ?

вот тут
ЭлементОтбора.ПравоеЗначение = Новый ПолеКомпоновкиДанных("Список.мНачДатаЭДО");
9 spiller26
 
18.06.24
15:48
(8) мНачДатаЭДО, оно всегда будет заполнено, если это дата.
10 Prog_man
 
гуру
18.06.24
15:50
второе тоже работает но как то не правильно, мНачДатаЭДО = 01.04.2024. а условное оформление срабатывает с начала года
11 Prog_man
 
гуру
18.06.24
15:52
(9) вот и нет, за прошлый года УО не срабатывает
12 dmt
 
18.06.24
15:58
(10) возможно, твое УО не единственное
13 Prog_man
 
гуру
18.06.24
16:06
(12) полный код процедуры

&НаСервере
Процедура УстановитьУсловноеОформление()
    
    УсловноеОформление.Элементы.Очистить();

    // Номер СФ/УПД

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

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

    ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(ЭлементУО.Отбор,
        "Список.НомерСФУПД", ВидСравненияКомпоновкиДанных.НеЗаполнено);

    ЭлементУО.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '--'"));
    
    
    //Вставка
    УО = УсловноеОформление.Элементы.Добавить();
    УО.Оформление.УстановитьЗначениеПараметра("ЦветТекста",WebЦвета.Красный);
    УО.Использование = Истина;
    
    ГруппаОтбора = УО.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
    ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
    ГруппаОтбора.Использование = Истина;
    
    ЭлементОтбора = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Список.мНачДатаЭДО");
    ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
    ЭлементОтбора.ПравоеЗначение = Истина;
    ЭлементОтбора.Использование = Истина;
    
    ЭлементОтбора = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Список.Дата");
    ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно;
    ЭлементОтбора.ПравоеЗначение = Новый ПолеКомпоновкиДанных("Список.мНачДатаЭДО");
    
    ЭлементОтбора.Использование = Истина;
    
    ЦветПоле = УО.Поля.Элементы.Добавить();
    ЦветПоле.Поле = Новый ПолеКомпоновкиДанных("Контрагент");
    //КонецВставки
    
КонецПроцедуры
14 spiller26
 
18.06.24
16:08
(11) Всё срабатывает, что не так?
по условию как вы хотели.
1. мНачДатаЭДО должно быть заполнено
2. Дата >= мНачДатаЭДО
15 Prog_man
 
гуру
18.06.24
16:09
благодарю за советы, разобрался, это у меня не правильно дата заполнена была. сейчас все работает
16 spiller26
 
18.06.24
16:11
(15)
&НаСервере
Процедура КомандаТестНаСервере()
        
    УО = УсловноеОформление.Элементы.Добавить();
    УО.Оформление.УстановитьЗначениеПараметра("ЦветТекста",WebЦвета.Зеленый);
    УО.Использование = Истина;
        
    ГруппаОтбора = УО.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
    ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
    ГруппаОтбора.Использование = Истина;
    
    ЭлементОтбора1 = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора1.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Список.Дата");
    ЭлементОтбора1.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно;
    ЭлементОтбора1.ПравоеЗначение = Новый ПолеКомпоновкиДанных("Список.мНачДатаЭДО");
    ЭлементОтбора1.Использование = Истина;
    
    ЭлементОтбора2 = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора2.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Список.мНачДатаЭДО");
    ЭлементОтбора2.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
    //ЭлементОтбора2.ПравоеЗначение = Истина;
    ЭлементОтбора2.Использование = Истина;
    
    ЦветПоле = УО.Поля.Элементы.Добавить();
    ЦветПоле.Поле = Новый ПолеКомпоновкиДанных("СписокКонтрагент");
    
КонецПроцедуры
17 dmt
 
18.06.24
16:11
(13) и о чем это говорит? надо в отладчике после открытия формы смотреть УО формы и УО списка