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