Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

УТ 11. Раскрасить табличную часть в документе

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


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

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


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

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

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

Все равно условие не срабатывает ...
   Румата
 
2 - 20.02.18 - 09:22
В названии темы ошибся -  таблицу надо раскрасить в обработке !!!!
   FIXXXL
 
3 - 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
Получается все проблема в этих строках :

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

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

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

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

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

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

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

Тип строка.

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

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

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

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


Вот работающий код :
Процедура УстановитьУсловноеОформление()

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

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

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

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


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

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

КонецПроцедуры

Вручную тоже заработало

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