![]() |
![]() |
![]() |
|
Условное оформление колонок табличной части документа на форме | ☑ | ||
---|---|---|---|---|
0
Фиген
18.12.17
✎
12:48
|
Всем привет!
Упускаю какой-то небольшой, но важный, момент при попытке применить условное оформление к табличной части документа на форме. Документ - Тендер - имеет реквизит "ВыбранныйПоставщик" и три табличные части - ТоварыТендера, Поставщики, ЦеныТендера. Первые две части задаются пользователем на форме, третья - формируется в результате разложения первых двух на строки и колонки. На форме взял за основу ТЧ "ТоварыТендера" - количество строк соответствует количеству товаров. К ней программно добавляю колонки "Поставщик1", "Поставщик2" и т.д., в зависимости от того, сколько этих поставщиков во второй ТЧ документа. Хотелось бы подсветить колонку одного из поставщиков другим цветом, если поставщик уже выбран - заполнен реквизит "Выбранный поставщик". Попытки сделать это через условное оформление к успеху не привели. Озадачился вопросом почему? Код взял из примеров в Интернете. Элемент = УсловноеОформление.Элементы.Добавить(); ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ТоварыТендера"+МассивИмен[ИндексВыбранногоПоставщика-1]); // определяем поле Элемент.Использование = Истина; ПолеЭлемента.Использование = Истина; ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ТоварыТендера."+МассивИмен[ИндексВыбранногоПоставщика-1]); // пробовал разные варианты, с объектом, без точек и т.п. ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно; ОтборЭлемента.ПравоеЗначение = 10; // для примера - были разные варианты ОтборЭлемента.Использование = Истина; Элемент.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.Кирпичный); Код - в процедуре ПриСозданииНаСервере. Не работает. Более того, добавил на самой форме конструктором условное оформление поля "Количество" - сравнение с функцией Заполнено(). Тоже не работает! В отладчике видно, что элемент условного оформления этот код добавляет. Также добавляется элемент, заданный конструктором. Но на форме ни один из них не срабатывает. Подскажите, в чём тут может быть дело. |
|||
1
Fragster
гуру
18.12.17
✎
12:52
|
а оформляемые поля дядя вова будет заполнять?
|
|||
2
Фиген
18.12.17
✎
13:27
|
Оформляемое поле "Количество" указано в конструкторе. И оно не оформляется. В коллекции элементов условного оформления, во время выполнения процедуры, поля присутствуют. Но не работает.
|
|||
3
Фиген
18.12.17
✎
13:47
|
(1) Fragster, пардон. Ввёл в заблуждение - УО из конструктора работает. Смотрю в отладчике в чём разница между программным оформлением и оформлением из конструктора и не нахожу её.
Имеешь в виду, что УО работает по ячейкам таблицы и надо на каждой из них его задавать в соответствующем поле? |
|||
4
Фиген
19.12.17
✎
17:23
|
По поводу полей - а это что, не поля?
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ТоварыТендера"+МассивИмен[ИндексВыбранногоПоставщика-1]);// определяем поле ПолеЭлемента.Использование = Истина; Так никто и не откликнется? |
|||
5
Фиген
13.01.18
✎
15:10
|
Для тех, кто споткнулся о тот же камень - всё работает, если к полю компоновки данных - в примере ПолеЭлемента.Поле - задать путь данных без указания объекта по той причине, что это реквизит формы, а не объекта. В моём случае это -МассивИмен[ИндексВыбранногоПоставщика-1].
Я сначала посмотрел в отладчике как система делает это сама с другим полем и вносил те же данные, не учитывая того, что поле системы было полем объекта. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |