Как сделать условное оформление программно 1с
Перейти к содержимому

Как сделать условное оформление программно 1с

  • автор:

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

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

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

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

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

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

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

  • настройки однотипного условного оформления можно вынести в общие модули. Например, есть 80 форм, имеющих условное оформление:
    «если НЕ ХарактеристикиИспользуются, то в поле «Характеристика» вывести текст «,
    то можно вынести эту настройку в код процедуры общего модуля;
  • при объединении конфигураций есть возможность объединять условное оформление (особенно это актуально при разветвленной разработке конфигураций);
  • при изменении в метаданных (например, переименовании значения перечисления) условное оформление может перестать работать. Если условное оформление настраивается в коде конфигурации, то при синтаксическом контроле модулей эта ошибка будет выявлена. Так ошибки в настройках условного оформления будут выявляться средствами автоматизированной проверки (например, АПК), т.к. будет диагностироваться ошибка при попытке получения формы.

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

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

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

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

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

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

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

v8.3: Условное оформление программно

Хочу сделать программную раскраску таблицы списка документов.

  
Элемент = УсловноеОформление.Элементы.Добавить();


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


ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.DueDate");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.МеньшеИлиРавно;
ОтборЭлемента.ПравоеЗначение = ТекущаяДата() - 3 * 24 * 60 * 60;


Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.Кирпичный);


В таком варианте подсвечивается только колонка, как подсветить всю строку?

Возможно, вас также заинтересует
21.11.2014 09:52 Ответ № 1

А какое значение в «Элементы.DueDate.Имя»?

21.11.2014 10:01 Ответ № 2

DueDate — Реквизит документа, в моем примере выделяется светом эта колонка

21.11.2014 12:28 Ответ № 3

1С 8.3 Программная установка условного оформления поля динамического списка — Программист 1С Минск. Автоматизация бизнеса.

1С 8.3 Программная установка условного оформления поля динамического списка

Данные > Примеры кода 1С > 1С 8.3 Динамический список

ПРИМЕРЫ КОДА 1С

Перейти в раздел примеры кода 1С 8.3:

Установить условное оформление для поля ДС в 1С 8.3:

//Вызывать процедуру из модуля формы «ПриОткрытии»
&НаКлиенте
Процедура УстановитьУсловноеОформлениеДляПоляДатаДоговора ()

// Создание элемента условного оформления
ЭлементыОформления = СписокПартийДС . УсловноеОформление . Элементы . Добавить ();
ЭлементыОформления . Использование = Истина;

// Настройка оформляемого поля
Поля = ЭлементыОформления . Поля . Элементы . Добавить ();
Поля . Использование = Истина;
Поля . Поле = Новый ПолеКомпоновкиДанных ( «ДатаДог» );
Поля = ЭлементыОформления . Поля . Элементы . Добавить ();
Поля . Использование = Истина;

// Создание условия для элемента оформления
Отбор = ЭлементыОформления . Отбор . Элементы . Добавить ( Тип ( «ЭлементОтбораКомпоновкиДанных» ));
Отбор . Использование = Истина;
Отбор . ВидСравнения = ВидСравненияКомпоновкиДанных . Больше ;
Отбор . ЛевоеЗначение = Новый ПолеКомпоновкиДанных ( «ДатаДог» );
Отбор . ПравоеЗначение = ТекущаяДата () + 31557600 ;

// Установка цвета оформления
Оформление = ЭлементыОформления . Оформление ;
Оформление . УстановитьЗначениеПараметра ( Новый ПараметрКомпоновкиДанных ( «ЦветФона» ), WebЦвета . ЛососьСветлый );

Программная установка условного оформления (УО) поля динамического списка

  • 1. Процедура находится в ОбщемМодуле (К примеру, ОбщегоНазначенияНаСервере); 2. Вызываться может как ПриСозданииНаСервере, так и ПриИзменении, например статуса документа/ заказа (засчет ветвления); 3. При вызове в событии ПриСозданииНаСервере перед вызовом процедуры лучше очистить элементы условного офомления: УсловноеОформление.Элементы.Очистить(); 4.Процедуру можно дорабатывать под свои хотелки, но для программного создания элементов ОУ, обязательно передавать параметр УсловноеОформление по ссылке;

    Процедура НазваниеПроцедуры(УсловноеОформление, ТаблицаЗначений = Неопределено, НомерПриОтображении = Неопределено, Цвет = Неопределено) Экспорт Если УсловноеОформление.Элементы.Количество() = 0 Тогда //ПриСозданииНаСервере => Перед вызовом функции чистим Элементы УО: УсловноеОформление.Элементы.Очистить(); //Секция: Какое условное оформление нужно задать при генерации формы на сервере? Для каждого Строка Из ТаблицаЗначений Цикл ЭлементОформления = УсловноеОформление.Элементы.Добавить(); ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Список.НомерПриОтображении"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭлементОтбора.ПравоеЗначение = Строка.НомерПриОтображении; ЭлементОтбора.Использование = Истина; ОформляемоеПоле = ЭлементОформления.Поля.Элементы.Добавить(); ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("Оформление"); ОформляемоеПоле.Использование = Истина; //можем настроить любой параметр => ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", Строка.ЦветСтатуса); КонецЦикла; Иначе //ПриИзменении цвета пользователем интерактивно; //Секция: Какое условное оформление нужно задать при изменении элемента, установлении нового статуса, выполнении //условия и т.п. Для каждого ЭлементУО Из УсловноеОформление.Элементы Цикл Если СтрНайти(ЭлементУО.Отбор, НомерПриОтображении) > 0 Тогда ЭлементУО.Оформление.УстановитьЗначениеПараметра("ЦветФона", Цвет); КонецЕсли; КонецЦикла; КонецЕсли; КонецПроцедуры // ()
    Процедура НазваниеПроцедуры(УсловноеОформление, ТаблицаЗначений = Неопределено, НомерПриОтображении = Неопределено, Цвет = Неопределено) Экспорт Если УсловноеОформление.Элементы.Количество() = 0 Тогда //ПриСозданииНаСервере => Перед вызовом функции чистим Элементы УО: УсловноеОформление.Элементы.Очистить(); //Секция: Какое условное оформление нужно задать при генерации формы на сервере? Для каждого Строка Из ТаблицаЗначений Цикл ЭлементОформления = УсловноеОформление.Элементы.Добавить(); ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Список.НомерПриОтображении"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭлементОтбора.ПравоеЗначение = Строка.НомерПриОтображении; ЭлементОтбора.Использование = Истина; ОформляемоеПоле = ЭлементОформления.Поля.Элементы.Добавить(); ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("Оформление"); ОформляемоеПоле.Использование = Истина; //можем настроить любой параметр => ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", Строка.ЦветСтатуса); КонецЦикла; Иначе //ПриИзменении цвета пользователем интерактивно; //Секция: Какое условное оформление нужно задать при изменении элемента, установлении нового статуса, выполнении //условия и т.п. Для каждого ЭлементУО Из УсловноеОформление.Элементы Цикл Если СтрНайти(ЭлементУО.Отбор, НомерПриОтображении) > 0 Тогда ЭлементУО.Оформление.УстановитьЗначениеПараметра("ЦветФона", Цвет); КонецЕсли; КонецЦикла; КонецЕсли; КонецПроцедуры // ()

    4 4 0 0 0 Скопировано.

    ред. 1 год назад

    Недостаточно рейтинга для добавления отрицательного голоса. Шаблон будет скрыт из ваших результатов поиска.

    Орфографическая ошибка в засчет: засчет Орфографическая ошибка в офомления: офомления Орфографическая ошибка в хотелки: хотелки

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *