Не работает условное оформление табличной части
Добрый день. Подскажите, пожалуйста, почему не выполняется условное оформление? Что упустил?
&НаСервере
Процедура расш_ПриСозданииНаСервереПеред(Отказ, СтандартнаяОбработка)
ЭлементОформления = УсловноеОформление.Элементы.Добавить();
ЭлементОформления.Использование = Истина;
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.Красный);
ЭлементУсловия = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементУсловия.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.КоличествоУпаковок");
ЭлементУсловия.ПравоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Количество");
ЭлементУсловия.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ЭлементУсловия.Использование = Истина;
Для Каждого Колонка Из Элементы.Товары.ПодчиненныеЭлементы Цикл
ОформляемоеПоле = ЭлементОформления.Поля.Элементы.Добавить();
ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных(Колонка.Имя);
КонецЦикла;
КонецПроцедуры
ПоказатьПо теме из базы знаний
- Условное оформление в управляемых формах
- Разные хм... неожиданности при работе с УТ 11 и платформой
- Управление состоянием для шаблона MVC и работы с данными объекта
- Условное оформление формы в пользовательском режиме 1С (управление видимостью и доступностью элементов форм)
- Вывод условного оформления дерева значений или табличной части в эксель
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(10)
Проверьте, выполняется ли в принципе код из расширения.
проверял. Выполняется. По поводу реквизитов, я сначала на форме смотрел какой реквизит к какому из объект.товары относится. Причем количествоУпаковок - реквизит, который добавляется программно в этой же процедуре ПриСозданииНаСервере. Думал, что на программно добавленный реквизит условное оформление не отработает, и вместо него оставил левое значение = реквизит количество, правое значение = 0. Но строки так и не были окрашены.
(10) вот так еще пробовал
ЭлементОформления = УсловноеОформление.Элементы.Добавить();
ЭлементОформления.Использование = Истина;
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.Красный);
ЭлементУсловия = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементУсловия.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Количество");
ЭлементУсловия.ПравоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.КоличествоУпаковок");
ЭлементУсловия.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ЭлементУсловия.Использование = Истина;
ОформляемоеПоле = ЭлементОформления.Поля.Элементы.Добавить();
ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("Товары");
ОформляемоеПоле.Использование = Истина;
Показать
(12) Тогда у меня только 2 предположения: либо условное оформление где-то переопределяется после ПриСозданииНаСервере, затирая ваше, либо действительно значения в колонках Количество и КоличествоУпаковок совпадают, а на форме выводится что-то другое.
Кстати, проверьте вид сравнения "Равно", чтобы всё окрасилось в красный.
Кстати, проверьте вид сравнения "Равно", чтобы всё окрасилось в красный.
(13)
Кстати, проверьте вид сравнения "Равно", чтобы всё окрасилось в красный.
пробовал, и не только "Равно", "БольшеИлиРавно", и другие пробовал. Результат везде одинаковый. Пробовал еще сравнение реквизита номенклатура = Справочники.Номенклатура.ПустаяСсылка(), по идее все должны в красный окраситься, так как нет строк с пустой номенклатурой. Так же не работает. В типовой форме нашел только одну процедуру, где используется условное оформление, это "УстановитьУсловноеОформление", вместо нее вызывал процедуру со своим кодом - не работает. Вызывал вместо нее модифицированную процедуру Расш_УстановитьУсловноеОформление со своим кодом в конце - не работает. Пробовал в расширении безопасный режим и защиту от опасных действий включить/отключить, создавал расширение с другим назначением - и не работает. Сейчас попробовал на ут другой версии - все работает. А тут ни в какую.
Никогда эта штука корректно не работала у меня кроме как с числами. Ни строковые ни булевы!
Делаю допколонку с числовым типом и программирую цвета 1 - цвет фона зеленый 2 цвет фона красный итд
Потом просто в коде в отдельной процедуре каждый раз вычисляю условия и ставлю нужную цифирку в колонку. Только так работает
мегаглючный механизм этот условного оформления - хочет - работает, хочет - нет
Делаю допколонку с числовым типом и программирую цвета 1 - цвет фона зеленый 2 цвет фона красный итд
Потом просто в коде в отдельной процедуре каждый раз вычисляю условия и ставлю нужную цифирку в колонку. Только так работает
мегаглючный механизм этот условного оформления - хочет - работает, хочет - нет
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот