Имя: Пароль:
1C
 
Помогите сделать условное оформление в ТЧ документа
0 Михаил Козлов
 
24.01.24
13:50
Есть документ с табличной частью ТЧ. В ТЧ есть реквизит Р1 (ссылка на справочник).
Нужно раскрасить строки ТЧ в форме документа по значению реквизита Р2 реквизита Р1.
Конкретнее: Р1 - ссылка на справочник Проекты, у которого Р2 - ссылка на справочник Виды деятельности.
Пробовал:
ОтборУО = ЭлементУО.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборУО.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ТЧ.Р1.Р2");
Не получается. "Раскраска" по значениям реквизитов ТЧ получается.
1 Волшебник
 
24.01.24
13:56
вместо абстрактных Р1 и Р2 задайте нормальные названия в терминах предметной области: Проект, ВидДеятельности
2 mikecool
 
24.01.24
14:01
(0) если не понимаешь - создай оформление в настройках, повтори кодом и все станет понятно
3 Timon1405
 
24.01.24
14:02
сделал поиск в ERP по маске
"Новый ПолеКомпоновкиДанных\("Объект\.[^\.]+\.[^\.]+\."
через две точки нашлось только установка правого значения компоновки.

    ОтборГруппа = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
    ОтборГруппа.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
    
    ОтборЭлемента = ОтборГруппа.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ФормированиеЗаказов.ДатаПоступления");
    ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
    ОтборЭлемента.ПравоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ФормированиеЗаказов.Период.ДатаОкончания");

может быть левое поле так и не умеет
4 mikecool
 
24.01.24
14:03
5 Fedor-1971
 
24.01.24
14:05
(0) А к чему привяжешься для определения цвета для Р2?
таки в конфигурации есть только предопределённые элементы справочников, но не суть

Ты зачем полез в отборы? Для начала, достань на форму свой реквизит Р2

дальше определяешься с цветами, для чего делаешь реквизиты Формы, например,
красный = Справочник.Р2.найтипокоду("001");
синий = Справочник.Р2.найтипокоду("002");

потом программно формируем Условное оформление
УО = ЭтаФорма.УсловноеОформление.Элементы
нов = УО.Добавить ..... сам посмотри как
нов.ЛевоеЗначение = ПолеР2
нов.Сравнение = Равно
нов.ПравоеЗначение = красный

нов.оформление = ЦветКрасный
6 Михаил Козлов
 
24.01.24
15:07
(2) В настройках не дает выбрать реквизит реквизита.
(3) Тоже грешу на на это, хотя если ПравоеЗначение умеет, почему бы не уметь ЛевоеЗначение.
(4) Читал. В имени поля для ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ИмяПоля) может быть реквизит реквизита ТЧ?
(5) К чему привязаться, знаю. Дальше, честно говоря, не понял: Р2 - реквизит Р1 строк ТЧ.
7 Fedor-1971
 
24.01.24
15:54
(6) Достань свой Р2 в ТЧ, дальше красим по его значению, скорее всего, программно
8 Fedor-1971
 
24.01.24
15:56
7+ т.е. в ТЧ будет Р1, рядом РеквР2 с данными ТЧ.Р1.Р2 (без возможности редактировать и без динамического обновления при изменении в самой карточке Р2)
9 Fedor-1971
 
24.01.24
15:58
(8) Красим по данным в РеквР2
"В имени поля для ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ИмяПоля) может быть реквизит реквизита ТЧ?" - на сколько помню, тут есть ограничение на обращение через точку
10 Timon1405
 
24.01.24
17:52
"Объект.ТЧ.Р1.[Р2]" может прокатить
11 Михаил Козлов
 
24.01.24
18:00
(7) Это менять ТЧ документа, не хотелось бы.
(10) Не прокатило.
12 viraboy
 
24.01.24
20:00
(11) Тч менять не надо. Посмотрите как в типовых с ВидНоменклатуры.ТипНоменклатуры в таблицах работают
13 Михаил Козлов
 
24.01.24
23:53
(12) На форму колонку с нужным реквизитом я вытащил.
Речь об имени поля в Новый ПолеКомпоновкиДанных(ИмяПоля): можно ли "Объект.ТЧ.Р1.Р2" (такое имя задать можно, но отбор не работает). Пробовал использовать в качестве имени поля имя колонки на форме - не работает.
14 Silgis
 
25.01.24
06:11
15 Михаил Козлов
 
25.01.24
07:48
(14) В динамическом списке понятно как: достаточно вытолкнуть в список нужный реквизит. А в ТЧ документа этого реквизита нет.
16 Fedor-1971
 
25.01.24
11:38
(15) можно сделать дополнительный реквизит формы в ТЧ, правда, придётся его заполнять ПриСозданииНаСервере, после изменения Р1 и если нажали кнопку записать (иначе он очищается)
17 Михаил Козлов
 
25.01.24
18:32
(16) Да, была такая мысль. Думал можно проще.