Цитата Сообщение от gribok Посмотреть сообщение
обрый день. Имеет ЗУП 2.0
Необходимо изменить стандартный график работы
Как в файле 51
Я поправил макет как нужно

Добавил доп столбец ОТКЛОНЕНИЕ от баланса (переработка/недоработка), в ней 3 параметра
ОтклЧасов
ОтклКвартал
ОтклГод
Весь график заполняется как положено
но мои параметры остаются пустые
Как их заполнить исходя из форму в файле 51

1С не когда не кодил.

Спасибо большое за помощь.

Код

Код:
Функция Печать(КалендарьНаборЗаписей, ГодПечати = Неопределено) Экспорт
        
    Если Не ЗначениеЗаполнено(ГодПечати) Тогда
        ГодПечати = ТекущийГод;
    КонецЕсли;
    
    ВыводитьИтогиПроизводственногоКалендаря = Истина;
    ДатаНачалаИнтервала        = НачалоГода(ГодПечати);
    ДатаОкончанияИнтервала  = КонецГода(ГодПечати);
    ДнейВИнтервале = (КонецДня(ДатаОкончанияИнтервала) - НачалоДня(ДатаНачалаИнтервала) + 1) / мДлинаСуток;
    Календарь = ПолучитьДниВПроизводственномКалендаре(ДатаНачалаИнтервала, ДатаОкончанияИнтервала); // это соответствие: дата - вид дня
    Если ДнейВИнтервале <> Календарь.Количество() Тогда
        Сообщить("Проверьте правильность заполнения регламентированного производственного календаря на " + Формат(Год(ГодПечати), "ЧГ=5") + " год", СтатусСообщения.Важное);
        ВыводитьИтогиПроизводственногоКалендаря = Ложь;
    КонецЕсли;
    
    ПечатныйДокумент = Новый ТабличныйДокумент;
    ПечатныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ГрафикиРаботы";
    ПечатныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
    ПечатныйДокумент.Автомасштаб = Истина;

    Макет = ПолучитьМакет("Макет");
    
    ОбластьДанныхШапка               = Макет.ПолучитьОбласть("Шапка");
    
    //ОТОБРАЖАЕМ ВСЕ ОБЛАСТЬ ШАПКИ ++
    //++ ОбластьДанныхШапка               = Макет.ПолучитьОбласть("Шапка|Месяцы");
    
    
    ОбластьДанныхКолонтитул       = Макет.ПолучитьОбласть("Колонтитул");
    ОбластьДанныхРасширение       = Макет.ПолучитьОбласть("Расширение");
    ОбластьДанныхДень             = Макет.ПолучитьОбласть("День|Месяцы");
    ОбластьДанныхДеньПоДням       = Макет.ПолучитьОбласть("День|Дни");    
    ОбластьДанныхНочные           = Макет.ПолучитьОбласть("НЧ");
    ОбластьИтогиЗаМесяц           = Макет.ПолучитьОбласть("День|Итоги");
    ОбластьИтогиЗаКвартал         = Макет.ПолучитьОбласть("Квартал");    
    ОбластьИтогиЗаКварталНЧ       = Макет.ПолучитьОбласть("КварталНЧ");
    ОбластьИтогиЗаГод              = Макет.ПолучитьОбласть("Год");    
    ОбластьИтогиЗаГодНЧ              = Макет.ПолучитьОбласть("ГодНЧ");
    ОбластьКалендаря              = Макет.ПолучитьОбласть("Календарь");        
    ОбластьПодписи                  = Макет.ПолучитьОбласть("Подпись");
    ОбластьРасширениеИтоги          = Макет.ПолучитьОбласть("РасширениеИтоги");
    //Получаем мою область ++
    //ОбластьДеньКалендарь              = Макет.ПолучитьОбласть("День|Календарь");
  
    
    //ОбластьКалендаря.Параметры.ОтклЧасов=111;    
    //ПечатныйДокумент.Вывести(ОбластьКалендаря);

    
    ОбластьДанныхШапка.Параметры.Наименование = "График работы '" + СокрЛП(ЭтотОбъект.Наименование)    + "' на " + Формат(Год(ГодПечати), "ЧГ=5") + " год";
    ПечатныйДокумент.Вывести(ОбластьДанныхШапка);
    
    
    
    ОбластьДнейЗаголовок = "Часов за день";
    Если УчитыватьНочныеЧасы Тогда
        ОбластьДнейЗаголовок = ОбластьДнейЗаголовок + ", в том числе ночных";
    КонецЕсли;
    ОбластьДанныхКолонтитул.Параметры.Установить(0, ОбластьДнейЗаголовок);
    ПечатныйДокумент.Вывести(ОбластьДанныхКолонтитул);
    
    ДнейЗаКвартал                         = 0;
    ЧасовЗаКвартал                         = 0;
    НочныхЧасовЗаКвартал                = 0;
    ДнейЗаГод                             = 0;
    ЧасовЗагод                             = 0;
    НочныхЧасовЗаГод                     = 0;
    ДнейПоКалендарю                        = 0;
    ЧасовПоКалендарю                    = 0;
    ВыходныхПоКалендарю                    = 0;
    ДнейЗаКварталПоКалендарю            = 0;
    ЧасовЗаКварталПоКалендарю            = 0;
    ВыходныхЗаКварталПоКалендарю        = 0;
    ДнейЗаГодПоКалендарю                = 0;
    ЧасовЗаГодПоКалендарю               = 0;
    ВыходныхЗаГодПоКалендарю            = 0;
    Квартал                              = 0;
    ИндексСтраницы                        = 0;
    
    ОтклЧасов                           = 0;
    ОтклКвартал                         = 0;
    ОтклГод                             = 0;


    
    
    Для Индекс = 0 По 11 Цикл
        
        НомерМесяца = Индекс + 1;
        НазваниеМесяца = КалендарьНаборЗаписей[Индекс].Месяц;
        Дней           = КалендарьНаборЗаписей[Индекс].ДнейЗаМесяц;
        Часов          = КалендарьНаборЗаписей[Индекс].ЧасовЗаМесяц;        
        НочныхЧасов       = КалендарьНаборЗаписей[Индекс].НочныхЧасовЗаМесяц;
        
        Если НомерМесяца = 4 ИЛИ НомерМесяца = 7 ИЛИ НомерМесяца = 10 Тогда
            ДнейЗаКвартал  = 0;
            ЧасовЗаквартал = 0;            
            НочныхЧасовЗаКвартал = 0;
        КонецЕсли;
        
        ДнейЗаКвартал  = ДнейЗаКвартал + Дней;
        ЧасовЗаКвартал = ЧасовЗаКвартал + Часов;
        ДнейЗаГод = ДнейЗаГод + Дней;
        ЧасовЗаГод = ЧасовЗаГод + Часов;        
        НочныхЧасовЗаГод = НочныхЧасовЗаГод + НочныхЧасов;
        
        ДанныеМесяца = КалендарьНаборЗаписей[Индекс];
        ОбластьДанныхДень.Параметры.Заполнить(ДанныеМесяца); 
        
        
                
                
        
        
        СтрокаСПодвалом = Новый Массив; // создадим массив для проверки вывода 
        СтрокаСПодвалом.Добавить(ОбластьДанныхДень); 
        СтрокаСПодвалом.Добавить(ОбластьИтогиЗаКвартал);        
        СтрокаСПодвалом.Добавить(ОбластьИтогиЗаКварталНЧ);
        
        Если Не УниверсальныеМеханизмы.ПроверитьВыводДляТабличногоДокумента(ПечатныйДокумент, СтрокаСПодвалом) Тогда
            ПечатныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
            ПечатныйДокумент.Вывести(ОбластьДанныхКолонтитул);
            ИндексСтраницы = ИндексСтраницы+1;
        КонецЕсли;
        
        ПечатныйДокумент.Вывести(ОбластьДанныхДень);
        
        ОбластьДанныхДеньПоДням.Параметры.Заполнить(ДанныеМесяца);
        ОбластьИтогиЗаМесяц.Параметры.Заполнить(ДанныеМесяца);
        Если УчитыватьНочныеЧасы Тогда
            ОбластьДанныхНочные.Параметры.Заполнить(ДанныеМесяца);
            НочныхЧасовЗаКвартал = НочныхЧасовЗаКвартал + НочныхЧасов;
            ОбластьИтогиЗаКварталНЧ.Параметры.Установить(0, НочныхЧасовЗаКвартал);
        КонецЕсли; 
        
        ДнейВМесяце = КоличествоДнейВМесяце(НомерМесяца, Год(ГодПечати)); 
        Если ДнейВМесяце < 31 Тогда
            ЛишнийДень = ДнейВМесяце + 1;
            Пока ЛишнийДень <= 31 Цикл
                ОбластьДанныхДеньПоДням.Параметры.Установить(ЛишнийДень-1, "X");
                ОбластьДанныхНочные.Параметры.Установить(ЛишнийДень-1, "X");
                ЛишнийДень = ЛишнийДень + 1;
            КонецЦикла;
        КонецЕсли;
        
        //Установим параметры производственного календаря
        ДанныеПроизводственногоКалендаря = ДанныеПроизводственногоКалендаря(НомерМесяца);
        ТаблицаИтоговКалендаря = ДанныеПроизводственногоКалендаряЗаГод(Год(ГодПечати));
            
        Если ВыводитьИтогиПроизводственногоКалендаря Тогда
            ТаблицаИтогов = ТаблицаИтоговКалендаря[Индекс];
            ОбластьИтогиЗаМесяц.Параметры.Установить(2, ТаблицаИтоговКалендаря[Индекс].ДнейПоКалендарю);
            ОбластьИтогиЗаМесяц.Параметры.Установить(3, ТаблицаИтоговКалендаря[Индекс].ЧасовПоКалендарю);
            ОбластьИтогиЗаМесяц.Параметры.Установить(4, ТаблицаИтоговКалендаря[Индекс].ВыходныхПоКалендарю);
        КонецЕсли;
        
        ПечатныйДокумент.Присоединить(ОбластьДанныхДеньПоДням);
        ПечатныйДокумент.Присоединить(ОбластьИтогиЗаМесяц);
        Если УчитыватьНочныеЧасы Тогда
            ПечатныйДокумент.Вывести(ОбластьДанныхНочные);
        Иначе
            ПечатныйДокумент.Вывести(ОбластьДанныхРасширение);
        КонецЕсли;
                
        //Выделим цветом нерабочие дни в календаре
        ТекущийМесяц = НачалоМесяца(Дата(Год(ГодПечати), НомерМесяца, 1));
        ДеньНеделиМесяца = ДеньНедели(НачалоМесяца(ТекущийМесяц));
        Для НомерДня = 1 По 31 Цикл
            Если НомерДня <= ДнейВМесяце Тогда
                Если ДанныеПроизводственногоКалендаря.Количество() > 0 Тогда
                    ВидДня = ДанныеПроизводственногоКалендаря[НомерДня - 1].ВидДня;
                    Если ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Воскресенье 
                        Или ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Суббота 
                        Или ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Праздник Тогда
                        ОбластьВыходных = ПечатныйДокумент.НайтиТекст(Строка(НомерДня),,,,Истина);
                        ОбластьДляЗакрашивания = ПечатныйДокумент.Область(ОбластьВыходных.Верх + НомерМесяца*2 + Квартал*2- 1, ОбластьВыходных.Лево, ОбластьВыходных.Верх + НомерМесяца*2  + Квартал*2, ОбластьВыходных.Лево);
                        ОбластьДляЗакрашивания.ЦветФона = КрасныйЦвет;
                    КонецЕсли;
                КонецЕсли;
            Иначе
                ОбластьЛишнихДней = ПечатныйДокумент.НайтиТекст(Строка(НомерДня),,,,Истина);
                ОбластьДляЗакрашивания = ПечатныйДокумент.Область(ОбластьЛишнихДней.Верх + НомерМесяца*2 + Квартал*2 - 1, ОбластьЛишнихДней.Лево, ОбластьЛишнихДней.Верх + НомерМесяца*2 + Квартал*2, ОбластьЛишнихДней.Лево);
                ОбластьДляЗакрашивания.ЦветФона = СерыйЦвет;
            КонецЕсли;
        КонецЦикла;
        
        Если НомерМесяца = 3 ИЛИ НомерМесяца = 6 ИЛИ НомерМесяца = 9 ИЛИ НомерМесяца = 12 Тогда
            Квартал = НомерМесяца/3;
            ОбластьИтогиЗаКвартал.Параметры.Установить(0, "" + Квартал + " квартал");
            ОбластьИтогиЗаКвартал.Параметры.Установить(1, ДнейЗаКвартал);
            ОбластьИтогиЗаКвартал.Параметры.Установить(2, ЧасовЗаКвартал);
            Если ВыводитьИтогиПроизводственногоКалендаря Тогда
                ОбластьИтогиЗаКвартал.Параметры.Установить(3, ТаблицаИтоговКалендаря[НомерМесяца-1].ДнейЗаКварталПоКалендарю);
                ОбластьИтогиЗаКвартал.Параметры.Установить(4, ТаблицаИтоговКалендаря[НомерМесяца-1].ЧасовЗаКварталПоКалендарю);
                ОбластьИтогиЗаКвартал.Параметры.Установить(5, ТаблицаИтоговКалендаря[НомерМесяца-1].ВыходныхЗаКварталПоКалендарю); 
            КонецЕсли;
            
            ПечатныйДокумент.Вывести(ОбластьИтогиЗаКвартал);
            
            Если  УчитыватьНочныеЧасы Тогда
                ПечатныйДокумент.Присоединить(ОбластьИтогиЗаКварталНЧ);                
            Иначе
                ПечатныйДокумент.Вывести(ОбластьРасширениеИтоги);
            КонецЕсли;
        КонецЕсли;
        
    КонецЦикла;

    ОбластьИтогиЗаГод.Параметры.Установить(0, ДнейЗаГод);
    ОбластьИтогиЗаГод.Параметры.Установить(1, ЧасовЗаГод);
    Если ВыводитьИтогиПроизводственногоКалендаря Тогда
        ОбластьИтогиЗаГод.Параметры.Установить(2, ТаблицаИтоговКалендаря[11].ДнейЗаГодПоКалендарю);
        ОбластьИтогиЗаГод.Параметры.Установить(3, ТаблицаИтоговКалендаря[11].ЧасовЗаГодПоКалендарю);
        ОбластьИтогиЗаГод.Параметры.Установить(4, ТаблицаИтоговКалендаря[11].ВыходныхЗаГодПоКалендарю);
    КонецЕсли;
    
    ПечатныйДокумент.Вывести(ОбластьИтогиЗаГод);
    
    Если УчитыватьНочныеЧасы Тогда
        ОбластьИтогиЗаГодНЧ.Параметры.Установить(0, НочныхЧасовЗаГод);
        ПечатныйДокумент.Вывести(ОбластьИтогиЗаГодНЧ);
    Иначе
        ПечатныйДокумент.Вывести(ОбластьРасширениеИтоги);
        ОбластьИтоговЗаГод = ПечатныйДокумент.НайтиТекст("Итого за год:");
        СераяОбласть = ПечатныйДокумент.Область(ОбластьИтоговЗаГод.Верх + 1, ОбластьИтоговЗаГод.Лево, ОбластьИтоговЗаГод.Верх + 1, ОбластьИтоговЗаГод.Лево + 37);
        СераяОбласть.ЦветФона = ЦветаСтиля.ФонГруппировкиВерхнегоУровня;
    КонецЕсли;

    ПечатныйДокумент.Вывести(ОбластьПодписи);

    УниверсальныеМеханизмы.НапечататьДокумент(ПечатныйДокумент, , , "График работы " + Наименование);
    
    
        

КонецФункции
У вас вывод "ОбластьКалендаря.Параметр ы.ОтклЧасов" закомментирован.