Имя: Пароль:
1C
1С v8
Раскраска программно созданной ТЗ на форме
0 trialex3
 
15.03.23
17:03
Всем привет. Прошу помощи. Какой самый простой способ раскрасить ячейки в программно созданной ТЗ на форме? Количество строк и колонок может сильно варьироваться. Грубо говоря надо красным выделить все нули
1 Garykom
 
гуру
15.03.23
17:05
2 Garykom
 
гуру
15.03.23
17:06
3 arsik
 
гуру
15.03.23
17:06
Примерно как то так

Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Товары.Имя);    
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Цена");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Меньше;
ОтборЭлемента.ПравоеЗначение = 0;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", Новый Цвет(255, 0, 0));
4 trialex3
 
15.03.23
17:20
(3) Как то так получилось

Для каждого КолТЗ из ТЗ.Колонки Цикл
         Если КолТЗ.Имя = "Выпуск" Тогда
             Продолжить;    
         КонецЕсли;
         ЭлементОформления = УсловноеОформление.Элементы.Добавить();
         ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона",WebЦвета.Розовый);
        
         ГруппаЭлементовОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
        
         ГруппаЭлементовОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
         ГруппаЭлементовОтбора.Использование = Истина;
        
         ЭлементОтбора = ГруппаЭлементовОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
         ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(КолТЗ.Имя);  
         ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;   
         ЭлементОтбора.ПравоеЗначение = "0%";   
         ЭлементОтбора.Использование = Истина;
        
         ЭлементОтбора = ГруппаЭлементовОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
         ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(КолТЗ.Имя);  
         ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;   
         ЭлементОтбора.ПравоеЗначение = "0 руб";   
         ЭлементОтбора.Использование = Истина;
        
        
         ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();       
         ПолеОформления.Поле = Новый ПолеКомпоновкиДанных(КолТЗ.Имя);
         ПолеОформления.Использование = Истина;    
     КонецЦикла;
Но пока не работает = надо как то "0,2%" еще в цифру перевести и сравнивать на между
5 arsik
 
гуру
15.03.23
17:22
(4) Что это? :)
6 Garykom
 
гуру
15.03.23
17:26
(4) добавь колонку с цветом да и все
7 trialex3
 
15.03.23
17:26
(5) Ну обход всех колонок и добавление условного оформления...
8 trialex3
 
15.03.23
17:27
(5) столбиков может быть 100 и в любом месте может быть 0
9 arsik
 
гуру
15.03.23
17:28
(8) Что с типом?
10 trialex3
 
15.03.23
17:30
(9) Столбики это строки
11 trialex3
 
15.03.23
17:48
Короче получилось вот так. Соответственно если ячейки это число то условие надо поменять:



Для каждого КолТЗ из ТЗ.Колонки Цикл
         Если КолТЗ.Имя = "Выпуск" Тогда
             Продолжить;    
         КонецЕсли;
         ЭлементОформления = УсловноеОформление.Элементы.Добавить();
         ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона",WebЦвета.Красный);
        
         ГруппаЭлементовОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
        
         ГруппаЭлементовОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
         ГруппаЭлементовОтбора.Использование = Истина;
        
         ЭлементОтбора = ГруппаЭлементовОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
         ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("тзЗагрузка."+КолТЗ.Имя);  
         ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;   
         ЭлементОтбора.ПравоеЗначение = "0%";   
         ЭлементОтбора.Использование = Истина;
        
         ЭлементОтбора = ГруппаЭлементовОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
         ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("тзЗагрузка."+КолТЗ.Имя);  
         ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;   
         ЭлементОтбора.ПравоеЗначение = "0 руб";   
         ЭлементОтбора.Использование = Истина;
        
        
         ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();       
         ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("тзЗагрузка"+КолТЗ.Имя);
         ПолеОформления.Использование = Истина;    
     КонецЦикла;
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн