#std710

Условное оформление в формах

1.

Для настройки части свойств элементов управления можно использовать условное оформление.

1.1.

Не используйте условное оформление, чтобы скрывать в таблице строки целиком.

Это заметно замедляет работу в веб-клиенте и может приводить к некорректному отображению таблицы.

1.2.

Если задачу можно решить и через условное оформление динамического списка, и через условное оформление формы, выбирайте условное оформление динамического списка.

Это ускоряет открытие формы.

2.

Настройку условного оформления форм и динамических списков рекомендуется выполнять в коде формы.

2.1.

Подход с настройкой в коде дает преимущества:

  • однотипные настройки можно вынести в общие модули;
  • при объединении конфигураций проще объединять условное оформление (особенно при #std709: Технология разветвленной разработки конфигураций);
  • при изменениях метаданных (например, переименовании значения перечисления) ошибки в условном оформлении выявляются раньше: они диагностируются при синтаксическом контроле модулей и средствами автоматизированной проверки (например, АПК).
Проверки

#v8cs:data-composition-conditional-appearance-use

2.2.

Все настройки условного оформления выполняйте при создании формы и далее не модифицируйте.

Исключение: если элементы формы генерируются программно, для них условное оформление настраивайте при генерации и затем не меняйте.

2.3.

В коде установки условного оформления минимизируйте использование строковых констант.

Используйте переменные, разыменование и другие типизированные конструкции. Это уменьшает число скрытых ошибок в настройках.

Пример

&НаСервере
Процедура УстановитьУсловноеОформление()

    УсловноеОформление.Элементы.Очистить();

    Элемент = УсловноеОформление.Элементы.Добавить();

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

    ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
    ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;

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

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

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

    Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);

КонецПроцедуры
См. также
Проверки

#acc:386 #acc:387

Источник

https://its.1c.ru/db/v8std#content:710