Вывод несколько раз макета ActiveDocument в один документ Word

Текст кода для вывода шаблона  несколько раз в один документ Ворд.

Случилось, что понадобилось вывести шаблон справки к продукции для каждой строки ТЧ товары документа. Создаем макет печ. формы с типом ActiveDocument и загружаем туда наш шаблон. Далее все стандартно по созданию внешней печ. формы + код ниже

    ТабДокумент  = Новый ТабличныйДокумент;
   
ТабДокумент.ИмяПараметровПечати = «ПАРАМЕТРЫ_ПЕЧАТИ_РеализацияТоваровУслуг_Справка»;

    АктивныйДокумент = ПолучитьМакет(«Макет»);
   
КомОбъект = АктивныйДокумент.Получить();

    Попытка

        Word = КомОбъект.Application;
       
Док=Word.Documents(1);
       
// Отключим проверку грамматики и вывод информации о грамматических ошибках.
       
Док.GrammarChecked=0;
       
Док.ShowGrammaticalErrors=0;

        Док.Activate();
       
Файл = КаталогВременныхФайлов() + «файл» + Выборка.Номер + «.doc»;
       
Word.Selection.WholeStory();
       
Word.Selection.Copy();

        Счетчик = 1;
        Для каждого
Строка Из СсылкаНаОбъект.Товары Цикл

            Замена = Док.Content.Find;
           
НомерДокумента = ОбщегоНазначения.ПолучитьНомерНаПечать(СсылкаНаОбъект);
           
Замена.Execute(«[Номер]»,  Ложь, Истина, Ложь, , , Истина, , Ложь, НомерДокумента);
           
Замена = Док.Content.Find;
           
Замена.Execute(«[Дата]»,  Ложь, Истина, Ложь, , , Истина, , Ложь, Формат(Выборка.Дата, «ДЛФ = ДДММГГ»));
           
Замена = Док.Content.Find;
           
Замена.Execute(«[Наименование]»,  Ложь, Истина, Ложь, , , Истина, , Ложь, Строка(Строка.Номенклатура));
           
Замена = Док.Content.Find;
           
Замена.Execute(«[Количество]»,  Ложь, Истина, Ложь, , , Истина, , Ложь, Строка(Строка.Количество));
           
Замена = Док.Content.Find;
           
Замена.Execute(«[Декларация]», Ложь, Истина, Ложь, , , Истина, , Ложь, РегНомерДекларации);
           
Замена = Док.Content.Find;
           
СведенияОПоставщике = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Выборка.Организация, Выборка.Дата,,);
           
ФактАдрес = ФормированиеПечатныхФормСервер.ОписаниеОрганизации(СведенияОПоставщике, «ФактическийАдрес»);
           
Производитель = Выборка.ОрганизацияНаименованиеСокращенное + «, » + Выборка.ФактАдресОрганизации;
           
Замена.Execute(«[Производитель]»,  Ложь, Истина, Ложь, , , Истина, , Ложь, Производитель);

            Word.Selection.EndKey(6);

            Если Счетчик < СсылкаНаОбъект.Товары.Количество() тогда
               
Word.Selection.InsertBreak(7);
               
Word.Selection.Paste();
            КонецЕсли;
           
Счетчик = Счетчик + 1;
        КонецЦикла;

        Док.SaveAs(Файл);
       
Док.Close(0);

        ЗапуститьПриложение(«»»» + Файл + «»»»);

    Исключение
        Сообщить(ОписаниеОшибки());
       
Word.Quit();
    КонецПопытки;

6 Comments

  1. bobank

    Как это реализовать на управляемой форме? На клиенте макет получить нельзя, а при получении с сервера возникает ошибка. Просьба подсказать. Спасибо.

    Reply
  2. sanja

    Печать().Показать() не работает?

    Сам не делал на УФ.

    Могу посоветовать http://infostart.ru/public/85589/

    Reply
  3. mip128

    Спасибо, воспользовался)

    Reply
  4. sanja

    (3) mip128, рад, что помог.

    Reply
  5. milana5

    Спасибо! Прям выручил!!!

    Reply
  6. robix

    Работает то работает, но вот неплохо бы объяснить как оно работает. Например что значить цифра 6 в параметре тут Word.Selection.EndKey(6);

    И цифра 7 тут Word.Selection.InsertBreak(7);

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *