Примеры Условного Оформления форм:
Пример1:
&НаСервере
Процедура УстановитьОформлениеФормыНаСервере()
ИменаСлужебныхПрефиксов = НазначитьПрефиксИменСлужебныхЗначений();
ПрефиксИмениИнтервал = ИменаСлужебныхПрефиксов.Интервал;
ПрефиксИмениРучИзмЦены = ИменаСлужебныхПрефиксов.РучноеИзменениеЦены;
УсловноеОформление.Элементы.Очистить();
//
ЭлементОформления = УсловноеОформление.Элементы.Добавить();
ЭлементОформления.Представление = "СозданПрограммно";
//Отбор
ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоЦен.ЭтоГруппа");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = Истина;
//Оформление
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Шрифт", Новый Шрифт(WindowsШрифты.ШрифтДиалоговИМеню,,11,Истина,,,));
//Поле оформления
ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("ДеревоЦен");
//
ЭлементОформления = УсловноеОформление.Элементы.Добавить();
ЭлементОформления.Представление = "СозданПрограммно";
//Отбор
ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоЦен.ЭтоГруппа");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = Ложь;
ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоЦен.БазоваяЦена");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = 0;
//Оформление
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.Розовый);
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Текст", "<не задана>");
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.Серый);
//Поле оформления
ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("ДеревоЦенБазоваяЦена");
//оформление программно созданных колонок "Интервалы"
Для Каждого СтрокаИнтервала Из Интервалы Цикл
ИдентификаторИнтервала = СтрокаИнтервала.ИдентификаторИнтервала;
ИмяПоля_РИзмЦены = СтрЗаменить(ИдентификаторИнтервала, ПрефиксИмениИнтервал, ПрефиксИмениРучИзмЦены);
//
ЭлементОформления = УсловноеОформление.Элементы.Добавить();
//
ЭлементОформления.Представление = "СозданПрограммно";
//Отбор
ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоЦен."+ИмяПоля_РИзмЦены);
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = Истина;
//Оформление
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.Бежевый);
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.Синий);
//Поле оформления
ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
ПолеОформления.Поле = Новый ПолеКомпоновкиДанных(ИдентификаторИнтервала);
//
ЭлементОформления = УсловноеОформление.Элементы.Добавить();
//
ЭлементОформления.Представление = "СозданПрограммно";
//Отбор
ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоЦен."+ИдентификаторИнтервала);
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = 0;
ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоЦен.ЭтоГруппа");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = Ложь;
//Оформление
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.Розовый);
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Текст", "<не задана>");
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.Серый);
//Поле оформления
ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
ПолеОформления.Поле = Новый ПолеКомпоновкиДанных(ИдентификаторИнтервала);
КонецЦикла;
КонецПроцедуры
Пример2:
С использованием общей процедуры.
&НаСервере
Процедура УстановитьУсловноеОформление()
ерпОбщегоНазначенияСервер.УстановитьУсловноеОформление(ЭтаФорма, КомпоновщикНастроекТаблицаТовары, "ТаблицаТовары", "ТаблицаТовары");
КонецПроцедуры
Пример1:
&НаСервере
Процедура УстановитьОформлениеФормыНаСервере()
ИменаСлужебныхПрефиксов = НазначитьПрефиксИменСлужебныхЗначений();
ПрефиксИмениИнтервал = ИменаСлужебныхПрефиксов.Интервал;
ПрефиксИмениРучИзмЦены = ИменаСлужебныхПрефиксов.РучноеИзменениеЦены;
УсловноеОформление.Элементы.Очистить();
//
ЭлементОформления = УсловноеОформление.Элементы.Добавить();
ЭлементОформления.Представление = "СозданПрограммно";
//Отбор
ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоЦен.ЭтоГруппа");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = Истина;
//Оформление
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Шрифт", Новый Шрифт(WindowsШрифты.ШрифтДиалоговИМеню,,11,Истина,,,));
//Поле оформления
ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("ДеревоЦен");
//
ЭлементОформления = УсловноеОформление.Элементы.Добавить();
ЭлементОформления.Представление = "СозданПрограммно";
//Отбор
ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоЦен.ЭтоГруппа");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = Ложь;
ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоЦен.БазоваяЦена");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = 0;
//Оформление
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.Розовый);
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Текст", "<не задана>");
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.Серый);
//Поле оформления
ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("ДеревоЦенБазоваяЦена");
//оформление программно созданных колонок "Интервалы"
Для Каждого СтрокаИнтервала Из Интервалы Цикл
ИдентификаторИнтервала = СтрокаИнтервала.ИдентификаторИнтервала;
ИмяПоля_РИзмЦены = СтрЗаменить(ИдентификаторИнтервала, ПрефиксИмениИнтервал, ПрефиксИмениРучИзмЦены);
//
ЭлементОформления = УсловноеОформление.Элементы.Добавить();
//
ЭлементОформления.Представление = "СозданПрограммно";
//Отбор
ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоЦен."+ИмяПоля_РИзмЦены);
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = Истина;
//Оформление
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.Бежевый);
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.Синий);
//Поле оформления
ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
ПолеОформления.Поле = Новый ПолеКомпоновкиДанных(ИдентификаторИнтервала);
//
ЭлементОформления = УсловноеОформление.Элементы.Добавить();
//
ЭлементОформления.Представление = "СозданПрограммно";
//Отбор
ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоЦен."+ИдентификаторИнтервала);
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = 0;
ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоЦен.ЭтоГруппа");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = Ложь;
//Оформление
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.Розовый);
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Текст", "<не задана>");
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.Серый);
//Поле оформления
ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
ПолеОформления.Поле = Новый ПолеКомпоновкиДанных(ИдентификаторИнтервала);
КонецЦикла;
КонецПроцедуры
С использованием общей процедуры.
&НаСервере
Процедура УстановитьУсловноеОформление()
ерпОбщегоНазначенияСервер.УстановитьУсловноеОформление(ЭтаФорма, КомпоновщикНастроекТаблицаТовары, "ТаблицаТовары", "ТаблицаТовары");
КонецПроцедуры
Где, ерпОбщегоНазначенияСервер.УстановитьУсловноеОформление
Процедура СкопироватьПоляУсловногоОформления(ЭлементУсловногоОформления, ЭлементКомпоновщика, ИмяТаблицыОформления, ПрефиксИмениЭлементовФормы="")
ЭлементыПоля = ЭлементКомпоновщика.Поля.Элементы;
Если ЭлементыПоля.Количество() = 0 Тогда
ОформляемоеПоле = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных(ИмяТаблицыОформления);
ОформляемоеПоле.Использование = Истина;
Иначе
Для каждого ЭлементПоля Из ЭлементыПоля Цикл
ОформляемоеПоле = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ЗаполнитьЗначенияСвойств(ОформляемоеПоле, ЭлементПоля);
ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных(ПрефиксИмениЭлементовФормы+Строка(ЭлементПоля.Поле));
КонецЦикла;
КонецЕсли;
КонецПроцедуры // СкопироватьПоляУсловногоОформления()
Процедура СкопироватьОтборУсловногоОформления(ЭлементУсловногоОформления, ЭлементКомпоновщика, ИмяТаблицыОформления)
Для каждого ЭлементОтбора Из ЭлементКомпоновщика.Элементы Цикл
Если ТипЗнч(ЭлементОтбора) = Тип("ГруппаЭлементовОтбораКомпоновкиДанных") Тогда
ГруппаОтбора = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ЗаполнитьЗначенияСвойств(ГруппаОтбора, ЭлементОтбора);
СкопироватьОтборУсловногоОформления(ЭлементУсловногоОформления, ЭлементОтбора, ИмяТаблицыОформления);
Иначе
НовыйЭлементОтбора = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЗаполнитьЗначенияСвойств(НовыйЭлементОтбора, ЭлементОтбора);
НовыйЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ИмяТаблицыОформления+"." + Строка(ЭлементОтбора.ЛевоеЗначение));
КонецЕсли;
КонецЦикла;
КонецПроцедуры // СкопироватьОтборУсловногоОформления()
Процедура СкопироватьЭлементОформления(ЭлементУсловногоОформления, ЭлементКомпоновщика)
ЭлементыОформления = ЭлементКомпоновщика.Оформление.Элементы;
Для каждого ЭлементОформления Из ЭлементыОформления Цикл
Если ЭлементОформления.Использование Тогда
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра(ЭлементОформления.Параметр, ЭлементОформления.Значение);
КонецЕсли;
КонецЦикла;
КонецПроцедуры // СкопироватьЭлементОформления()
Процедура УстановитьУсловноеОформление(Форма, КомпоновщикНастроек, ИмяТаблицыОформления, ПрефиксИмениЭлементовФормы="") Экспорт
Форма.УсловноеОформление.Элементы.Очистить();
УсловноеОформлениеКомпоновщика = КомпоновщикНастроек.Настройки.УсловноеОформление;
Для каждого ЭлементУФ Из УсловноеОформлениеКомпоновщика.Элементы Цикл
ЭлементУсловногоОформления = Форма.УсловноеОформление.Элементы.Добавить();
ЭлементУсловногоОформления.Использование = ЭлементУФ.Использование;
// Заполняем поля к которым будет применятся условное оформление
СкопироватьПоляУсловногоОформления(ЭлементУсловногоОформления, ЭлементУФ, ИмяТаблицыОформления, ПрефиксИмениЭлементовФормы);
// Заполняем отбор для условного офрмления
СкопироватьОтборУсловногоОформления(ЭлементУсловногоОформления, ЭлементУФ.Отбор, ИмяТаблицыОформления);
// Заполняем элементы условного офрмления
СкопироватьЭлементОформления(ЭлементУсловногоОформления, ЭлементУФ);
КонецЦикла;
КонецПроцедуры
Работает, помогло, спасибо!
ОтветитьУдалитьА как вывести в параметре "Текст" значение из другой колонки табличного поля?
ОтветитьУдалить