Имя: Пароль:
1C
1С v8
УФ условное оформление верхний уровень деревоЗначений
,
0 Popkorm
 
06.04.21
11:54
Добрый день.

Может кто подскажет как применить условное оформление только верхнего уровня, сейчас подкрашивается все строки:

        Если СтрДР.КоличествоНоменклатуры >= СтрДР.ПодобранноеКоличествоТары Тогда
            
            ЭлементОформления = ЭтотОбъект.УсловноеОформление.Элементы.Добавить();
            ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
            
            ЭлементОтобора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
            ЭлементОтобора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Тара.ПодобранноеКоличествоТары");
            ЭлементОтобора.ВидСравнения = ВидСравненияКомпоновкиДанных.Меньше;
            ЭлементОтобора.ПравоеЗначение = СтрДР.КоличествоНоменклатуры;
            ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.Зеленый);
            ЭлементОтобора.Использование = Истина;
            
            ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
            ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("ТараПодобранноеКоличествоТары");
            ПолеОформления.Использование = Истина;
            
            
        ИначеЕсли СтрДР.КоличествоНоменклатуры < СтрДР.ПодобранноеКоличествоТары Тогда
            
            ЭлементОформления = ЭтотОбъект.УсловноеОформление.Элементы.Добавить();
            ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
            
            ЭлементОтобора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
            ЭлементОтобора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Тара.ПодобранноеКоличествоТары");
            ЭлементОтобора.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
            ЭлементОтобора.ПравоеЗначение = СтрДР.КоличествоНоменклатуры;
            ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.Красный);
            ЭлементОтобора.Использование = Истина;
            
            ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
            ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("ТараПодобранноеКоличествоТары");
            ПолеОформления.Использование = Истина;
            
        КонецЕсли;
1 Жан Пердежон
 
06.04.21
12:58
добавляй колонку "Уровень" в дерево
2 Popkorm
 
06.04.21
13:00
(1)  а дальше что с ним как работать?
3 Жан Пердежон
 
06.04.21
13:04
(2) заполнить как надо и условное оформление настроить
4 Popkorm
 
06.04.21
13:11
(3) оформление настроить через форму?
5 vicof
 
06.04.21
13:23
(4) Епт. Да также кодом.
ЭлементОтобора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтобора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Тара.Уровень");
ЭлементОтобора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтобора.ПравоеЗначение = 0;
6 Popkorm
 
06.04.21
14:16
(5) ничего не изменилось, так же все строки подкрашивает

            ЭлементОтобора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
            ЭлементОтобора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Тара.Уровень");
            ЭлементОтобора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
            ЭлементОтобора.ПравоеЗначение = 0;
            ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.Зеленый);
            ЭлементОтобора.Использование = Истина;
            
            
            ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
            ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("ТараПодобранноеКоличествоТары");
            ПолеОформления.Использование = Истина;
7 Popkorm
 
06.04.21
14:18
Уровню присваиваю 0 если строка является родителем
8 Fedor-1971
 
06.04.21
14:46
(7) покажи код заполнения
9 Popkorm
 
06.04.21
14:56
(8)     Дерево_Тара = Тара.ПолучитьЭлементы();
    
    Для Каждого СтрДР ИЗ Дерево_Тара Цикл
        ПодобранноеКоличествоТары = 0;
        Для Каждого Стр_ДР ИЗ СтрДР.ПолучитьЭлементы() Цикл
            Если Стр_ДР.МинимальноеКоличествоУпаковокМногооборотнойТары И Стр_ДР.ПодобранноеКоличествоТары Тогда
                 ПодобранноеКоличествоТары = Стр_ДР.МинимальноеКоличествоУпаковокМногооборотнойТары * Стр_ДР.ПодобранноеКоличествоТары+ПодобранноеКоличествоТары;
            КонецЕсли;
        КонецЦикла;
        
        СтрДР.ПодобранноеКоличествоТары   = ПодобранноеКоличествоТары;
        СтрДР.Уровень = 0;
        
        Если СтрДР.КоличествоНоменклатуры >= СтрДР.ПодобранноеКоличествоТары Тогда
            
            ЭлементОформления = ЭтотОбъект.УсловноеОформление.Элементы.Добавить();
            ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
            
            //ЭлементОтобора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
            //ЭлементОтобора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Тара.ПодобранноеКоличествоТары");
            //ЭлементОтобора.ВидСравнения = ВидСравненияКомпоновкиДанных.МеньшеИлиРавно;
            //ЭлементОтобора.ПравоеЗначение = СтрДР.КоличествоНоменклатуры;
            //ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.Зеленый);
            //ЭлементОтобора.Использование = Истина;
            
            ЭлементОтобора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
            ЭлементОтобора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Тара.Уровень");
            ЭлементОтобора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
            ЭлементОтобора.ПравоеЗначение = 0;
            ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.Зеленый);
            ЭлементОтобора.Использование = Истина;
            
            
            ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
            ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("ТараПодобранноеКоличествоТары");
            ПолеОформления.Использование = Истина;
            
            
            
        ИначеЕсли СтрДР.КоличествоНоменклатуры < СтрДР.ПодобранноеКоличествоТары Тогда
            
            ЭлементОформления = ЭтотОбъект.УсловноеОформление.Элементы.Добавить();
            ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
            
            //ЭлементОтобора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
            //ЭлементОтобора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Тара.ПодобранноеКоличествоТары");
            //ЭлементОтобора.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
            //ЭлементОтобора.ПравоеЗначение = СтрДР.КоличествоНоменклатуры;
            //ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.Красный);
            //ЭлементОтобора.Использование = Истина;
            ЭлементОтобора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
            ЭлементОтобора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Тара.Уровень");
            ЭлементОтобора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
            ЭлементОтобора.ПравоеЗначение = 0;
            ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.Красный);
            ЭлементОтобора.Использование = Истина;
            
            
            ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
            ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("ТараПодобранноеКоличествоТары");
            ПолеОформления.Использование = Истина;
            
        КонецЕсли;
    КонецЦикла;
10 Fedor-1971
 
06.04.21
15:09
(9)СТР_ДР.Уровень = 1; - заполни уровень для нижних элементов

или СтрДР.Уровень = 1; - т.е. отличительный признак уровня и красить по 1

Из цикла убери условное оформление, его надо устанавливать один раз, а не для каждой строки верхнего уровня
11 Popkorm
 
06.04.21
15:55
(10) точно, за циклом. Благодарю.

Может подскажешь как можно у верхнего родителя преобразовать в строку, например 240 л.

https://clip2net.com/s/4bApxCg


можно конечно на дереве эту колонку сделать строковой, но больно много где эта дерево перезаполняется
12 Fedor-1971
 
06.04.21
16:07
(11) Добавь ещё одну колонку со строковым представлением, где надо достанешь число, в другом месте строку