Не работает условное оформление управляемой формы. Почему?

1. doom2good 71 10.04.13 11:18 Сейчас в теме
Есть два элемента:
"Элемент1" (поле ввода, путь к данным "Объект.Реквизит1" с типом Перечисление)
"Элемент2" (поле ввода, путь к данным "Объект.Реквизит2" с типом Строка)

Делаю условное оформление (в конфигураторе, НЕ программно):
Использование = "Истина"
Оформление = "Видимость = Ложь"
Условие = "Объект.Реквизит1 Равно 'Перечисление.Перечисление1.Значение10'"
Оформляемые поля = "Элемент2"

Вопрос: почему не срабатывает УО, когда выбираю "Значение10" в поле "Элемент1"?
По теме из базы знаний
Найденные решения
3. Поручик 4660 10.04.13 11:59 Сейчас в теме
(1) Условное оформление в управляемых формах только для табличных полей.
Andrei_Ivanov; forbuk; Necytij; Рамзес; igee12; KirinaAS; Mechanik21; freeek; AKZARD; Rustavelli; klinval; CeHbKA; +12 Ответить
Остальные ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
3. Поручик 4660 10.04.13 11:59 Сейчас в теме
(1) Условное оформление в управляемых формах только для табличных полей.
Andrei_Ivanov; forbuk; Necytij; Рамзес; igee12; KirinaAS; Mechanik21; freeek; AKZARD; Rustavelli; klinval; CeHbKA; +12 Ответить
4. doom2good 71 10.04.13 12:07 Сейчас в теме
(3) Поручик, Спасибо, я так и предположил, но до последнего надеялся... Странно тока, почему тогда в списке выбора поля доступны все поля?
5. Поручик 4660 10.04.13 12:13 Сейчас в теме
(4) Косяк девелоперов. Я тоже по первости тыкался в них.
6. Brawler 444 25.06.15 15:10 Сейчас в теме
(3) Поручик, а я и не туда, долблюсь долблюсь, а оно не пашет, все как с табличными полями ранее делал для поля не табличного и тут засада))
значит по старинке нужно делать))
7. EMelihoff 25.06.15 15:13 Сейчас в теме
(3) Поручик, неправда. Я поля ввода отображаю условным оформлением.
9. Поручик 4660 25.06.15 20:37 Сейчас в теме
(7) Покажи, как. Именно для полей шапки, а не табличных элементов и именно в конфигураторе.
10. Brawler 444 26.06.15 08:50 Сейчас в теме
(7) EMelihoff,

Условия задачи.
Есть два реквизита во внешней обработке:
- ПолеДоступностьюКоторогоНужноУправлять - Любой тип
- ПолеКотороеРулитДоступностьюДругогоПоля - Булево

Оба реквизита кинуты на форму.
Тыкая галочку у реквизита ПолеКотороеРулитДоступностьюДругогоПоля, ничего не происходит с полем ПолеДоступностьюКоторогоНужноУправлять, а хотелось бы чтобы оно меняло доступность.

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

КонецПроцедуры
Показать
11. EMelihoff 26.06.15 09:57 Сейчас в теме
(10) Brawler,
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	Если ЭтотОбъект.Запись.Количество = 0 Тогда
	ЭтотОбъект.Запись.ДатаДобавления  = ТекущаяДата();
	КонецЕсли; 	
	ЭтотОбъект.Запись.Редактор = ПользователиИнформационнойБазы.ТекущийПользователь().Имя;
	Если ЭтотОбъект.Запись.ТипЗавода = Перечисления.ТипыЗаводов.Бетонный Тогда
		ЭтотОбъект.Элементы.ВесВЕдИзм.Видимость = Истина;	
		ЭтотОбъект.Элементы.Количество.Видимость = Ложь;	
		ЭтотОбъект.Элементы.ВесВЕдИзм.АктивизироватьПоУмолчанию = Истина;	
	Иначе
		ЭтотОбъект.Элементы.ВесВЕдИзм.Видимость = Ложь;	
		ЭтотОбъект.Элементы.Количество.Видимость = Истина;	
		ЭтотОбъект.Элементы.Количество.АктивизироватьПоУмолчанию = Истина;	
	КонецЕсли;	
	

