Имя: Пароль:
1C
1С v8
УТ 11. Раскрасить табличную часть в документе
0 Румата
 
20.02.18
09:17
Обработка "УправлениеОтгрузкой" в стандартной УТ 11. Хочу по состоянию документов раскрасить их. Написал вот такой код :


МассивИменКолонокДляПодсветки = Новый Массив;
    МассивИменКолонокДляПодсветки.Добавить(Элементы.РаспоряженияНаОтгрузку.ПодчиненныеЭлементы.РаспоряженияНаОтгрузкуПолучатель.Имя);
    МассивИменКолонокДляПодсветки.Добавить(Элементы.РаспоряженияНаОтгрузку.ПодчиненныеЭлементы.РаспоряженияНаОтгрузкуГруппаТипДокумента.Имя);
    МассивИменКолонокДляПодсветки.Добавить(Элементы.РаспоряженияНаОтгрузку.ПодчиненныеЭлементы.РаспоряженияНаОтгрузкуРаспоряжениеНомер.Имя);
    МассивИменКолонокДляПодсветки.Добавить(Элементы.РаспоряженияНаОтгрузку.ПодчиненныеЭлементы.РаспоряженияНаОтгрузкуРаспоряжениеДата.Имя);
    МассивИменКолонокДляПодсветки.Добавить(Элементы.РаспоряженияНаОтгрузку.ПодчиненныеЭлементы.РаспоряженияНаОтгрузкуСостояние.Имя);
    МассивИменКолонокДляПодсветки.Добавить(Элементы.РаспоряженияНаОтгрузку.ПодчиненныеЭлементы.РаспоряженияНаОтгрузкуРаспоряжение.Имя);
    
    
    Для каждого ТекЭлемент из МассивИменКолонокДляПодсветки Цикл
        ОформляемоеПоле      = ЭлементОформления.Поля.Элементы.Добавить();
        ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных(ТекЭлемент);
    КонецЦикла;

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


=====================================

Условие на оформление не срабатывает. Подскажите почему ?
1 Румата
 
20.02.18
09:20
Пробовал вот так писать :

ЭлементУсловия.ПравоеЗначение = "отгрузка";
    ЭлементУсловия.ВидСравнения   = ВидСравненияКомпоновкиДанных.Содержит;

Все равно условие не срабатывает ...
2 Румата
 
20.02.18
09:22
В названии темы ошибся -  таблицу надо раскрасить в обработке !!!!
3 FIXXXL
 
20.02.18
09:24
(0) без кода пробовал?
4 Румата
 
20.02.18
09:27
(FIXXXL) Без кода тоже пробовал, тоже не получается, там все рано на эту колонку надо отбор поставить....

Только начинаю осваивать управляемые формы... Помогите пожалуйста разобраться.
5 Румата
 
20.02.18
09:29
Проблема в том, что я не могу понять что находится в колонке "РаспоряженияНаОтгрузкуСостояние". Текст ? Или перечисление ? Или ещё что-то ..
6 Румата
 
20.02.18
09:36
Вот такой код работает, только когда в модуле формы заменяю процедуру :

&НаСервере
Процедура УстановитьУсловноеОформление()

    УсловноеОформление.Элементы.Очистить();
    
    
      
    МассивИменКолонокДляПодсветки = Новый Массив;
    МассивИменКолонокДляПодсветки.Добавить(Элементы.РаспоряженияНаОтгрузку.ПодчиненныеЭлементы.РаспоряженияНаОтгрузкуПолучатель.Имя);
    МассивИменКолонокДляПодсветки.Добавить(Элементы.РаспоряженияНаОтгрузку.ПодчиненныеЭлементы.РаспоряженияНаОтгрузкуГруппаТипДокумента.Имя);
    МассивИменКолонокДляПодсветки.Добавить(Элементы.РаспоряженияНаОтгрузку.ПодчиненныеЭлементы.РаспоряженияНаОтгрузкуРаспоряжениеНомер.Имя);
    МассивИменКолонокДляПодсветки.Добавить(Элементы.РаспоряженияНаОтгрузку.ПодчиненныеЭлементы.РаспоряженияНаОтгрузкуРаспоряжениеДата.Имя);
    МассивИменКолонокДляПодсветки.Добавить(Элементы.РаспоряженияНаОтгрузку.ПодчиненныеЭлементы.РаспоряженияНаОтгрузкуСостояние.Имя);
    МассивИменКолонокДляПодсветки.Добавить(Элементы.РаспоряженияНаОтгрузку.ПодчиненныеЭлементы.РаспоряженияНаОтгрузкуРаспоряжение.Имя);
    
    

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

