Имя: Пароль:
1C
1С v8
Внешняя Печатная Форма
0 1cUser015
 
11.05.17
18:28
Добрый день!
При создании внешней печатной формы к конкретному типу документов, при запуске выводит "Печатная форма недоступна"
В чем суть, в самом модули менеджера документа идет такая архитектура:
[CODE]
Процедура печать()
....
КонецПроцедуры

ДополнительнаяПроцедура()
Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.Макет")
.......
КонецПроцедуры

функция печать()
.....
ДополнительнаяПроцедура()
......
КонецФункции

[/CODE]

Таким образом, макет берется не в функции Печать() как для тривиальных ВПФ, а в дополнительной процедуре. Если учесть что именование макета и его путь указан корректно не могу понять почему "Печатная форма недоступна"

Макет пробовал получать по разному:
ЭтотОбъект.ПолучитьМакет
просто ПолучитьМакет
УправлениеПечатью.МакетПечатнойФормы("ИмяВПФ.ИмяМакета");

Что еще проверить посоветуете? Или код нужен полностью?

И еще вопрос, есть какой нибудь мануал, такого характера, чтобы в ВПФ вызвать все стандартный макет, сатндартный обработчик печати но ДополнительнаяПроцедура() вызывать именно переопределенную из ВПФ, т.е. не создавать макет, только команду ВПФ, в ней модуль с переопределением ДопПроцедуры, и вызов именно этой ДопПроцедуры при заполнении макета?
Спасибо!
1 realevgenius
 
11.05.17
18:35
Я лично не понял о чем вопрос? Это управляемые формы или обычные.. .В чем разработка?
2 Ц_У
 
11.05.17
18:44
Печать Экспорт?
СсылкаНаОбъект?
Макет брать все равно откуда, лишь бы возвращался макет а не абы где.
Ну и да, откуда ноги то растут?
3 realevgenius
 
11.05.17
18:46
(2) Вот и я о том же... Ничего не понятно... Что-то околоадинэсное... Но что?

Автор, поясни ,что это за конфигурация, что пытаешься сделать?
4 Ц_У
 
11.05.17
18:51
(3) автор видимо на пути к дому и проблема его уже не волнует :)
5 1cUser015
 
11.05.17
20:26
Проблема в том, что взята структура из модуля менеджера документа, перенесена во внешнюю печатную форму но не отработала. Хотя другие ВПФ до этого прекрасно работали.
Ниже дефолтный код из ВПФ
Процедура ВывестиДССотрудника дефолтная из модуля менеджера документа "Изменения".
Конфигурация Камин 5
6 1cUser015
 