КонецПроцедуры
Показать
12. spacecraft 26.06.15 10:01 Сейчас в теме
(11) EMelihoff, а где здесь УсловноеОформление используется?
Риник; HystriX; +2 Ответить
13. EMelihoff 26.06.15 10:18 Сейчас в теме
(12) spacecraft, условное никак у меня не получилось оно не отрабатывает, я предположил что это связано с тем когда форма создается, нет тех данных которые я указываю для сравнения.
14. Brawler 444 26.06.15 10:43 Сейчас в теме
(13) EMelihoff, так это же не так, условное форматирование задается на сервере, в контексте сервера значения есть в реквизитах (вернее доступны на сервере), да это и не важно, при описании условного оформления мы явно указываем какой реквизит нужно всегда сравнивать с неким заранее заданным значением и если сравнение проходит, то должно что-то происходить в оформлении, в частности мне нужно чтобы менялась Доступность поля в зависимости от значений другого поля


картина непонятная мне на самом деле, почему не пашет условное оформление, наверное мат часть плохо знаю
из формы документа РегламентнаяОперация БП 3.0.41
Процедура УстановитьУсловноеОформление()
	
	УсловноеОформление.Элементы.Очистить();
	
	
	// Организация, ПредставлениеПериодаРегистрации
	
	ЭлементУО = УсловноеОформление.Элементы.Добавить();
	
	КомпоновкаДанныхКлиентСервер.ДобавитьОформляемоеПоле(ЭлементУО.Поля, "Организация");
	КомпоновкаДанныхКлиентСервер.ДобавитьОформляемоеПоле(ЭлементУО.Поля, "ПредставлениеПериодаРегистрации");
	
	ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(ЭлементУО.Отбор,
		"Объект.Состояние", ВидСравненияКомпоновкиДанных.Равно, Перечисления.ВидыСостоянийРегламентныхОпераций.Выполнено);
	
	ЭлементУО.Оформление.УстановитьЗначениеПараметра("Доступность", Ложь);
	
	
	// ГиперСсылкаОшибки, КартинкаОшибка
	
	ЭлементУО = УсловноеОформление.Элементы.Добавить();
	
	КомпоновкаДанныхКлиентСервер.ДобавитьОформляемоеПоле(ЭлементУО.Поля, "ГиперСсылкаОшибки");
	КомпоновкаДанныхКлиентСервер.ДобавитьОформляемоеПоле(ЭлементУО.Поля, "КартинкаОшибка");
	
	ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(ЭлементУО.Отбор,
		"ЕстьОшибки", ВидСравненияКомпоновкиДанных.Равно, Ложь);
	
	ЭлементУО.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
	
КонецПроцедуры
Показать


и тут же на тебе
&НаКлиентеНаСервереБезКонтекста
Процедура УправлениеФормой(Форма)
	
	Элементы = Форма.Элементы;
	Объект   = Форма.Объект;
	
	Если Объект.Состояние = ПредопределенноеЗначение("Перечисление.ВидыСостоянийРегламентныхОпераций.ВыполненоСОшибками") Тогда
		Элементы.СтраницаОшибок.ТекущаяСтраница = Элементы.СтраницаОшибок.ПодчиненныеЭлементы.ЗаполненнаяСтранца;
	Иначе
		Элементы.СтраницаОшибок.ТекущаяСтраница = Элементы.СтраницаОшибок.ПодчиненныеЭлементы.ПустаяСтраница;
	КонецЕсли;
	
	Элементы.Организация.Доступность =
		Объект.Состояние <> ПредопределенноеЗначение("Перечисление.ВидыСостоянийРегламентныхОпераций.Выполнено");
	Элементы.ПредставлениеПериодаРегистрации.Доступность =
		Объект.Состояние <> ПредопределенноеЗначение("Перечисление.ВидыСостоянийРегламентныхОпераций.Выполнено");
	
	Если Элементы.Найти("ФормаКомандаОтменить") <> Неопределено Тогда
		Элементы.ФормаКомандаОтменить.Доступность = НЕ Форма.Параметры.Ключ.Пустая();
	КонецЕсли;
	
	Элементы.ПодменюСправкаРасчет.Доступность =
		Объект.Состояние = ПредопределенноеЗначение("Перечисление.ВидыСостоянийРегламентныхОпераций.Выполнено");
	
