Условное оформление в формах
Область применения: управляемое приложение.
Рекомендация (полезный совет)
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 год назад
Недостаточно рейтинга для добавления отрицательного голоса. Шаблон будет скрыт из ваших результатов поиска.
Орфографическая ошибка в засчет: засчет Орфографическая ошибка в офомления: офомления Орфографическая ошибка в хотелки: хотелки