#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.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Статус");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.СтатусыПриходныхОрдеров.КПоступлению;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
КонецПроцедуры