Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
03 окт 2024, 12:46

Не получается сделать условное оформление

Автор Lun, 11 дек 2018, 16:43

0 Пользователей и 2 гостей просматривают эту тему.

Lun

Здравствуйте!
Не получается сделать условное оформление на упр. форме. Источник данных - таблица значений (имя - ТаблицаФайлов). В реквизитах имеется поле (число) - ОригинальныйИндикатор, в УФ оно заведено, как поле надписи, мне нужно, чтобы поле красилось другим фоном, если его значение = 0.
Написал процедуру по установке усл. оформления, но она не работает - не могли бы Вы подсказать, что не так ?

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

LexaK

как совет, попробуйте условное оформление сделать в конфигураторе, в конструкторе формы (прямо в свойствах формы закладка Оформление, раздел: УсловноеОформление)!
иначе если у вас режим совместимости: без совместимости или более версии 8.3.10
то вам программное Условное оформление надо еще копировать в Пользовательские настройки (если у вас процедуры нет, то самому делать, ну на любителя)
если помогло нажмите: Спасибо!

Lun

Да, через конфигуратор работает как надо, спасибо.

Не знал, что программное оформление необходимо куда-то еще копировать, в тех примерах, которые я нашел в интернете (и этот тоже) на это не намекали :) ... а может не там смотрел.

Цитата: LexaK от 11 дек 2018, 17:01
как совет, попробуйте условное оформление сделать в конфигураторе, в конструкторе формы (прямо в свойствах формы закладка Оформление, раздел: УсловноеОформление)!
иначе если у вас режим совместимости: без совместимости или более версии 8.3.10
то вам программное Условное оформление надо еще копировать в Пользовательские настройки (если у вас процедуры нет, то самому делать, ну на любителя)

АлександрВладимирович

Замените в коде 1 строчку:

ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ТаблицаФайлов.ОригинальныйИндикатор");

и должно заработать.

Lun

Александр Владимирович, спасибо!
Ваш совет помог.
Но честно говоря я не совсем понял почему
в ОтборЭлемента.ЛевоеЗначение необходимо передать имя поля с точкой после "ТаблицаФайлов" это ЭлементОтбораКомпоновкиДанных,
а в оператор: ОформляемоеПоле.Поле=Новый ПолеКомпоновкиДанных(...
имя без точки.
Т.е. как мне дальше понять, где точка нужна, а где нет ?

Цитата: АлександрВладимирович от 11 дек 2018, 20:42
Замените в коде 1 строчку:

ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ТаблицаФайлов.ОригинальныйИндикатор");

и должно заработать.

АлександрВладимирович

Можно понять настраивая условное оформление в Конфигураторе. Там в колонке "Условие" с точкой, а в "Оформляемые поля" без точки.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск