Имя: Пароль:
1C
 
Помогите настроить условное оформление
,
0 Master5550
 
28.05.24
12:46
УНФ 3.0

В расширении добавляю следующую процедуру:

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

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

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

У документа Приходная накладная есть два дополнительных реквизита: Номер приходной накладной и Состояние. Когда заполнено только Состояние, тогда код процедуры отрабатывает идеально, всё раскрашивается как надо. Когда заполнены и Номер приходной накладной и Состояние, тогда код не выполняется, ничего не красится. Я так понимаю, для  ДополнительныеСвойста.Значение применяется отбор по первому дополнительному реквизиту в таблице Доп. реквизитов - Номер приходной накладной.
1 Master5550
 
28.05.24
12:46
(0) Почему-то не срабатывает условие по группе условий
2 DJ Anthon
 
28.05.24
12:47
а зачем группа И, если все условия и так группируются по умолчанию как группа И?
3 Master5550
 
28.05.24
12:54
(2) Пробую в разных вариантах. Попробовал сейчас без группы-  все одинаково - при заполнении обоих дополнительных реквизитов ничего не красится.
4 DJ Anthon
 
28.05.24
13:02
(4) а вручную созданное условное оформление срабатывает? может, вы настройки формы не сбрасываете и юзерское оформление перекрывает программное?
5 DJ Anthon
 
28.05.24
13:04
И зачем проверять свойство, если значение и так принадлежит свойству? может, значение криво получаете? И зачем вообще его получать, просто сравните с текстом.
6 Master5550
 
28.05.24
13:08
(4) Вручную заполненное условие срабатывает аналогично. Когда заполнено только Состояние - все Ок. Когда заполнены Номер приходной накладной и Состояние - не раскрашивается.
7 Master5550
 
28.05.24
13:10
(5) Потому что, как я понимаю, если два дополнительных реквизита заполнены, то Номер приходной накладной находится на 1 строке. Состояние на 2 строке. И когда идет отбор по значению, то проверяется отбор на первой строке, а там Номер приходной накладной и он не равен состоянию "В работе" и поэтому ничего не красится
8 DJ Anthon
 
28.05.24
13:14
А, вот оно что, я последнее предложение в (0) не прочитал. если свойств может быть много, что должно быть в ДополнительныеРеквизиты.Свойство? вы его как получаете? запросом?
9 Master5550
 
28.05.24
13:23
(8) Вот так я получаю свойство:

ЭлементОтбора = ЭлементУсловияГруппа.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора.ЛевоеЗначение        = Новый ПолеКомпоновкиДанных("ДополнительныеРеквизиты.Свойство");
    ЭлементОтбора.ВидСравнения        = ВидСравненияКомпоновкиДанных.Равно;
    ЭлементОтбора.ПравоеЗначение    = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Состояние");  
    ЭлементОтбора.Использование = Истина;
10 DJ Anthon
 
28.05.24
13:25
это понятно, я про динамический список
11 Master5550
 
28.05.24
13:31
Вот такая конструкция заработала!

ЭлементОтбора1 = ЭлементУсловияГруппа.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
//   ЭлементОтбора1.ЛевоеЗначение        = Новый ПолеКомпоновкиДанных("ДополнительныеРеквизиты.Значение");
      ЭлементОтбора1.ЛевоеЗначение        = Новый ПолеКомпоновкиДанных("Ссылка.Состояние (Приходные накладные)");  
    ЭлементОтбора1.ВидСравнения        = ВидСравненияКомпоновкиДанных.Равно;
    ЭлементОтбора1.ПравоеЗначение    = ИТФДобавленное.ПолучитьЗначениеПоКлючу("Состояние_ВРаботе");
    ЭлементОтбора1.Использование = Истина;
12 Master5550
 
28.05.24
13:31
DJ Anthon, спасибо за некоторые наводки )
13 DJ Anthon
 
28.05.24
13:55
👍
14 Gucci76
 
28.05.24
14:58
Может мне тоже поможете?
Пытаюсь доработать условное оформление, которое создала ЗУП (мне надо добавить в нее цвет фона)
Делаю так
Процедура КорректировкаУсловногоОформления(НужныйЭлемент)
    Для Каждого ОформлениеПоля Из ЭтаФорма.УсловноеОформление.Элементы Цикл
        Если Строка(ОформлениеПоля.Поля) = ВРег(НужныйЭлемент.Имя) Тогда
            // мое добавленное оформление
            ОформлениеПоля.Оформление.УстановитьЗначениеПараметра("ЦветФона", Новый Цвет(255,157,100));    
            
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры
Но нет цветного фона.

Вся история тут:
Свертываемая Группа ЗУП 3.1 (в документе Ответ на запрос в СФР)
15 DJ Anthon
 
29.05.24
12:10
(14) а в режиме предприятия добавленное оформление работает? другие цвета пробовали типа WebЦвета.КрасноФиолетовый или ЦветаСтиля.ЦветТекстаОтрицательногоЗначения? какая ОС? у меня цвет фона не работает в линуксе, приходится работать только с цветом шрифта и его жирностью. код оформления у меня примерно такой же, не вижу ошибки. Тем более, непонятно, заходит ли отладчик в код и меняет ли данные. И очищаете ли вы настройки формы.