11.05.17
20:31
Процедура ВывестиДССотрудника(Организация, ВыборкаДок, ТабДок, ТаблицаИзменений, ТаблицаДоговоров, ДолжностныеЛица, ВхДанные)
    
    ЭлСтатус = ВхДанные[0];    
    ЭлОплата = ВхДанные[1];    
    ЭлТабель = ВхДанные[2];    
    ЭлОтпуск = ВхДанные[3];    
    ЭлМесто = ВхДанные[4];    
    ЭлСрок = ВхДанные[5];    
    
    ПечатьСтатус = ВхДанные[6];    
    ПечатьОплата = ВхДанные[7];    
    ПечатьТабель = ВхДанные[8];    
    ПечатьОтпуск = ВхДанные[9];    
    ПечатьМесто = ВхДанные[10];    
    ПечатьСрок = ВхДанные[11];    
    
    Макет = ПолучитьМакет("ДопСоглашениеДокИзменения");
    //Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.Изменения.ПФ_MXL_МакетДополнительногоСоглашения");            

    СекцияЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    СекцияШапка = Макет.ПолучитьОбласть("Шапка");
    СекцияСтрока = Макет.ПолучитьОбласть("Пункт");
    СекцияПодвал = Макет.ПолучитьОбласть("Подвал");
    
    СекцияПодвал.Параметры.ДолжностьРуководителя = ДолжностныеЛица.ДолжностьРуководителя;
    СекцияПодвал.Параметры.Руководитель = ОбщегоНазначенияСервер.ФИО(ДолжностныеЛица.Руководитель,1,1,ВхДанные[12]);

    СтруктураДанных = Новый Структура("Ставка,ВидСтавки,КоличествоСтавок,Подразделение,Должность,Табель,СтатусРаботы,ВнешнийСовместитель,ОсновнойОтпуск,ДополнительныйОтпуск,Временно,ДатаУвольнения");
    СО = Новый Структура("Сотрудник,СтатусРаботы");
    
    ВнСовм = Ложь;
    Статус = Ложь;
    Оплата = Ложь;
    Табель = Ложь;
    ОснОтпуск = Ложь;
    ДопОтпуск = Ложь;
    Место = Ложь;
    СрокДоговора = Ложь;
        
    Ставка = "";
    Для Каждого Изменение Из ТаблицаИзменений Цикл
        Если Изменение.Реквизит = "Ставка" ИЛИ Изменение.Реквизит = "ВидСтавки" ИЛИ Изменение.Реквизит = "КоличествоСтавок" Тогда
            Если Изменение.НовыеДанные <> Изменение.СтарыеДанные Тогда
                Оплата = Истина;
            КонецЕсли;
            СтруктураДанных[Изменение.Реквизит] = Изменение.НовыеДанные;
        ИначеЕсли Изменение.Реквизит = "СтатусРаботы" Тогда
            Если Изменение.НовыеДанные <> Изменение.СтарыеДанные Тогда    
                Статус = Истина;
            КонецЕсли;
            СтруктураДанных[Изменение.Реквизит] = Изменение.НовыеДанные;
        ИначеЕсли Изменение.Реквизит = "ВнешнийСовместитель" Тогда
            Если Изменение.НовыеДанные <> Изменение.СтарыеДанные Тогда    
                ВнСовм = Истина;
            КонецЕсли;
            СтруктураДанных[Изменение.Реквизит] = Изменение.НовыеДанные;
        ИначеЕсли Изменение.Реквизит = "Табель" Тогда
            Если Изменение.НовыеДанные <> Изменение.СтарыеДанные Тогда    
                Табель = Истина;
            КонецЕсли;
            СтруктураДанных[Изменение.Реквизит] = Изменение.НовыеДанные;
        ИначеЕсли Изменение.Реквизит = "Подразделение" ИЛИ Изменение.Реквизит = "Должность" Тогда
            Если Изменение.НовыеДанные <> Изменение.СтарыеДанные Тогда    
                Место = Истина;
            КонецЕсли;
            СтруктураДанных[Изменение.Реквизит] = Изменение.НовыеДанные;
        ИначеЕсли Изменение.Реквизит = "ОсновнойОтпуск" Тогда
            Если Изменение.НовыеДанные <> Изменение.СтарыеДанные Тогда    
                ОснОтпуск = Истина;
            КонецЕсли;
            СтруктураДанных[Изменение.Реквизит] = Изменение.НовыеДанные;
        ИначеЕсли Изменение.Реквизит = "ДополнительныйОтпуск" Тогда
            Если Изменение.НовыеДанные <> Изменение.СтарыеДанные Тогда    
                ДопОтпуск = Истина;
            КонецЕсли;
            СтруктураДанных[Изменение.Реквизит] = Изменение.НовыеДанные;
        ИначеЕсли Изменение.Реквизит = "ДатаУвольнения" Тогда
            Если Изменение.НовыеДанные <> Изменение.СтарыеДанные Тогда    
                СрокДоговора = Истина;
            КонецЕсли;
            СтруктураДанных[Изменение.Реквизит] = Изменение.НовыеДанные;
        ИначеЕсли Изменение.Реквизит = "Временно" Тогда
            Если Изменение.НовыеДанные <> Изменение.СтарыеДанные Тогда    
                СрокДоговора = Истина;
            КонецЕсли;
            СтруктураДанных[Изменение.Реквизит] = Изменение.НовыеДанные;
        КонецЕсли;
    КонецЦикла;
    
    СекцияЗаголовок.Параметры.Заголовок = "Дополнительное соглашение № " + ВыборкаДок.НомерСоглашения;
    СО.Сотрудник = ВыборкаДок.Сотрудник;
    СО.СтатусРаботы = СтруктураДанных.СтатусРаботы;
    СтрТД = ТаблицаДоговоров.НайтиСтроки(СО);
    Если СтрТД.Количество() > 0 Тогда
        СекцияЗаголовок.Параметры.ПодЗаголовок = "к трудовому договору № " + СтрТД[0].НомерДоговора + " от " + Формат(СтрТД[0].ДатаДоговора, "ДЛФ = Д");
    КонецЕсли;    
    СекцияЗаголовок.Параметры.ДатаСоглашения = ВхДанные[12];
    
    АдресОрг = "";
    Город = "";
    СтрокаАдреса = Организация.КонтактнаяИнформация.Найти(Справочники.ВидыКонтактнойИнформации.ЮрАдресОрганизации, "Вид");
    Если СтрокаАдреса <> Неопределено Тогда
        АдресОрг = СтрокаАдреса.Представление;
        Город = СокрЛП(СтрокаАдреса.Город)+".";
        Сокр = "";
        Сч = СтрДлина(Город);
        Пока Сч > 0 Цикл
            СимволГ = Сред(Город,Сч,1);
            Если СимволГ = " " Тогда
                Прервать;
            КонецЕсли;
            Сокр = СимволГ + Сокр;
            Сч = Сч-1;
        КонецЦикла;
        Город = СтрЗаменить(Город, Сокр, "");
        Город = Сокр + " " + Город;
    КонецЕсли;
    
    ДокПаспорт = ВыборкаДок.Сотрудник.Документ;
    СекцияПодвал.Параметры.Организация = СокрЛП(Организация);
    СекцияПодвал.Параметры.АдресМестаРаботы = АдресОрг;
    СекцияПодвал.Параметры.СерияДокумента = ДокПаспорт.СерияДокумента;
    СекцияПодвал.Параметры.НомерДокумента = ДокПаспорт.НомерДокумента;        
    СекцияПодвал.Параметры.КемВыданДокумент = СокрЛП(ДокПаспорт.КемВыдан) + " " + Формат(ДокПаспорт.ДатаВыдачи, "ДЛФ=Д");
    СекцияПодвал.Параметры.Работник = ОбщегоНазначенияСервер.ФИО(ВыборкаДок.Сотрудник,1,1,ВхДанные[12]);
    СекцияПодвал.Параметры.ФИОРаботника = ОбщегоНазначенияСервер.ФИО(ВыборкаДок.Сотрудник,,,ВхДанные[12]);
    СекцияПодвал.Параметры.Получил = ?(ВыборкаДок.Сотрудник.Пол = Перечисления.ПолФизическогоЛица.Мужской, "получил", "получила");
    
    СекцияЗаголовок.Параметры.Город = Город;
    ТабДок.Вывести(СекцияЗаголовок);
    
    ОснДокумент = ВыборкаДок.Сотрудник.Документ;
    СекцияШапка.Параметры.ТекстШапки = "     " + СокрЛП(Организация.НаименованиеПолное) + ", " +
    "именуемое в дальнейшем Работодатель, в лице" + ?(Найти(СокрЛП(ДолжностныеЛица.ДолжностьРуководителя), "Генеральный")>0," генерального","") + " директора " + ОбщегоНазначенияСервер.ФИО(ДолжностныеЛица.Руководитель,,,ВхДанные[12],"В") +
    ", действующего на основании Устава, с одной стороны, и " + ?(СокрЛП(ВыборкаДок.Сотрудник.Пол) = "Мужской", "гражданин", "гражданка") + " РФ " + ОбщегоНазначенияСервер.ФИО(ВыборкаДок.Сотрудник,,,ВхДанные[12]) +
    ", " + СокрЛП(ОснДокумент.ВидДокумента) + " серия " + ОснДокумент.СерияДокумента + " номер " + ОснДокумент.НомерДокумента + " выдан " + СокрЛП(ОснДокумент.КемВыдан) + " " + Формат(ОснДокумент.ДатаВыдачи, "ДЛФ=Д") + ", " + ?(СокрЛП(ВыборкаДок.Сотрудник.Пол) = "Мужской", "именуемый", "именуемая") +
    " далее Работник, с другой стороны, заключили настоящее дополнительное соглашение о нижеследующем:" + Символы.ПС + " ";     
    ТабДок.Вывести(СекцияШапка);
    
    НП = 1;
    Если Место И ПечатьМесто Тогда
        Пункт = ?(ЭлМесто = Неопределено, "1.1", ЭлМесто.Представление);
        ТекстПункта = "Пункт " + Пункт + " изложить в следующей редакции: ""По настоящему трудовому договору Работник обязуется выполнять обязанности по должности " + СокрЛП(СтруктураДанных.Должность) + " в подразделении " + СокрЛП(СтруктураДанных.Подразделение) + ", с подчинением трудовому распорядку организации.""";
        СекцияСтрока.Параметры.НП = СокрЛП(НП)+".";
        СекцияСтрока.Параметры.Содержание = ТекстПункта;
        ТабДок.Вывести(СекцияСтрока);
        НП = НП + 1;
    КонецЕсли;
    Если (Статус ИЛИ ВнСовм) И ПечатьСтатус Тогда
        Пункт = ?(ЭлСтатус = Неопределено, "1.3", ЭлСтатус.Представление);
        Если СтруктураДанных.ВнешнийСовместитель Тогда
            ТекстПункта = "Пункт " + Пункт + " изложить в следующей редакции: ""Работа по настоящему трудовому договору является для работника работой по внешнему совместительству.""";
        Иначе
            ТекстПункта = "Пункт " + Пункт + " изложить в следующей редакции: ""Работа по настоящему трудовому договору для работника - это " + СокрЛП(СтруктураДанных.СтатусРаботы) + ".""";
        КонецЕсли;
        СекцияСтрока.Параметры.НП = СокрЛП(НП)+".";
        СекцияСтрока.Параметры.Содержание = ТекстПункта;
        ТабДок.Вывести(СекцияСтрока);
        НП = НП + 1;
    КонецЕсли;
    Если СрокДоговора и ПечатьСрок Тогда
        Пункт = ?(ЭлСрок = Неопределено , "1.6", ЭлСрок.Представление);
        СрокДоговора = ?(НЕ СтруктураДанных.Временно, "неопределенный срок", "определенный срок, до " + Формат(СтруктураДанных.ДатаУвольнения, "ДЛФ=ДД"));
        ТекстПункта = "Пункт " + Пункт + " изложить в следующей редакции: ""Настоящий договор заключен на " + СокрЛП(СрокДоговора);
        СекцияСтрока.Параметры.НП = СокрЛП(НП)+".";
        СекцияСтрока.Параметры.Содержание = ТекстПункта;
        ТабДок.Вывести(СекцияСтрока);
        НП = НП + 1;
    КонецЕсли;
    Если Табель И ПечатьТабель Тогда
        Пункт = ?(ЭлТабель = Неопределено, "3.1", ЭлТабель.Представление);
        Если СтруктураДанных.Табель.СуммированныйУчет Тогда
            ТекстПункта = "Пункт " + Пункт + " изложить в следующей редакции: ""Режим рабочего времени Работника: " + СокрЛП(СтруктураДанных.Табель.ЧасовВНеделе) + "-часовая рабочая неделя.""";
        ИначеЕсли НЕ СтруктураДанных.Табель.ЕстьШаблон И СтруктураДанных.Табель.ДнейВНеделе > 0 Тогда
            ТекстПункта = "Пункт " + Пункт + " изложить в следующей редакции: ""Режим рабочего времени Работника: " + СокрЛП((СтруктураДанных.Табель.ЧасовВНеделе/СтруктураДанных.Табель.ДнейВНеделе)) + "-часовой рабочий день, " + СокрЛП(СтруктураДанных.Табель.ДнейВНеделе) + "-дневная рабочая неделя.""";
        ИначеЕсли СтруктураДанных.Табель.ЕстьШаблон И СтруктураДанных.Табель.ДнейВНеделе > 0 Тогда
            ТекстПункта = "Пункт " + Пункт + " изложить в следующей редакции: ""Режим рабочего времени работника: " + СокрЛП(СтруктураДанных.Табель.ДнейВНеделе) + "-дневная рабочая неделя. Распределение рабочих часов по циклу дней графика следующее:";
            НомДня = 1;
            Для Каждого СтрокаШ Из СтруктураДанных.Табель.ТаблицаШаблона Цикл
                ТекстПункта = ТекстПункта + Символы.ПС +
                "- "+НомДня+"-й день: " + ?(СтрокаШ.РабочихЧасовВДне=0, "Выходной",Строка(СтрокаШ.РабочихЧасовВДне) + " часов. ") +
                ?(СтрокаШ.РабочихЧасовВДнеВечерних=0, "","Из них " + Строка(СтрокаШ.РабочихЧасовВДнеВечерних) + " часов вечерних") +
                ?(СтрокаШ.РабочихЧасовВДнеНочных=0, "",", " + Строка(СтрокаШ.РабочихЧасовВДнеНочных) + " часов ночных.");
                
                НомДня = НомДня + 1;
            КонецЦикла;
        Иначе
            ТекстПункта = "Пункт " + Пункт + " изложить в следующей редакции: ""Режим рабочего времени Работника: " + СокрЛП(СтруктураДанных.Табель) + ".""";
        КонецЕсли;
        СекцияСтрока.Параметры.НП = СокрЛП(НП)+".";
        СекцияСтрока.Параметры.Содержание = ТекстПункта;
        ТабДок.Вывести(СекцияСтрока);
        НП = НП + 1;
    КонецЕсли;
    Если (ОснОтпуск ИЛИ ДопОтпуск) И ПечатьОтпуск Тогда
        Пункт = ?(ЭлОтпуск = Неопределено, "3.2", ЭлОтпуск.Представление);
        ТекстПункта = "Пункт " + Пункт + " изложить в следующей редакции: ""Работнику устанавливается ежегодный оплачиваемый отпуск продолжительностью " + СокрЛП(СтруктураДанных.ОсновнойОтпуск) + " календарных дней" + ?(СтруктураДанных.ДополнительныйОтпуск>0, ", а также дополнительный оплачиваемый отпуск продолжительностью " + СокрЛП(СтруктураДанных.ДополнительныйОтпуск) + " календарных дней.""", ".""");
        СекцияСтрока.Параметры.НП = СокрЛП(НП)+".";
        СекцияСтрока.Параметры.Содержание = ТекстПункта;
        ТабДок.Вывести(СекцияСтрока);
        НП = НП + 1;
    КонецЕсли;
    Если Оплата И ПечатьОплата Тогда
        Пункт = ?(ЭлОплата = Неопределено, "4.1", ЭлОплата.Представление);
        Ставка = СтруктураДанных.Ставка;    
        Количество = СтруктураДанных.КоличествоСтавок;
        ВидСтавки = СтруктураДанных.ВидСтавки;
        Если ВидСтавки = Перечисления.ВидыСтавок.РубЧас Тогда
            ВидСтавки = "заработная плата, исходя из тарифа: " + Формат(Ставка  * Количество, "ЧДЦ=2") + " рублей в час";     
        ИначеЕсли ВидСтавки = Перечисления.ВидыСтавок.РубДень Тогда
            ВидСтавки = "заработная плата, исходя из тарифа: " + Формат(Ставка  * Количество, "ЧДЦ=2") + " рублей в день";     
        ИначеЕсли ВидСтавки = Перечисления.ВидыСтавок.РубМес Тогда
            ВидСтавки = "оклад в сумме " + Формат(Ставка  * Количество, "ЧДЦ=2")  + " рублей в месяц";     
        КонецЕсли;            
        
        ТекстПункта = "Пункт " + Пункт + " изложить в следующей редакции: ""За выполнение обязанностей, предусмотренных условиями настоящего трудового договора, Работнику выплачивается " + ВидСтавки + ".""";
        
        СекцияСтрока.Параметры.НП = СокрЛП(НП)+".";
        СекцияСтрока.Параметры.Содержание = ТекстПункта;
        ТабДок.Вывести(СекцияСтрока);
        НП = НП + 1;
    КонецЕсли;
    
    СекцияСтрока.Параметры.НП = СокрЛП(НП)+".";
    СекцияСтрока.Параметры.Содержание = "Настоящее соглашение вступает в силу с " + Формат(ВхДанные[12], "ДЛФ = Д") +
    ?(ВхДанные[13] = "", "", " и действует до " + Формат(ВхДанные[13], "ДЛФ = Д")) +
    "г. " + ?(СтрТД.Количество() > 0, "и является неотъемлемой частью трудового договора № " + СтрТД[0].НомерДоговора + " от " + Формат(СтрТД[0].ДатаДоговора, "ДЛФ = Д") + ".", "");    
    ТабДок.Вывести(СекцияСтрока);
    НП = НП + 1;

    СекцияСтрока.Параметры.НП = СокрЛП(НП)+".";
    СекцияСтрока.Параметры.Содержание = "Настоящее соглашение составлено в двух экземплярах, идентичных по содержанию, имеющих одинаковую юридическую силу, по одному для каждой из сторон.";
    ТабДок.Вывести(СекцияСтрока);
    НП = НП + 1;
    
    ТабДок.Вывести(СекцияПодвал);
