Добрый день! Есть динамический список в форме списка, в нем есть поле с датой
Нужно красить это поле условным оформлением в зависимости от близости к текущей дате
Условие нужно как в днях, так и в часах, поэтому делаю условное оформление программно

Возник вопрос - как на одно и то же поле наложить несколько условий, чтобы при выполнении одного из них выбирался цвет?

Ниже приведу свой кусок кода, при выполнении - красит только красным, очевидно выбирает последнее из условий. Понимаю что что-то делаю не так. Подскажите, пожалуйста, как правильно ?

```1c
    //когда осталось 5 дней
    ЭлементОтбораДанных =
    ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбораДанных.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Дата");
    ЭлементОтбораДанных.ВидСравнения = ВидСравненияКомпоновкиДанных.МеньшеИлиРавно;
    ЭлементОтбораДанных.ПравоеЗначение = ТекущаяДатаСеанса()-5*день;
    ЭлементОтбораДанных.Использование = Истина;

    ЭлементЦветаОформления = ЭлементУсловногоОформления.Оформление.Элементы[0];
    ЭлементЦветаОформления.Значение = WebЦвета.Зеленый;
    ЭлементЦветаОформления.Использование = Истина;

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

    // когда осталось 3 часа и меньше

    ЭлементОтбораДанных = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбораДанных.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Дата");
    ЭлементОтбораДанных.ВидСравнения = ВидСравненияКомпоновкиДанных.МеньшеИлиРавно;
    ЭлементОтбораДанных.ПравоеЗначение = ТекущаяДатаСеанса()-3*Час;
    ЭлементОтбораДанных.Использование = Истина;

    ЭлементЦветаОформления = ЭлементУсловногоОформления.Оформление.Элементы[0];
    ЭлементЦветаОформления.Значение = WebЦвета.Оранжевый;
    ЭлементЦветаОформления.Использование = Истина;

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

    //когда просрочено

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

    ЭлементЦветаОформления = ЭлементУсловногоОформления.Оформление.Элементы[0];
    ЭлементЦветаОформления.Значение = WebЦвета.Красный;
    ЭлементЦветаОформления.Использование = Истина;

    ЭлементОбластиОформления = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
    ЭлементОбластиОформления.Поле = Новый ПолеКомпоновкиДанных("Дата");
```
---
Нужно создавать новый ЭлементУсловногоОформления для каждого условия.
---
Нужно создавать новый ЭлементУсловногоОформления для каждого условия.
---
пробовал так перед каждым новым условием
не помогло
нужно как-то иначе?

```1c
    ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
```
---
Нет, именно так.
И в него добавляются отборы, оформление, поля.
---
просто по какой-то причине выполняется только последнее условие
возможно там нужно указать какое-то свойство элемента условного оформления, чтобы заработало? Использование = истина у меня есть
---
Весь код приведите.
---
добавил ниже
---
Проблема в условиях.
У вас отборы пересекаются.
1 - <=ТекущаяДата - 5 дней
2 - <=ТекущаяДата - 3 часа
3 - <=ТекущаяДата

последнее условие выполняется всегда, поэтому оно и применяется.
поменяйте порядок условий (порядок добавления элементов условного оформления) - 3, 2, 1, или отбор добавьте такой, чтобы интервалы не пересекались.
---
ну там просто условия за другом были
Спасибо! уже поправил
ошибка в условии была, поэтому не работало)
---
КодЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();

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

   ЭлементЦветаОформления = ЭлементУсловногоОформления.Оформление.Элементы[0];
   ЭлементЦветаОформления.Значение =  WebЦвета.Зеленый;
   ЭлементЦветаОформления.Использование = Истина;

   ЭлементОбластиОформления = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
   ЭлементОбластиОформления.Поле = Новый ПолеКомпоновкиДанных("Дата");
Показать полностью
---
как вариант, так еще
https://wonderland.v8.1c.ru/blog/obrabotka-i-oformlenie-dannykh-dinamicheskogo-spiska/
---
пробовал изначально делать по этой инструкции, работает как-то странно все это
в расширении ПриПолученииДанныхНаСервере у меня вообще нет возможности добавить
поэтому через общий модуль программно делаю