Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

УФ. Условное оформление не могу победить

УФ. Условное оформление не могу победить
Я
   live in sky dreams
 
13.11.18 - 18:16
При создании формы определяю условное оформление одного из динамических списков.

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

Сам список пока что пустой.

Далее в ходе заполнения определенной таблицы хочу чтобы элементы динамического списка раскрашивались в зависимости от того присутствуют они в моей таблице или нет.

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



В отладчике смотрел - список значений заполняется. Но на форме в списке визуально это никак не отображается. Список обновлять по F5 пробовал. Не помогло.
Как раскрасить динамический список в зависимости от присутствия "Ссылка" этого списка в определенном списке значений? Или после изменения параметров отбора условного оформления что-то еще необходимо сделать?
 
 
   live in sky dreams
 
1 - 14.11.18 - 09:11
До сих пор никак не могу победить. Если хоть какие-то идеи есть - поделитесь плз.
   asady
 
2 - 14.11.18 - 09:15
(0) я бы при такой проблеме попытался бы сделать естовую форму с этим динамическим списком и настроить условное оформление из конфигуратора - тупо раскрасить эти поля по простому правилу.
потом посмотреть в отладчике как заполнено условное оформление и сделать это уже программно
   Nikoss
 
3 - 14.11.18 - 09:16
(2) +1. Опередил, тоже самое писал
   live in sky dreams
 
4 - 14.11.18 - 09:21
(2)В конфигураторе не получится заполнить список элементами справочника (предопределенных нет). Пробовал заполнить числами и ставить условия по числовому значения поля "ВСписке" - все работает, от моего варианта не отличается. Только именами полей..
   Nikoss
 
5 - 14.11.18 - 09:23
(4) ВыгрузитьКолонку - массив, попробуй сделать список значений
   live in sky dreams
 
6 - 14.11.18 - 09:31
(5)Этот массив я передаю в метод "ЗагрузитьЗначения" целевого списка значений. То есть в "ПравоеЗначение" остается список значений, тип не меняется на массив.
   live in sky dreams
 
7 - 14.11.18 - 09:32
Меняю на другую колонку (числовую)

Вместо "СписокПомещений.Ссылка" использую "СписокПомещений.Площадь" и для чисел все работает....
   live in sky dreams
 
8 - 14.11.18 - 09:34
Глюк может? Я заметил на текущей версии платформы если в обработке "ПриАктивизацииСтроки" динамического списка в коде есть какая либо ошибка, то платформа не ругается никак, а выходит из процедуры с той строки в которой ошибка и запускает ПриАктивизацииСтроки заново. И так бесконеччный цикл..

Может и мой текущий затык из той же серии..
   live in sky dreams
 
9 - 14.11.18 - 09:38
Попробую подсунуть динсписку левым соединением нужную ТаблицуЗначений и проверять входимость через ЕстьNull, В зависимости от значения получившегося в контрольной колонке красить...

Но все равно интересно почему не работает программно
   live in sky dreams
 
10 - 14.11.18 - 11:18
Вобщем напоролся на особенность платформы о которой не знал. Если в параметры передать список значений, то конструкция "В (&НекоторыйСписокЗначений)" проверяет только первое значение списка. Нужно передавать массив, тогда все будет работать корректно.
 
 Рекламное место пустует
   live in sky dreams
 
11 - 14.11.18 - 11:19
+(10)
Забыл уточнить. Перед этим в запрос динамического спискаа передавал список значений и в конструкции "ВЫБОР КОГДА ПроверяемоеПоле В (&СписокОтобраных) ТОГДА.." и красил строки по значению этого поля..
   Nikoss
 
12 - 14.11.18 - 11:57
Не поленился же... (это я про себя) воспроизвел.

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

Вот тут "СписокПомещений" не канает, поставь любой другой один, к примеру реквизит

Список тем форума
Рекламное место пустует  Рекламное место пустует
Ошибка? Это не ошибка, это системная функция.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует