Имя: Пароль:
1C
 
Раскраска строк в табличной части документа.
0 Grekos2
 
07.11.16
12:27
Почитал яндекс и написал вот такой код:

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

   Но почему то раскраски не происходит.
1 Grekos2
 
07.11.16
12:29
Код в процедуре
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
2 FIXXXL
 
07.11.16
12:30
(1) зайди в условное оформление формы и для начала накидай там своё видение раскраски руками, а не кодом
3 Grekos2
 
07.11.16
13:08
Получается , что внутрь номенклатуры не залезть.

Вот так нельзя:
    Новый ПолеКомпоновкиДанных("Объект.Товары.Номенклатура.ПринадлежностьФраншизе");

А можно только так :
   Новый ПолеКомпоновкиДанных("Объект.Товары.Номенклатура");
4 mistеr
 
07.11.16
13:11
(3) Нужно вытащить нужный реквизит в запросе.
5 Grekos2
 
07.11.16
13:37
переделал на вот так вот :

       Эли     = ЭтаФорма.Элементы;
       УсОф = ЭтаФорма.УсловноеОформление;  
       ЭлОформления = УсОф.Элементы.Добавить();    
       ЭлОтбора = ЭлОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
       ЭлОтбора.ЛевоеЗначение     =     Новый ПолеКомпоновкиДанных("Объект.Товары.Номенклатура");
       ЭлОтбора.ВидСравнения    =     ВидСравненияКомпоновкиДанных.ВСписке;
       ЭлОтбора.Использование    =     Истина;
       СЗПравый = Новый СписокЗначений;
       Для каждого стрТЧ из Объект.Товары Цикл
          Если стрТЧ.Номенклатура.ПринадлежностьФраншизе = Перечисления.ПринадлежностьФраншизе.Заказной Тогда
                  СЗПравый.Добавить(стрТЧ.Номенклатура);
          КонецЕсли;    
       КонецЦикла;       
       ЭлОтбора.ПравоеЗначение    =     СЗПравый;
       Элемен                     =     ЭлОформления.Оформление.Элементы[1];
       Элемен.Использование        =    Истина;
       Элемен.Значение            =    Новый Цвет(0,255,0);
6 Grekos2
 
07.11.16
13:37
Все равно не работает
7 h-sp
 
07.11.16
13:45
может сначала ЭлОтбора.ВидСравнения задать, а не потом?
8 Мимохожий Однако
 
07.11.16
13:55
Включи полный поиск по типовой конфигурации ".УсловноеОформление". Глядишь и найдёшь пример.
9 Grekos2
 
07.11.16
14:15
(7) Не помогло
10 разработчик 1с
 
07.11.16
14:17
почему в форме настройками не делаешь?
11 Grekos2
 
07.11.16
14:17
Воспользовался гениальным советом (8).

Добавил:

       ПолеЭлемента = ЭлОформления.Поля.Элементы.Добавить();
       ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Товары.Имя);

Заработало.
12 Grekos2
 
07.11.16
14:17
(10) Не разобрался как заполнять правое значение в отборе потому что.
13 разработчик 1с
 
07.11.16
14:32
(12) когда слева выбираешь реквизит с типом перечисление, 1с автоматом справа выдаёт список значений этого перечисления для выбора