Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

УФ условное оформление верхний уровень деревоЗначений

УФ условное оформление верхний уровень деревоЗначений
Я
   Popkorm
 
06.04.21 - 11:54
Добрый день.

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

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

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

            //ЭлементОтобора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Тара.ПодобранноеКоличествоТары");

            //ЭлементОтобора.ВидСравнения = ВидСравненияКомпоновкиДанных.МеньшеИлиРавно;

            //ЭлементОтобора.ПравоеЗначение = СтрДР.КоличествоНоменклатуры;

            //ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.Зеленый);

            //ЭлементОтобора.Использование = Истина;

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

            //ЭлементОтобора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Тара.ПодобранноеКоличествоТары");

            //ЭлементОтобора.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;

            //ЭлементОтобора.ПравоеЗначение = СтрДР.КоличествоНоменклатуры;

            //ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.Красный);

            //ЭлементОтобора.Использование = Истина;

            ЭлементОтобора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
            ЭлементОтобора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Тара.Уровень");
            ЭлементОтобора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
            ЭлементОтобора.ПравоеЗначение = 0;
            ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.Красный);
            ЭлементОтобора.Использование = Истина;
            
            
            ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
            ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("ТараПодобранноеКоличествоТары");
            ПолеОформления.Использование = Истина;
            
        КонецЕсли;
    КонецЦикла;
   Fedor-1971
 
10 - 06.04.21 - 15:09
(9)СТР_ДР.Уровень = 1; - заполни уровень для нижних элементов
или СтрДР.Уровень = 1; - т.е. отличительный признак уровня и красить по 1

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

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

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


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

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.