8.х Как программно в форме списка установить условное оформление у всей строки?

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем skv_79, 5 сен 2018.

  1. TopicStarter Overlay
    skv_79
    Offline

    skv_79 Опытный в 1С

    Регистрация:
    10 июл 2013
    Сообщения:
    379
    Симпатии:
    6
    Баллы:
    29
    Как программно в форме списка установить условное оформление у всей строки?

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

    1cUserAndrew Профессионал в 1С Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    5.151
    Симпатии:
    217
    Баллы:
    104
    "ЭлементУсловногоОформления" - это у Вас что?

    Есть условное оформление у Динамического списка. И есть условное оформление у самой Формы.

    При настройке условного оформления формы необходимо указывать оформляемые поля. Если их не указать, то оформление не применится ни к одному из полей.
    При настройке условного оформления динамического списка можно список полей не указывать. В этом случае будет оформляться вся строка.
    skv_79 нравится это.
  3. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.880
    Симпатии:
    1.028
    Баллы:
    204
    Таки нужно в качестве оформляемого поля указать саму тч. Во всяком случае, так работает на платформе 8.3.10.2560
    skv_79 нравится это.
  4. 1cUserAndrew
    Offline

    1cUserAndrew Профессионал в 1С Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    5.151
    Симпатии:
    217
    Баллы:
    104
    У меня так, вроде, только Наименование и Код оформлялись. Остальные колонки - нет.
    --- Объединение сообщений, 5 сен 2018 ---
    Аа, это потому что мое условие оформления было - ЭтоГруппа = Истина. Остальные поля не оформлялись, видимо, потому что для групп они не используются.
    А так да, nomad_irk прав: если указать сам список, то оформляется вся строка.
    Последнее редактирование: 5 сен 2018
  5. TopicStarter Overlay
    skv_79
    Offline

    skv_79 Опытный в 1С

    Регистрация:
    10 июл 2013
    Сообщения:
    379
    Симпатии:
    6
    Баллы:
    29
    У меня это иммено ФормаСписка справочника соответственно это расширение формы. Под ТЧ имеется ввиду основной реквизит формы Список?
  6. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.880
    Симпатии:
    1.028
    Баллы:
    204
    Имя Динамического списка, в котором собираетесь применять условное оформление.
  7. TopicStarter Overlay
    skv_79
    Offline

    skv_79 Опытный в 1С

    Регистрация:
    10 июл 2013
    Сообщения:
    379
    Симпатии:
    6
    Баллы:
    29
    Понял, основной реквизит формы списка это как раз Список (Динамический список).
    Получилось оформить всю строку так:
    Код:
        ЭлементУсловногоОформления = Форма.Список.УсловноеОформление.Элементы.Добавить();
        ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.ТусклоРозовый);
        //ЭлементУсловногоОформления.Поля.Элементы.Добавить().Поле = Новый ПолеКомпоновкиДанных("");
               
        ОтборЭлементаУсловногоОформления = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
        ОтборЭлементаУсловногоОформления.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ппк_КроссРегиональная");
        ОтборЭлементаУсловногоОформления.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
        ОтборЭлементаУсловногоОформления.ПравоеЗначение = Истина;
    
    Вместо
    Форма.УсловноеОформление.
    Сделал
    Форма.Список.УсловноеОформление
    и не добавлял вообще полей.

    Если обращаться к Форма.УсловноеОформление, то ни добавление поля ПолеКомпоновкиДанных("Список"), ни ПолеКомпоновкиДанных("") не помогло.
  8. 1cUserAndrew
    Offline

    1cUserAndrew Профессионал в 1С Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    5.151
    Симпатии:
    217
    Баллы:
    104
    Ну все правильно.
    Для оформления динамического списка лучше использовать условное оформление этого списка, а не условное оформление формы.