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

#std710

Область применения: управляемое приложение.

Рекомендация (полезный совет)

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

1.1. Не следует использовать условное оформление для скрытия в таблице строк целиком. Это существенно замедляет работу в веб-клиенте, а также приводит к некорректному отображению содержимого таблицы.

1.2. Если задача может быть функционально решена как с помощью условного оформления динамического списка, так и с помощью условного оформления формы, то следует выбрать первый вариант (условное оформление динамического списка). Это также несколько ускорит открытие формы.

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

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

2.3. В коде процедуры установки условного оформления нужно минимизировать использование строковых констант, а использовать переменные, разыменования и т.д. – такой подход позволит минимизировать количество скрытых ошибок в настройках условного оформления, например:

&НаСервере
Процедура УстановитьУсловноеОформление()
 
 УсловноеОформление.Элементы.Очистить();
 
 Элемент = УсловноеОформление.Элементы.Добавить();

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

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

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

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

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

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

КонецПроцедуры

См. также