Печать дополнительного соглашения в ЗУП 2.5

Печать - Печатные формы документов

Обработка пакетная печать ЗУП

0
Пример печати дополнительного соглашения договора с сотрудником для проверки государственной инспекцией труда (ГИТ) в ЗУП 2.5 (релиз 2.5.129.3) из шаблона WORD.

Много прочитала информации о работе с OLE Word, пока создавала эту обработку, но так и не нашла как удалить последнюю страницу в готовом документе - изначально вставляется шаблон и далее не обрабатывается. 

Обработка представляет из себя печать в одном документе дополнительные соглашения по работающим сотрудникам на текущую дату в двух экземплярах из шаблона word. В коде ограничение на 100  сотрудников, т.е. 200  экземпляров соглашений, чтобы документ был не слишком объемным. Шаблон копируется во временный файл, вставляется в документ word, создается разрыв страницы, заполняется по сотруднику. 

По кнопке "Дополнительное соглашение" на печать выводится документна выбранного сотрудника в поле "Сотрудник", по кнопке "На всех", на всех работающих сотрудников на текущую дату.

Проверено на релизе 2.5.129.3.

Основной код:


    // сохранить шаблон во временном файле
    Макет = ПолучитьМакет("ДопСоглашение");
    УИД = Новый УникальныйИдентификатор;
    ИмяВременногоФайла = ВременныйПуть + "" + УИД + ".doc";
    Макет.Записать(ИмяВременногоФайла);
    
    Счетчик = 0;
    СчетчикКопий = 0;
    СчетчикКомплектов = 0;
    Для каждого ЭлементСписка Из Сотрудники Цикл
        
        СчетчикКомплектов = СчетчикКомплектов + 1; // счетчик сотрудников
        Если СчетчикКомплектов = 1 Тогда
            
            Попытка
                Word = Новый COMОбъект("Word.Application");
                Документ = Word.Documents.Add(ИмяВременногоФайла); // важно! вставляется шаблон и вместе с ним - форматирование
                Документ.GrammarChecked = 0; // грамматику не проверять
                Документ.ShowGrammaticalErrors = 0; // ошибки в документе не показывать
                Содержание = Word.Selection;
            Исключение
                Сообщить(ОписаниеОшибки());
                Возврат;
            КонецПопытки;
            
        КонецЕсли;
        
        Для Индекс = 1 По 2 Цикл // два экземпляра каждого соглашения
            
            Если Индекс = 1 Тогда // тот же сотрдник и для второго экземпляра
                Физлицо = ЭлементСписка.Значение.Физлицо;
                Работник = ЭлементСписка.Значение;
                СтруктураПараметровПоСотруднику = ПолучитьДанныеПоСотруднику(Работник);
            КонецЕсли;
            
            Если СтруктураПараметровПоСотруднику = Неопределено Тогда
                Продолжить;
            Иначе
                Счетчик = Счетчик + 1; // счетчик соглашений
                Содержание.InsertFile(ИмяВременногоФайла); // вставить очередной шаблон
                Содержание.InsertBreak(2); // разрыв страницы
            КонецЕсли; 
            
            Замена = Документ.Content.Find; // нужно в каждой замене
            Замена.Execute("{Speciality}", Ложь, Истина, Ложь, , , Истина, , Ложь, Строка(СтруктураПараметровПоСотруднику.Должность));
            Замена = Документ.Content.Find;
            Замена.Execute("{Department}", Ложь, Истина, Ложь, , , Истина, , Ложь, Строка(СтруктураПараметровПоСотруднику.ПодразделениеОрганизации));
            Замена = Документ.Content.Find;
            Замена.Execute("{ContractDate}", Ложь, Истина, Ложь, , , Истина, , Ложь, Формат(СтруктураПараметровПоСотруднику.ДатаПриема, "Л=ru; ДЛФ=DD; ДП='НеЗаполнено'"));
            Замена = Документ.Content.Find;
            Замена.Execute("{AgreementDate}", Ложь, Истина, Ложь, , , Истина, , Ложь, Формат(СтруктураПараметровПоСотруднику.ДатаНачала, "Л=ru; ДЛФ=D; ДП='НеЗаполнено'"));
            Замена = Документ.Content.Find;
            Замена.Execute("{AgreementDate1}", Ложь, Истина, Ложь, , , Истина, , Ложь, Формат(СтруктураПараметровПоСотруднику.ДатаНачала, "Л=ru; ДЛФ=DD; ДП='НеЗаполнено'"));
            ДатаДоверенности = ДобавитьМесяц(НачалоГода(ДобавитьМесяц(СтруктураПараметровПоСотруднику.ДатаНачала, -12)), 11);
            Замена = Документ.Content.Find;
            Замена.Execute("{AttorneyDate}", Ложь, Истина, Ложь, , , Истина, , Ложь, Формат(ДатаДоверенности, "Л=ru; ДЛФ=D; ДП='НеЗаполнено'"));
            Замена = Документ.Content.Find;
            Замена.Execute("{Employee}", Ложь, Истина, Ложь, , , Истина, , Ложь, Строка(Физлицо));
            Замена = Документ.Content.Find;
            Замена.Execute("{Employee}", Ложь, Истина, Ложь, , , Истина, , Ложь, Строка(Физлицо));
            
            РезультатСклонения = "";
            Если УниверсальныеМеханизмы.Просклонять(глЗначениеПеременной("глКомпонентаСклоненияФИО"), Физлицо, 5, Физлицо.Пол, РезультатСклонения) Тогда
                Работник = РезультатСклонения;
            КонецЕсли;
            Замена = Документ.Content.Find;
            Замена.Execute("{Employee1}", Ложь, Истина, Ложь, , , Истина, , Ложь, Строка(РезультатСклонения));
            
            // Подписи
            ИОФамилия = ОбщегоНазначенияЗК.ИнициалыФизЛицаФамилия(Физлицо);
            Замена = Документ.Content.Find;
            Замена.Execute("{Employee2}", Ложь, Истина, Ложь, , , Истина, , Ложь, ИОФамилия);
            Замена = Документ.Content.Find;
            Замена.Execute("{DateOfBirth}", Ложь, Истина, Ложь, , , Истина, , Ложь, Формат(СтруктураПараметровПоСотруднику.ДатаРождения, "ДФ=dd.MM.yyyy; ДЛФ=D"));
            Замена = Документ.Content.Find;
            Замена.Execute("{Number}", Ложь, Истина, Ложь, , , Истина, , Ложь, Строка(СтруктураПараметровПоСотруднику.ДокументНомер));
            Замена = Документ.Content.Find;
            Замена.Execute("{Series}", Ложь, Истина, Ложь, , , Истина, , Ложь, Строка(СтруктураПараметровПоСотруднику.ДокументСерия));
            Замена = Документ.Content.Find;
            Замена.Execute("{DateOfIssue}", Ложь, Истина, Ложь, , , Истина, , Ложь, Формат(СтруктураПараметровПоСотруднику.ДокументДатаВыдачи, "ДФ=dd.MM.yyyy; ДЛФ=D"));
            Замена = Документ.Content.Find;
            Замена.Execute("{IssuedBy}", Ложь, Истина, Ложь, , , Истина, , Ложь, Строка(СтруктураПараметровПоСотруднику.ДокументКемВыдан));
            Замена = Документ.Content.Find;
            Замена.Execute("{Address}", Ложь, Истина, Ложь, , , Истина, , Ложь, Строка(СтруктураПараметровПоСотруднику.Адрес));
            
        КонецЦикла;
        
        Если СчетчикКомплектов = 100 Тогда // когда счетчик 100, то начинать заново
            СчетчикКомплектов = 0;
            Word.ActiveWindow.View.ShowFieldCodes = Ложь;
            Word.Visible = Истина;
            Прервать;
        КонецЕсли;
        
    КонецЦикла;
    
    Word.ActiveWindow.View.ShowFieldCodes = Ложь;
    Word.Visible = Истина;

 

0

Скачать файлы

Наименование Файл Версия Размер
Печать дополнительного соглашения в ЗУП 2.5:
.epf 77,32Kb
27.04.18
1
.epf 77,32Kb 1 Скачать

См. также

Избранное Подписка Сортировка: Древо
В этой теме еще нет сообщений.
Оставьте свое сообщение