КонецПроцедуры
7 1cUser015
 
11.05.17
20:33
Процедура Печать(МассивОбъектов,КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт        
    
    ИмяПараметровПечати    = "ПАРАМЕТРЫ_ПЕЧАТИ_ПРИЕМ_ДопСоглашениеДокИзменения";
    УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,"ДопСоглашениеДокИзменения", "ДопСоглашениеДокИзменения", Печать_ДС(МассивОбъектов, ОбъектыПечати));
КонецПроцедуры
8 1cUser015
 
11.05.17
20:33
Функция Печать_ДС(МассивОбъектов, ОбъектыПечати)
    ТабДок = Новый ТабличныйДокумент;

    ПечатьСтатус = Истина;
    ПечатьОплата = Истина;
    ПечатьТабель = Истина;
    ПечатьОтпуск = Истина;
    ПечатьМесто = Истина;
    ПечатьСрок = Истина;

    ВхДанные = Новый Массив;
    Кол = МассивОбъектов.Количество();
    НастройкиПечати = МассивОбъектов[Кол-1];
    Если ТипЗнч(НастройкиПечати) = Тип("СписокЗначений") Тогда
        ЭлСтатус = НастройкиПечати.НайтиПоЗначению("Статус работы");    
        ЭлОплата = НастройкиПечати.НайтиПоЗначению("Оплата работы");    
        ЭлТабель = НастройкиПечати.НайтиПоЗначению("График работы");    
        ЭлОтпуск = НастройкиПечати.НайтиПоЗначению("Положенный отпуск");    
        ЭлМесто = НастройкиПечати.НайтиПоЗначению("Место работы");    
        ЭлСрок = НастройкиПечати.НайтиПоЗначению("Срок договора");    
        
        ВхДанные.Добавить(ЭлСтатус);
        ВхДанные.Добавить(ЭлОплата);
        ВхДанные.Добавить(ЭлТабель);
        ВхДанные.Добавить(ЭлОтпуск);
        ВхДанные.Добавить(ЭлМесто);        
        ВхДанные.Добавить(ЭлСрок);
        
        ПечатьСтатус = ЭлСтатус <> Неопределено;    
        ПечатьОплата = ЭлОплата <> Неопределено;    
        ПечатьТабель = ЭлТабель <> Неопределено;    
        ПечатьОтпуск = ЭлОтпуск <> Неопределено;    
        ПечатьМесто = ЭлМесто <> Неопределено;    
        ПечатьСрок = (ЭлСрок <> Неопределено);    
    Иначе
        ВхДанные.Добавить(Неопределено);
        ВхДанные.Добавить(Неопределено);
        ВхДанные.Добавить(Неопределено);
        ВхДанные.Добавить(Неопределено);
        ВхДанные.Добавить(Неопределено);        
        ВхДанные.Добавить(Неопределено);
    КонецЕсли;
    ВхДанные.Добавить(ПечатьСтатус);
    ВхДанные.Добавить(ПечатьОплата);
    ВхДанные.Добавить(ПечатьТабель);
    ВхДанные.Добавить(ПечатьОтпуск);
    ВхДанные.Добавить(ПечатьМесто);
    ВхДанные.Добавить(ПечатьСрок);
    ВхДанные.Добавить("");
    ВхДанные.Добавить("");

    МассивОбъектов.Удалить(Кол-1);
    
    СписокСотрудников = Новый Массив;
    ДатаИзм = Дата(1,1,1);
    Организация = "";
    Для Каждого ВыборкаДок Из МассивОбъектов Цикл    
        ДатаИзм = Макс(ДатаИзм, ВыборкаДок.ДатаИзменения);
        Организация = ВыборкаДок.Организация;
        Если ВыборкаДок.Список Тогда
            Для Каждого СтрокаИзм Из ВыборкаДок.ТаблицаДокумента Цикл
                СписокСотрудников.Добавить(СтрокаИзм.Сотрудник);        
            КонецЦикла;
        Иначе
            СписокСотрудников.Добавить(ВыборкаДок.Сотрудник);        
        КонецЕсли;
    КонецЦикла;
    Если СписокСотрудников.Количество() = 0 Тогда
        Возврат ТабДок;    
    Иначе
        Запрос = Новый Запрос;
        Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
        |    КадровыеСведенияСрезПоследних.Сотрудник,
        |    КадровыеСведенияСрезПоследних.СтатусРаботы,
        |    КадровыеСведенияСрезПоследних.НомерДоговора,
        |    КадровыеСведенияСрезПоследних.ДатаДоговора
        |ИЗ
        |    РегистрСведений.КадровыеСведения.СрезПоследних(
        |            &Дата,
        |            Организация = &Организация
        |                И Сотрудник В (&Сотрудники)) КАК КадровыеСведенияСрезПоследних
        |ГДЕ
        |    КадровыеСведенияСрезПоследних.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)";
        
        Запрос.УстановитьПараметр("Дата", КонецДня(ДатаИзм));
        Запрос.УстановитьПараметр("Организация", Организация);
        Запрос.УстановитьПараметр("Сотрудники", СписокСотрудников);
        
        ТаблицаДоговоров = Запрос.Выполнить().Выгрузить();
    КонецЕсли;
        
    ТабДок.Очистить();
    
    СО = Новый Структура("Сотрудник,СтатусРаботы");
    ВставлятьРазделительСтраниц = Ложь;
    Для Каждого ВыборкаДок Из МассивОбъектов Цикл    
        Если ВставлятьРазделительСтраниц Тогда
            ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
        КонецЕсли;
        
        ВхДанные[12] = ВыборкаДок.ДатаИзменения;
        ВхДанные[13] = ?(ВыборкаДок.Постоянно, "", ВыборкаДок.ДатаОкончанияИзменения);
        
        Организация = ВыборкаДок.Организация;
        ДолжностныеЛица = РегистрыСведений.ДолжностныеЛица.ПолучитьПоследнее(ВыборкаДок.ДатаПриказа, Новый Структура("Организация", Организация));
                
        Если ВыборкаДок.Список Тогда
            Для Каждого ДокИзменение Из ВыборкаДок.ТаблицаДокумента Цикл
                Если ВставлятьРазделительСтраниц Тогда
                    ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
                КонецЕсли;
                
                ЗаполнитьЗначенияСвойств(СО, ДокИзменение);
                СтрокиИзм = ВыборкаДок.ТаблицаИзменений.НайтиСтроки(СО);
                ВывестиДССотрудника(Организация, ДокИзменение, ТабДок, СтрокиИзм, ТаблицаДоговоров, ДолжностныеЛица, ВхДанные);    
                
                ВставлятьРазделительСтраниц = Истина;
            КонецЦикла;
        Иначе
            ВывестиДССотрудника(Организация, ВыборкаДок, ТабДок, ВыборкаДок.ТаблицаИзменений, ТаблицаДоговоров, ДолжностныеЛица, ВхДанные);    
        КонецЕсли;
        
        ВставлятьРазделительСтраниц = Истина;
    КонецЦикла;
    
    ТабДок.ОтображатьСетку        =    Ложь;
    ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
    ТабДок.АвтоМасштаб = Истина;
    ТабДок.ИмяПараметровПечати = "ПриказПортрет";
    ТабДок.ТолькоПросмотр        =    Истина;
    ТабДок.ОтображатьЗаголовки    =    Ложь;
    
    Возврат ТабДок;

КонецФункции
9 Сияющий Асинхраль
 
11.05.17
20:36
Ну что ты творишь?!!! Ты думаешь здесь кто-нибудь будет эти простыни изучать?

Нет, может, конечно, и будет, но, думаю, только за деньги. Ибо одно дело дать умный бесплатный совет, другое изучить несколько сотен строк кода...

И, да, Камин конфа достаточно редкая, чтобы тебе по ней просто так совет дали, проще по камину и авторов проконсультироваться, они вполне адекватно отвечают на вопросы
10 Сияющий Асинхраль
 
11.05.17
20:37
в (9) следует читать "проще по камину у авторов проконсультироваться", далее по тексту...
11 realevgenius
 
11.05.17
20:48
что нужно-то? Вместо тебя написать обработку?