=======================

Но опять же работает только когда ВидСравнения  = идСравненияКомпоновкиДанных.НЕРавно;

Если ставлю условие Равно, отбор не работает...
7 Румата
 
20.02.18
09:39
Получается все проблема в этих строках :

ЭлементУсловия.ПравоеЗначение = Перечисления.СостоянияОтбораТоваров.ОжидаетсяОтгрузка;
ЭлементУсловия.ВидСравнения   = ВидСравненияКомпоновкиДанных.Равно;  

Я пробовал вот так :

ЭлементУсловия.ПравоеЗначение = "Отгрузка";
ЭлементУсловия.ВидСравнения   = ВидСравненияКомпоновкиДанных.Содержит;  

Не работает ни один из вариантов.
8 FIXXXL
 
20.02.18
09:48
(7) смотри в отладчике вот это лучше
"Объект.РаспоряженияНаОтгрузку.РаспоряженияНаОтгрузкуСостояние"

смотри какой тип там лежит в таблице
9 Румата
 
20.02.18
10:03
(FIXXXL) В этой же процедуре поставил точку остановы. Смотрю знаение "объект.РаспоряженияНаОтгрузку" - Поле объекта не обнаружено "РаспоряженияНаОтгрузку"
10 Румата
 
20.02.18
10:15
Вот так посмотрел в отладчике в процедуре "ПриОткрытии":

этаформа.РаспоряженияНаОтгрузку[0].Состояние = "В процессе отбора"

и есть вот такое значение:

этаформа.РаспоряженияНаОтгрузку[1].Состояние = "Ожидается отгрузка"

Тип строка.

Поменял условие на такое :
ЭлементУсловия.ПравоеЗначение = "Ожидается отгрузка";
    ЭлементУсловия.ВидСравнения   = ВидСравненияКомпоновкиДанных.Равно;

Не срабатывает условие!
11 catena
 
20.02.18
10:17
этаформа.РаспоряженияНаОтгрузку[0].Состояние
РаспоряженияНаОтгрузку.РаспоряженияНаОтгрузкуСостояние

По-моему разные пути, не?
12 catena
 
20.02.18
10:17
Что там в таблице? ДС?
13 Румата
 
20.02.18
10:50
Разобрался, надо было вместо :
ПутьКПризнакуТребуетсяСертификация = "Объект.РаспоряженияНаОтгрузку.РаспоряженияНаОтгрузкуСостояние";

Написать :
ПутьКПризнакуТребуетсяСертификация = "РаспоряженияНаОтгрузку.Состояние";


Вот работающий код :

Процедура УстановитьУсловноеОформление()

    УсловноеОформление.Элементы.Очистить();
    
    
      
    МассивИменКолонокДляПодсветки = Новый Массив;
    МассивИменКолонокДляПодсветки.Добавить(Элементы.РаспоряженияНаОтгрузку.ПодчиненныеЭлементы.РаспоряженияНаОтгрузкуПолучатель.Имя);
    МассивИменКолонокДляПодсветки.Добавить(Элементы.РаспоряженияНаОтгрузку.ПодчиненныеЭлементы.РаспоряженияНаОтгрузкуГруппаТипДокумента.Имя);
    МассивИменКолонокДляПодсветки.Добавить(Элементы.РаспоряженияНаОтгрузку.ПодчиненныеЭлементы.РаспоряженияНаОтгрузкуРаспоряжениеНомер.Имя);
    МассивИменКолонокДляПодсветки.Добавить(Элементы.РаспоряженияНаОтгрузку.ПодчиненныеЭлементы.РаспоряженияНаОтгрузкуРаспоряжениеДата.Имя);
    МассивИменКолонокДляПодсветки.Добавить(Элементы.РаспоряженияНаОтгрузку.ПодчиненныеЭлементы.РаспоряженияНаОтгрузкуСостояние.Имя);
    МассивИменКолонокДляПодсветки.Добавить(Элементы.РаспоряженияНаОтгрузку.ПодчиненныеЭлементы.РаспоряженияНаОтгрузкуРаспоряжение.Имя);
    
    

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

Всем спасибо, вопрос закрыт !
14 VladZ
 
20.02.18
10:53
(4) Не понял, в чем именно проблема сделать без кода.
15 Румата
 
20.02.18
11:25
(VladZ) Проблема была в процедуре:

Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
КонецПроцедуры


Она очищала условное оформление, когда сделал так :

Процедура УстановитьУсловноеОформление()
//УсловноеОформление.Элементы.Очистить();
КонецПроцедуры

Вручную тоже заработало
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn