Почему может не работать условное оформление на управляемой форме
Условное оформление
У нас есть некоторая форма списка, например, элементов плана вида характеристик «ПраваПользователей» в конфигурации «Управление производственным предприятием» версии 1.3.
Форма, как Вы видите, управляемая. нам нужно оформить список таким образом, чтобы все строки групп элементов выделялись зеленым цветом. Приступим!
Пример
Оформление элементов управляемых форм выполняется с помощью условного оформления формы:
Для решения нашей задачи добавим элемент условного оформления со следующими настройками:
При последующем открытии формы строки групп плана видов характеристик должны быть выделены зеленым цветом. Но. этого не происходит!
Дело в том, что список элементов и групп плана видов характеристик отображается на форме с помощью объекта формы с типом «Динамический список». Динамические списки использут возможности системы компоновки данных, включая отборы и условное оформление. Последнее как-раз и определяет конечное оформление списка, игнорируя настройки условного оформления самой формы. Добавим аналогичные настройки условного оформления для динамического списка.
Единственное отличие — в список оформляемых полей нужно добавить все видимые поля списка, на которые должно распостраняться условное оформление.
Вывод
Часто слышал, что условное оформление на управляемых формах не всегда работает. В итоге выяснялось, что просто настройки делалишь для формы, а не для динамического списка.
Надеюсь статья кому-нибудь да сэкономит время при решении проблем с условным оформлением.
Источник
УФ. Не работает условное оформление.
Вроде бы простейшая задача, но почему то не получается.
На управляемой форме есть переключатель (2 положения) и реквизит. Если переключатель стоит в первом положении, то реквизит должен быть доступен для редактирования, если во втором, то не доступен.
Делаю условным оформлением. Добавил такое условие:
Оформление | Условие | Оформляемые поля
Только просмотр Истина | Переключатель Равно «2» | ПолеВвода
Почему то не работает. Что я не так делаю?
? Видимость – используется только для отключения отображения полей таблицы: поле надписи, поле ввода, поле переключателя, поле картинки. Место ячеек с отключенным отображением занимается за счет изменения размера соседних ячеек. Алгоритм растягивания ячеек может различаться в различных клиентских приложениях.
? Доступность – используется только для отключения доступности полей таблицы: поле надписи, поле ввода, поле переключателя, поле картинки.
? Только просмотр – используется только для включения режима Только просмотр для полей таблицы: поле надписи, поле ввода, поле переключателя, поле картинки.
? Отображать – используется только для отключения видимости значений полей таблицы: поле надписи, поле ввода, поле переключателя, поле картинки.
Кто-нибудь пользовался условным оформлением для управления доступностью реквизитов?
(5) Я сделал на этой же форме условное оформление для числового реквизита. Если он меньше нуля то окрашивается в красный. Это работает.
Значит управление видимостью и доступностью только для табличных полей?
Источник
Условное оформление в расширении срабатывает не по условию
Форма обработки, в нем таблица.
Хочу перекрашивать фон двух ячеек строки по условию.
Добавил форму в расширение
Добавил функцию в расширение.
Добавил свое условное оформление.
Но почему-то срабатывает все время не соблюдая условие отбора.
&НаСервере
&После(«УстановитьУсловноеОформление»)
Процедура ДорФ_УстановитьУсловноеОформление()
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОстаткиСерийТекущиеНомер.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип(«ЭлементОтбораКомпоновкиДанных»));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(«ОстаткиСерийТекущиеГоденДо»);
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.МеньшеИлиРавно;
ОтборЭлемента.ПравоеЗначение = Параметры.Дата;
Элемент.Оформление.УстановитьЗначениеПараметра(«ЦветФона», WebЦвета.Красный);
//
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОстаткиСерийТекущиеГоденДо.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип(«ЭлементОтбораКомпоновкиДанных»));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(«ОстаткиСерийТекущиеГоденДо»);
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.МеньшеИлиРавно;
ОтборЭлемента.ПравоеЗначение = Параметры.Дата;
Элемент.Оформление.УстановитьЗначениеПараметра(«ЦветФона», WebЦвета.Красный);
Источник
Не работает условное оформление управляемой формы. Почему?
Есть два элемента:
«Элемент1» (поле ввода, путь к данным «Объект.Реквизит1» с типом Перечисление)
«Элемент2» (поле ввода, путь к данным «Объект.Реквизит2» с типом Строка)
Делаю условное оформление (в конфигураторе, НЕ программно):
Использование = «Истина»
Оформление = «Видимость = Ложь»
Условие = «Объект.Реквизит1 Равно ‘Перечисление.Перечисление1.Значение10′»
Оформляемые поля = «Элемент2»
Вопрос: почему не срабатывает УО, когда выбираю «Значение10» в поле «Элемент1»?
Условия задачи.
Есть два реквизита во внешней обработке:
— ПолеДоступностьюКоторогоНужноУправлять — Любой тип
— ПолеКотороеРулитДоступностьюДругогоПоля — Булево
Оба реквизита кинуты на форму.
Тыкая галочку у реквизита ПолеКотороеРулитДоступностьюДругогоПоля, ничего не происходит с полем ПолеДоступностьюКоторогоНужноУправлять, а хотелось бы чтобы оно меняло доступность.
Что тут может быть не так?
(13) EMelihoff, так это же не так, условное форматирование задается на сервере, в контексте сервера значения есть в реквизитах (вернее доступны на сервере), да это и не важно, при описании условного оформления мы явно указываем какой реквизит нужно всегда сравнивать с неким заранее заданным значением и если сравнение проходит, то должно что-то происходить в оформлении, в частности мне нужно чтобы менялась Доступность поля в зависимости от значений другого поля
картина непонятная мне на самом деле, почему не пашет условное оформление, наверное мат часть плохо знаю
из формы документа РегламентнаяОперация БП 3.0.41
Источник
Условное оформление в формах
Область применения: управляемое приложение.
Рекомендация (полезный совет)
1. Для настройки некоторых свойств элементов управления можно использовать условное оформление. Однако у этого механизма также есть ряд ограничений.
1.1. Не следует использовать условное оформление для скрытия в таблице строк целиком. Это существенно замедляет работу в веб-клиенте, а также приводит к некорректному отображению содержимого таблицы.
1.2. Если задача может быть функционально решена как с помощью условного оформления динамического списка, так и с помощью условного оформления формы, то следует выбрать первый вариант (условное оформление динамического списка). Это также несколько ускорит открытие формы.
2.1. Настройку условного оформления форм и динамических списков рекомендуется делать в коде формы. Такой подход имеет ряд преимуществ перед заданием настроек условного оформления в свойствах формы:
- настройки однотипного условного оформления можно вынести в общие модули. Например, есть 80 форм, имеющих условное оформление:
«если НЕ ХарактеристикиИспользуются, то в поле «Характеристика» вывести текст «,
то можно вынести эту настройку в код процедуры общего модуля; - при объединении конфигураций есть возможность объединять условное оформление (особенно это актуально при разветвленной разработке конфигураций);
- при изменении в метаданных (например, переименовании значения перечисления) условное оформление может перестать работать. Если условное оформление настраивается в коде конфигурации, то при синтаксическом контроле модулей эта ошибка будет выявлена. Так ошибки в настройках условного оформления будут выявляться средствами автоматизированной проверки (например, АПК), т.к. будет диагностироваться ошибка при попытке получения формы.
2.2. Все настройки условного оформления должны производиться при создании формы и потом не должны модифицироваться. Исключением могут являться случаи, когда элементы формы генерируются программно – условное оформление таких элементов нужно настраивать при генерации элементов и потом не нужно менять.
2.3. В коде процедуры установки условного оформления нужно минимизировать использование строковых констант, а использовать переменные, разыменования и т.д. – такой подход позволит минимизировать количество скрытых ошибок в настройках условного оформления, например:
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыУпаковка.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип(«ГруппаЭлементовОтбораКомпоновкиДанных»));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип(«ЭлементОтбораКомпоновкиДанных»));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(«АдресноеХранение»);
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип(«ЭлементОтбораКомпоновкиДанных»));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(«Объект.Товары.ТипНоменклатуры»);
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыНоменклатуры.Товар;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип(«ЭлементОтбораКомпоновкиДанных»));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(«Объект.Статус»);
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.СтатусыПриходныхОрдеров.КПоступлению;
Источник