Все об 1С8 - просто и доступно

Добавить в Избранное  Сделать Стартовой  Написать письмо

Главная Статьи Вопрос-ответ Экспресс-справочник Гостевая книга
Статьи по 1С

Условное оформление объектов управляемых форм 1С

В этой статье пойдет речь о возможности программно установить условное оформление объектов управляемой формы 1С. Конечно, можно и установить статичные значение условного оформления управляемой формы, но тогда изменение данных может полностью не отрисовать требуемые пожелания условного оформления. Поэтому здесь и будут приведены примеры условного оформления объектов управляемой формы при помощи программных средств 1С.
Для наглядного представления возможности использования программной установки условного оформления объектов управляемой формы будет использована простая обработка. Будет создана простенькая таблица значений (подобное решение описано в статье Чтение и запись данных в формате csv с помощью 1С), и в ней, в зависимости, от различных значений данных будет изменяться условное оформление.

В обработке на форме, кроме таблицы значений, две кнопки. Заполнить начальные данные и Установить условное оформление. Названия говорят сами за себя. Программная установка условного оформления состоит из двух процедур - команда на клиенте и вызов серверной процедуры, которая , собственно, и устанавливает условное оформление. Здесь будет приведен пример кода на сервере. Комментарии в одной секции оформления дают подсказки и пояснения, что и для чего делается. В конце статьи ссылка на пример обработки.
&НаСервере
Процедура УстановитьУсловноеОформлениеНаСервере()
	
	УсловноеОформление.Элементы.Очистить();
	
	СписокДляОтбора = Новый СписокЗначений;
	СписокДляОтбора.Добавить(Дата(1986, 10, 2));
	СписокДляОтбора.Добавить(Дата(1985, 6, 9));
	СписокДляОтбора.Добавить(Дата(1989, 4, 15));
	СписокДляОтбора.Добавить(Дата(1974, 3, 8));
	
	
	ЭлементУО 			= УсловноеОформление.Элементы.Добавить();
	//устанавливаем само оформление
	ЭлементУО.Оформление.УстановитьЗначениеПараметра("Доступность", Ложь);
	//добавляем условие
	ЭлементУсловия 			= ЭлементУО.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	//что сравниваем
	ЭлементУсловия.ЛевоеЗначение 	= Новый ПолеКомпоновкиДанных("ТЗПример.ДатаРождения");
	//как сравниваем
	ЭлементУсловия.ВидСравнения 	= ВидСравненияКомпоновкиДанных.ВСписке;
	//с чем сравниваем
	ЭлементУсловия.ПравоеЗначение 	= СписокДляОтбора;
	
	ЭлементУсловия.Использование	= Истина;
	
	//оформляемые поля
	ОформляемоеПоле = ЭлементУО.Поля.Элементы.Добавить();
	ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("ТЗПримерИмя"); 
	
	ЭлементУО 				= УсловноеОформление.Элементы.Добавить();
	ЭлементУО.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.СеребристоСерый);
	ЭлементУсловия 				= ЭлементУО.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ЭлементУсловия.ЛевоеЗначение 		= Новый ПолеКомпоновкиДанных("ТЗПример.ДатаРождения");
	ЭлементУсловия.ВидСравнения 		= ВидСравненияКомпоновкиДанных.Больше;
	//ЭлементУсловия.ВидСравнения 		= ВидСравненияКомпоновкиДанных.НачинаетсяС;
	ЭлементУсловия.ПравоеЗначение 		= Дата(1979, 11, 19);
	ЭлементУсловия.Использование		= Истина;
	
	//оформляемые поля
	ОформляемоеПоле = ЭлементУО.Поля.Элементы.Добавить();
	ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("ТЗПримерФамилия"); 
	ОформляемоеПоле = ЭлементУО.Поля.Элементы.Добавить();
	ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("ТЗПримерИНН"); 
	
	ЭлементУО 				= УсловноеОформление.Элементы.Добавить();
	ЭлементУО.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.Киноварь);
	ЭлементУсловия 				= ЭлементУО.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ЭлементУсловия.ЛевоеЗначение 		= Новый ПолеКомпоновкиДанных("ТЗПример.ДатаРождения");
	ЭлементУсловия.ВидСравнения 		= ВидСравненияКомпоновкиДанных.МеньшеИлиРавно;
	ЭлементУсловия.ПравоеЗначение 		= Дата(1979, 11, 19);
	ЭлементУсловия.Использование		= Истина;
	
	//оформляемые поля
	ОформляемоеПоле = ЭлементУО.Поля.Элементы.Добавить();
	ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("ТЗПримерФамилия"); 
	ОформляемоеПоле = ЭлементУО.Поля.Элементы.Добавить();
	ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("ТЗПримерИНН"); 
	
КонецПроцедуры //УстановитьУсловноеОформлениеНаСервере()

Обработку с примеров условного офорлмения управляемой формы можно скачать тут