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

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

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

Вопрос: почему не срабатывает УО, когда выбираю "Значение10" в поле "Элемент1"?
По теме из базы знаний
Найденные решения
3. Поручик 4674 10.04.13 11:59 Сейчас в теме
(1) Условное оформление в управляемых формах только для табличных полей.
begemot; olsy; slige_work; user1619761; Andrei_Ivanov; forbuk; Necytij; Рамзес; igee12; KirinaAS; Mechanik21; freeek; AKZARD; Rustavelli; klinval; CeHbKA; +16 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. Поручик 4674 10.04.13 11:59 Сейчас в теме
(1) Условное оформление в управляемых формах только для табличных полей.
begemot; olsy; slige_work; user1619761; Andrei_Ivanov; forbuk; Necytij; Рамзес; igee12; KirinaAS; Mechanik21; freeek; AKZARD; Rustavelli; klinval; CeHbKA; +16 Ответить
4. doom2good 138 10.04.13 12:07 Сейчас в теме
(3) Поручик, Спасибо, я так и предположил, но до последнего надеялся... Странно тока, почему тогда в списке выбора поля доступны все поля?
5. Поручик 4674 10.04.13 12:13 Сейчас в теме
(4) Косяк девелоперов. Я тоже по первости тыкался в них.
6. Brawler 455 25.06.15 15:10 Сейчас в теме
(3) Поручик, а я и не туда, долблюсь долблюсь, а оно не пашет, все как с табличными полями ранее делал для поля не табличного и тут засада))
значит по старинке нужно делать))
7. EMelihoff 25.06.15 15:13 Сейчас в теме
(3) Поручик, неправда. Я поля ввода отображаю условным оформлением.
9. Поручик 4674 25.06.15 20:37 Сейчас в теме
(7) Покажи, как. Именно для полей шапки, а не табличных элементов и именно в конфигураторе.
10. Brawler 455 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, а где здесь УсловноеОформление используется?
SagittariusA; Риник; HystriX; +3 Ответить
13. EMelihoff 26.06.15 10:18 Сейчас в теме
(12) spacecraft, условное никак у меня не получилось оно не отрабатывает, я предположил что это связано с тем когда форма создается, нет тех данных которые я указываю для сравнения.
14. Brawler 455 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 234 11.08.16 15:40 Сейчас в теме
(1) doom2good,
Учитесь читать справку, даже во встроенной есть

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

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

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

Удаляет все самописные условия оформления при создании формы - закоменьте её
amiralnar; user1878860; user1552405; AganinEvgeniy; StarMakc; freeek; Egovigor; CratosX; user659168_xec8787; sdemon72; qwertyk; user1000369; denvit; igee12; +14 Ответить
17. rotkivs 06.05.16 11:14 Сейчас в теме
29. qwertyk 05.08.19 15:36 Сейчас в теме
Ты сделал мои 3 часа... (и неизвестное количество после) СПАСИБО ОГРОМНОЕ!
40. amiralnar 9 26.02.24 12:02 Сейчас в теме
(16)
УсловноеОформление


Спасибо!
18. Sergeevich 36 11.08.16 14:41 Сейчас в теме
Столкнулся с похожей ситуацией, в итоге выяснилось по чему не работало.
Оказалось дело в том что столбец по которому идет сравнение должен быть виден в списке (прим. номенклатура)
если скрыть видимость то условное форматирование перестает работать.

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

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


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

Извиняюсь, что колыхнул баян)
d4rkmesa; TryToRun; GlukAl; +3 Ответить
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 страницы и на каждой свой динамический список. Списки с практически одинаковыми запросами, но с чуть разными условиями (сравнивается количество - больше/меньше/равно).
Понадобилось раскрасить каждый список своим цветом для наглядности: добавил всем условное оформление без условий и отборов по полям и задал цвет: в итоге раскрасился только третий список. Много чего пробовал - результат одинаковый. И тут наткнулся на это сообщение, снял у всех (на всякий случай) динамических списков галочку - и ура, все раскрасилось
42. d4rkmesa 05.04.24 14:04 Сейчас в теме
(26)
Просто лучший коммент.
32. kassbar 158 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 Сейчас в теме
(36)Может где-то есть, я хз.
38. dlebedev8 06.12.23 09:06 Сейчас в теме
39. SagittariusA 19.12.23 10:26 Сейчас в теме
(34)
Справочно, если кто будет искать
Прикрепленные файлы:
ОформлениеКомпоновкиДанных (справка).pdf
41. AnPet 2 22.03.24 13:55 Сейчас в теме
Еще вариант странного поведения УО подкину ))

1С:Предприятие 8.3 (8.3.22.2411)
Управление нашей фирмой, редакция 3.0 (3.0.6.126)

Есть реквизит в шапке документа - тип справочник
Делаю УО:
Условие: Объект.СтатусДокумента Равно "Справочник.пмСтатусыСервиса.Выдан"
Оформление: Цвет фона, Цвет текста, Шрифт (полужирный)
Оформляемое поле: СтатусДокумента

Под админом красится все - фон, текст и становится жирным шрифт
По обычным пользователем - фон не красится, остальное применяется

Странная избирательность )

ОТБОЙ ВОЗДУШНОЙ ТРЕВОГИ )

Оказалось, делал для пользователя документ в статусе Выдан ТолькоЧтение
и этот режим меняет фон УО поля.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот