Имя: Пароль:
1C
1С v8
Условное оформление
0 Начинающий_13
 
19.08.20
09:52
Здравствуйте.
График работы
Оформляю ТЧ документа.
Когда один месяц все красит правильно, когда больше месяцев, частично правильно.
Где намудрил? Не вижу ошибки?


&НаСервере
Процедура ОформитьГрафикРаботыСервер()
    
    ПредпраздничныйДень = ЦветаСтиля.маЦветДеньНеделиПредпраздничныйДень;
    ПраздничныйДень     = ЦветаСтиля.маЦветДеньНеделиПраздничныйДень;
    РабочийДень         = ЦветаСтиля.маЦветДеньНеделиРабочийДень;
    НерабочийДень       = ЦветаСтиля.маЦветДеньНеделиНерабочийДень;
    ВыходнойДень        = ЦветаСтиля.маЦветДеньНеделиВыходнойДень;
    
    ////очищаем ранее назначенные элементы оформления
    УсловноеОформление.Элементы.Очистить();
    
    СтруктураКолонкиИмена            = Новый Структура;
    СтруктураКолонкиИменаНеУчаствуют = Новый Структура;
    
    ТаблицаДанныеГрафикаРаботы = Объект.ДанныеГрафикаРаботы.Выгрузить();
    Для каждого Колонка Из ТаблицаДанныеГрафикаРаботы.Колонки Цикл
        
        Для каждого СтрокаТаблицы Из ТаблицаДанныеГрафикаРаботы Цикл
            Для ДеньЧисло = 1 По СтрокаТаблицы.МесяцКоличествоДней Цикл
                Если Колонка.Имя = "ВидДня"+СокрЛП(ДеньЧисло) Тогда
                    //КолонкиИмена.Добавить(Колонка.Имя);
                    СтруктураКолонкиИмена.Вставить(Колонка.Имя, СтрокаТаблицы["ВидДня"+ДеньЧисло] );
                КонецЕсли;
            КонецЦикла;
        КонецЦикла;
        
    КонецЦикла;
    
    
    
    
    Для каждого КолонкаИмя Из СтруктураКолонкиИмена Цикл //// Структура            
        
        //добавляем новый элемент условного оформления
        ЭлементУО = УсловноеОформление.Элементы.Добавить();
        ////устанавливаем само оформление
        //ЭлементУО.Оформление.УстановитьЗначениеПараметра("ЦветФона", ПредпраздничныйДень);
        
        
        Для каждого СтрокаТаблицы Из ТаблицаДанныеГрафикаРаботы Цикл
            Для ДеньЧисло = 1 По СтрокаТаблицы.МесяцКоличествоДней Цикл
                
            
                
                
                
                Если СтрокаТаблицы["ВидДня"+ДеньЧисло]= Перечисления.ВидыДнейПроизводственногоКалендаря.Предпраздничный
                    и КолонкаИмя.Значение  = Перечисления.ВидыДнейПроизводственногоКалендаря.Предпраздничный  Тогда
                    
                    ЭлементУО.Оформление.УстановитьЗначениеПараметра("ЦветФона", ПредпраздничныйДень);
                    
                ИначеЕсли СтрокаТаблицы["ВидДня"+ДеньЧисло]= Перечисления.ВидыДнейПроизводственногоКалендаря.Праздник
                    И  КолонкаИмя.Значение  = Перечисления.ВидыДнейПроизводственногоКалендаря.Праздник   Тогда
                    
                    ЭлементУО.Оформление.УстановитьЗначениеПараметра("ЦветФона", ПраздничныйДень);
                    
                ИначеЕсли СтрокаТаблицы["ВидДня"+ДеньЧисло]= Перечисления.ВидыДнейПроизводственногоКалендаря.Рабочий
                    И  КолонкаИмя.Значение  = Перечисления.ВидыДнейПроизводственногоКалендаря.Рабочий Тогда
                    
                    ЭлементУО.Оформление.УстановитьЗначениеПараметра("ЦветФона", РабочийДень);
                    
                ИначеЕсли СтрокаТаблицы["ВидДня"+ДеньЧисло]= Перечисления.ВидыДнейПроизводственногоКалендаря.Суббота  
                    И  КолонкаИмя.Значение  = Перечисления.ВидыДнейПроизводственногоКалендаря.Суббота Тогда
                    
                    ЭлементУО.Оформление.УстановитьЗначениеПараметра("ЦветФона", ВыходнойДень);
                    
                ИначеЕсли СтрокаТаблицы["ВидДня"+ДеньЧисло]= Перечисления.ВидыДнейПроизводственногоКалендаря.Воскресенье  
                    И   КолонкаИмя.Значение  = Перечисления.ВидыДнейПроизводственногоКалендаря.Воскресенье Тогда
                    
                    ЭлементУО.Оформление.УстановитьЗначениеПараметра("ЦветФона", ВыходнойДень);
                    
                ИначеЕсли СтрокаТаблицы["ВидДня"+ДеньЧисло]= Перечисления.ВидыДнейПроизводственногоКалендаря.Нерабочий
                    И   КолонкаИмя.Значение  = Перечисления.ВидыДнейПроизводственногоКалендаря.Нерабочий Тогда
                    
                    ЭлементУО.Оформление.УстановитьЗначениеПараметра("ЦветФона", ВыходнойДень);
                    
                КонецЕсли;
                
                
                
            КонецЦикла;
        КонецЦикла;
        
        
        //добавляем условие
        ЭлементУсловия = ЭлементУО.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
        //что сравниваем
        //ЭлементУсловия.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДанныеГрафикаРаботы."+КолонкаИмя.Ключ);
        ЭлементУсловия.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(КолонкаИмя.Ключ);
        //как сравниваем
        ЭлементУсловия.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
        //с чем сравниваем
        ЭлементУсловия.ПравоеЗначение =  Новый ПолеКомпоновкиДанных("ДанныеГрафикаРаботы."+КолонкаИмя.Ключ);
        //ЭлементУсловия.ПравоеЗначение =  Новый ПолеКомпоновкиДанных(КолонкаИмя.Ключ);
        //оформляемые поля
        ОформляемоеПоле = ЭлементУО.Поля.Элементы.Добавить();
        ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("ДанныеГрафикаРаботы"+КолонкаИмя.Ключ);     
        
        
    КонецЦикла;
    
        
КонецПроцедуры
1 Волшебник
 
19.08.20
10:03
Нужно устанавливать оформление всегда, а не только по условию
2 Начинающий_13
 
19.08.20
10:08
Подробней... Я разные обходы порядки и при исполнении условий все оформления вроде ставил. Не получается
3 Жан Пердежон
 
19.08.20
11:00
предлагаешь по коду догадываться, что у тебя в строках, а что в колонках?
4 Жан Пердежон
 
19.08.20
11:04
если в строках месяца, то и в условии отбор по месяцу должен быть, а у тебя там фигня какая-то бестолковая
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.