Имя: Пароль:
1C
1С v8
Вопрос по условному оформлению дерева на управляемой форме
, ,
0 al_zzz
 
09.12.21
08:40
Хочу установить условное оформление колонки дерева таким образом, чтоб вместо его значения выводилось значение из другой колонки.
Пытаюсь сделать так:
        
        УО = ЭтаФорма.УсловноеОформление;  
    УО.Элементы.Очистить();  
    
    ЭлементУО = УО.Элементы.Добавить();
    
    Оформляемоеполе = ЭлементУО.Поля.Элементы.Добавить(); // Поля таблицы для которых будет действовать оформление
    Оформляемоеполе.Поле = Новый ПолеКомпоновкиДанных("ДеревоНоменклатурыНоменклатураИзОблака");
    Оформляемоеполе.Использование = ИСТИНА;

    ЭлементУО.Оформление.УстановитьЗначениеПараметра("Текст", Новый ПолеКомпоновкиДанных("ДеревоНоменклатурыНоменклатураИзОблакаСТР"));

    По факту, если я меняю значение в колонке "НоменклатураИзОблакаСТР", то колонка "НоменклатураИзОблака" как была пустой, так и отображается.
    ЧЯДНТ? Можно ли как-то вообще это сделать?
1 Мимохожий Однако
 
09.12.21
08:56
Условное оформление не предполагает изменение значений поля. Оформление меняет цвет, видимость, вывод и т.п.
2 youalex
 
09.12.21
09:05
А если
ЭлементУО.Оформление.УстановитьЗначениеПараметра("Текст", Новый ПолеКомпоновкиДанных("ДеревоНоменклатуры.НоменклатураИзОблакаСТР"));
3 youalex
 
09.12.21
09:14
+ отбор нужно добавить все равно, который будет Истина
4 Вафель
 
09.12.21
09:26
Нужно добавить текстовую колонку и заполнять ее по алгоритму
5 al_zzz
 
09.12.21
09:33
(3) Вот точно - отбор не добавлял. Попробую.
(2) Тоже попробую вариант.
(4) Ага, я так и хотел.
Спасибо! Отпишусь, по результату.
6 al_zzz
 
09.12.21
10:07
Переделал:
ЭлементУО = УО.Элементы.Добавить();
    
    Оформляемоеполе = ЭлементУО.Поля.Элементы.Добавить(); // Поля таблицы для которых будет действовать оформление
    Оформляемоеполе.Поле = Новый ПолеКомпоновкиДанных("ДеревоНоменклатурыНоменклатураИзОблака");
    Оформляемоеполе.Использование = ИСТИНА;

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

Но не взлетело.
7 youalex
 
09.12.21
10:13
(6) ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоНоменклатуры.НоменклатураИзОблакаСТР");
Или просто .ЛевоеЗначение = Истина; .ПравоеЗначение = Истина
8 al_zzz
 
09.12.21
10:38
ЭлементОтбора = ЭлементУО.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); // отбор текущей строки таблицы
    ЭлементОтбора.Использование = Истина;
    ЭлементОтбора.ЛевоеЗначение = Истина;//Новый ПолеКомпоновкиДанных("ДеревоНоменклатурыНоменклатураИзОблакаСТР");
    ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
    ЭлементОтбора.ПравоеЗначение = Истина;
    
    ЭлементУО.Оформление.УстановитьЗначениеПараметра("Текст", Новый ПолеКомпоновкиДанных("ДеревоНоменклатуры.НоменклатураИзОблакаСТР"));
Тоже не хочет работать.
Что ещё можно попробовать?
9 youalex
 
09.12.21
11:25
(8) Попробуй в диалоге (свойства формы, закладка Оформление)  накликать это УО, код пока убрать.
Если заработает, смотри в отладке что там.
у меня вот такое для ТЧ точно работает

    УО = ЭтаФорма.УсловноеОформление;  
    УО.Элементы.Очистить();  
    ЭлементУО = УО.Элементы.Добавить();

    Оформляемоеполе = ЭлементУО.Поля.Элементы.Добавить(); // Поля таблицы для которых будет действовать оформление
    Оформляемоеполе.Поле = Новый ПолеКомпоновкиДанных("ТабличнаяЧасть1Реквизит2");
    Оформляемоеполе.Использование = ИСТИНА;

    ЭлементУО.Оформление.УстановитьЗначениеПараметра("Текст", Новый ПолеКомпоновкиДанных("Объект.ТабличнаяЧасть1.Реквизит1"));

    ЭлОтбора = ЭлементУО.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлОтбора.Использование = Истина;
    ЭлОтбора.ЛевоеЗначение = Истина;
    ЭлОтбора.ПравоеЗначение= Истина;
10 al_zzz
 
09.12.21
18:10
Получилось, когда я условное оформление настроил через свойства формы.
С кодом никак не получилось.
11 sitex
 
naïve
09.12.21
19:05
(10) Потому что это дичь вот и не получилось . смотри "СписокПриПолученииДанныхНаСервере"
12 youalex
 
09.12.21
20:02
(11) так там не ДС скорее всего, а ДанныеФормыДерево

(10) сравни элементы УО который ты в форме накликал, и который кодом заполняешь. Может даже где-то есть готовая обработка которая транслирует текущее УО в программный код)
13 al_zzz
 
10.12.21
09:49
(12) Всё верно.
14 al_zzz
 
10.12.21
09:54
(12) Мне достаточно так как сейчас работает. Ваш код, кстати, тоже попробовал, переделав под свой случай, но он тоже не заработал.
15 al_zzz
 
10.12.21
09:55
Возможно, в дереве дело.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс