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

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

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

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

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



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

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

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

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

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

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