Рассмотрим пример программного добавления элементов условного оформления на форму документа. Сделаем так, чтобы возможность редактирования строки таблицы грУсловияОплатыТаблица зависела от реквизита формы АктивныйСчет (тип Булево) и от реквизита таблицы Редактирование (тип Булево) (рис. 1):

Рис. 1. Реквизиты формы, от которых будет зависеть возможность редактирования строки таблицы

Если АктивныйСчет = Истина и Объект.грУсловияОплатыТаблица.Редактирование = Ложь, тогда редактирование строки таблицы будет недоступно: установим свойство ТолькоПросмотр = Истина. Можно добавить аналогичный код для случая, когда АктивныйСчет = Истина, Объект.грУсловияОплатыТаблица.Редактирование = Истина, и включить возможность редактирования строки: установить свойство ТолькоПросмотр = Ложь.

Эти условия можно задать в свойстве формы УсловноеОформление (рис. 2 и рис. 3):

Рис. 2. Свойство формы УсловноеОформление

Рис. 3. Настройка условного оформления

Иногда в коде очищают свойство формы УсловноеОформление и все заданные настройки (рис. 2 и рис. 3) пропадают. В таких случаях можно программно задать нужное условное оформление.

Описание текста процедуры модуля формы для программного добавления элементов условного оформления:

0. Название процедуры может быть любым; ее вызов может быть, например, из обработчика события формы ПриСозданииНаСервере.

1. Очищаем условное оформление формы (для примера, не обязательно).

2. Добавляем новый элемент условного оформления ЭлементОформления.

3. Устанавливаем свойство оформления ТолькоПросмотр = Истина.

4. Добавляем условия (отборы), при выполнении которых будет действовать настройка.

В примере это два условия И, поэтому добавляем группу элементов отбора ГруппаЭлементовОтбора с типом группы ГруппаИ, и два элемента отбора ЭлементОтбора (для АктивныйСчет = Истина и Объект.грУсловияОплатыТаблица.Редактирование = Ложь).

5. Указываем поля, для которых будет действовать настройка.

В нашем примере это будет вся строка таблицы грУсловияОплатыТаблица, поэтому добавляем одно поле ПолеОформления с названием таблицы грУсловияОплатыТаблица.

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


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


ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();       
               ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("грУсловияОплатыТаблица");
               ПолеОформления.Использование = Истина;
КонецПроцедуры