КонецПроцедуры // УправлениеФормой()
Показать

И нафига тогда условное оформление описано?
Mnemonik; igee12; Sergeevich; +3 Ответить
15. EMelihoff 26.06.15 11:22 Сейчас в теме
(14) Brawler, у меня не работало, я сделал как написал, если ето-то даст ответ почему, буду признателен!
30. bolotnikofff 17.06.20 10:07 Сейчас в теме
(3) уж столько лет прошло, а воз и ныне там
8. EMelihoff 25.06.15 15:15 Сейчас в теме
(1) doom2good, попробуйте программно, может увидите в чём косяк, я тоже делал УО и не получалось, сделал програмно, понял что в данном контектсе у меня не все данные и УО их не видит
20. bmk74 227 11.08.16 15:40 Сейчас в теме
(1) doom2good,
Учитесь читать справку, даже во встроенной есть

23. ОтметкаНезаполненного(MarkIncomplete) - отмечать ячейку как незаполненную - тип значения Булево;
24. Видимость(Visible) - Булево. Используется только для поля, расположенного в таблице (колонки);
25. Доступность(Enabled) - Булево. Используется только для поля, расположенного в таблице (колонки);
26. ТолькоПросмотр(ReadOnly) - Булево. Используется только для поля, расположенного в таблице (колонки);
27. Отображать(Show) - Булево. Использует только для поля, расположенного в таблице (колонки).

Ой не заметил что тема то баян :)
user1974505; kirich; Necytij; user1232941; PavelKolobkov; Elv_Ra; romanagatiy; volend; +8 Ответить
2. doom2good 71 10.04.13 11:20 Сейчас в теме
т.е. почему поле "Элемент2" не становится невидимым?
16. communist 3 15.02.16 20:14 Сейчас в теме
В процедуре
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

строка кода
УсловноеОформление.Элементы.Очистить();

Удаляет все самописные условия оформления при создании формы - закоменьте её
user1878860; user1552405; AganinEvgeniy; StarMakc; freeek; Egovigor; CratosX; user659168_xec8787; sdemon72; qwertyk; user1000369; denvit; igee12; +13 Ответить
17. rotkivs 06.05.16 11:14 Сейчас в теме
29. qwertyk 05.08.19 15:36 Сейчас в теме
Ты сделал мои 3 часа... (и неизвестное количество после) СПАСИБО ОГРОМНОЕ!
18. Sergeevich 35 11.08.16 14:41 Сейчас в теме
Столкнулся с похожей ситуацией, в итоге выяснилось по чему не работало.
Оказалось дело в том что столбец по которому идет сравнение должен быть виден в списке (прим. номенклатура)
если скрыть видимость то условное форматирование перестает работать.

Может кому то поможет.
BoBaH; user1720753; igee12; AlTrump; amaksimov; +5 Ответить
19. amaksimov 11.08.16 15:00 Сейчас в теме
(18) Sergeevich, а галочка "Использовать всегда" не помогает?
Спасибо
21. Quasar 23.08.16 17:03 Сейчас в теме
Кто-нибудь сталкивался с ситуацией когда одно и тоже условное оформление работает если указать его в условном оформлении формы и не работает если его же установить программно в модуле формы?
22. qeos 115 24.08.16 10:53 Сейчас в теме
(21) Quasar, присоединяюсь к вопросу. ты не решил проблему?
23. bmk74 227 24.08.16 11:08 Сейчас в теме
(22) qeos, Скорее всего просто не правильно устанавливаете , код покажите...
24. qeos 115 24.08.16 13:04 Сейчас в теме
(23) bmk74, да не, все правильно. ибо если руками создано оформление то работает, а программно "как бы" не применяется. однако если "Видимость" не работает, то "Отображение" - нет
код выкладывать не буду - уже похерил. грубо говоря:
ЭтаФорма.УсловноеОформление.Элементы[0].Отбор.Элементы[0].ЛевоеЗначение = ...
25. bmk74 227 24.08.16 18:30 Сейчас в теме
(24) qeos, Это че это у вас такое ?
ЭтаФорма.УсловноеОформление.Элементы[0].Отбор.Элементы[0].ЛевоеЗначение = ...

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


Или вы пытаетесь переназначить ? уже установленное в форме ?
26. Socradt 08.10.18 00:19 Сейчас в теме
Если вдруг у Вас не получилось сделать это в конфигураторе несмотря на всё вышепрочитанное - мне помогло снять галочку: "Включать в пользовательские настройки" на странице динамического списка.

Извиняюсь, что колыхнул баян)
TryToRun; GlukAl; +2 Ответить
27. CodeNull 28.01.19 15:41 Сейчас в теме
(26) А вот я тоже колыхну этот боян! Мне наоборот, галочка "Включать в пользовательские настройки" помогла, после ее установки условное оформление стало работать для пользователей.

Что не так с условным оформлением? Почему оно непонятным образом зависит от подобных флагов? А самое главное, почему одним помогает установка этого флага, а другим его снятие?
28. Socradt 19.02.19 23:30 Сейчас в теме
(27) Odin ass...
Так постоянно же, одно прикрутят, в двух местах открутится, в третьем треснет.
sergiz; CratosX; +2 Ответить
31. TryToRun 30.11.21 14:10 Сейчас в теме
(26) Огромнейшее спасибо, помогло. Ситуация еще более интересная:
-мобильный клиент, форма документа, на ней 3 страницы и на каждой свой динамический список. Списки с практически одинаковыми запросами, но с чуть разными условиями (сравнивается количество - больше/меньше/равно).
Понадобилось раскрасить каждый список своим цветом для наглядности: добавил всем условное оформление без условий и отборов по полям и задал цвет: в итоге раскрасился только третий список. Много чего пробовал - результат одинаковый. И тут наткнулся на это сообщение, снял у всех (на всякий случай) динамических списков галочку - и ура, все раскрасилось
32. kassbar 155 18.03.22 21:43 Сейчас в теме
Не удалось воспроизвести работающий код условного оформления параметров "Доступность" и "Отображать" для ячейки табличного поля с типом "Строка", часа 3 потратил. Брал платформы с 8.3.8 по 8.3.18.
Работает "Только просмотр" и "Видимость", как программно так и через интерфейс конфигуратора, и только при условии что таблица формы является реквизитов объекта.
33. nurk 01.03.23 04:16 Сейчас в теме
Еще раз колыхнем. Еще бывает причина в том, что в форме списка размещен Динамический список. Задавая условное оформление для формы списка, оно не отрабатывает для динамического списка. Нужно задавать именно для динамического списка условное оформление.

Здесь подробно: https://1clancer.ru/article/pochemu_mozhet_ne_rabotat_uslovnoe_oformlenie_na_­upravlyaemoj_forme_1106

Вот так:

ЭлементОформления = Форма.Список.УсловноеОформление.Элементы.Добавить();
ЦветФона = ЭлементОформления.Оформление.Элементы.Найти("ЦветФона");
ЦветФона.Значение = WebЦвета.СветлоРозовый;
ЦветФона.Использование = Истина;
34. impextr 88 28.09.23 09:46 Сейчас в теме
Платформа 8.3.20
Есть реквизит шапки документа, выведен на форму. Установил для него 2 условных оформления по одному и тому же условию:
1) цвет текста
2) видимость

Первое работает. Второе нет.
В чем может быть причина?
35. Sashares 34 28.09.23 10:10 Сейчас в теме
(34)В том что это реквизит шапки формы, а не таблицы.
Для шапки формы условное оформление работает сильно ограничено.
36. impextr 88 28.09.23 10:16 Сейчас в теме
(35) ограничения касаются того, какие именно свойства работают, а какие нет?
а где-то есть полное описание что работает, а что нет?
37. Sashares 34 28.09.23 10:24 Сейчас в теме
Оставьте свое сообщение
Вакансии
1С-Программист (интегратор Битрикс24)
Санкт-Петербург
зарплата от 150 000 руб. до 250 000 руб.
Полный день

Разработчик 1С
Москва
зарплата от 100 000 руб.
Временный (на проект)

Разработчик 1С
Москва
зарплата от 150 000 руб.
Полный день

Программист
Санкт-Петербург
зарплата от 180 000 руб. до 240 000 руб.
Полный день

Разработчик 1С
Москва
зарплата от 150 000 руб. до 250 000 руб.
Полный день