Сохранение макета 1с в word

   LivingStar

08.12.14 — 07:06

В 1с у документа есть красочная печатная форма, с таблицами, изображением и прочими данными. Нужно её сохранить в ms word в альбомном формате. Можно ли сохранить сразу весь этот макет предварительно программно сформировав его по документу?

   LivingStar

1 — 08.12.14 — 07:20

никто не подскажет примером?

   anaed

2 — 08.12.14 — 07:51

можно

табдок.записать(<имяфайла>,типфайлатабличногодокумента.DOCX);

   LivingStar

3 — 08.12.14 — 08:07

(2) скачал пример, пробую делать через active document

то что вы говорите сильно просто думаете просто так сработает? Зачем тогда приведены эти сложные примеры?

Сейчас такое предктновение, создаю active document, загружаю туда документ .docx в альбомном формате, но он не создается (((( При нажатии на готово никакой реакции.

   anaed

4 — 08.12.14 — 08:15

(3) почему бы сначала не попробовать простой способ?

   LivingStar

5 — 08.12.14 — 08:20

(4) попробую

   LivingStar

6 — 08.12.14 — 08:34

(4) слушай ниче так получилось одной строкой, только почему то приходится программу выбирать юля просмотра, по умолчанию без привязки лежит к ms word почему то(( ну и ещё мож какие преткновения этого метода потом выявятся!

   LivingStar

7 — 08.12.14 — 08:42

(4) А как в этом случае задать альбомный формат? Не подскажете? Открывается в портретном…

   LivingStar

8 — 08.12.14 — 08:43

мож так ТабДокумент.ОриентацияСтраницы=ОриентацияСтраницы.Ландшафт;

   LivingStar

9 — 08.12.14 — 08:46

такой ход не помог, предварительный просмотр все равно в портретной ориентации

    ТабДокумент.ОриентацияСтраницы=ОриентацияСтраницы.Ландшафт;

    ТабДокумент.Записать(«Y:Check_»+Прав(Номер,4)+».docs»,типфайлатабличногодокумента.DOCX);

   LivingStar

10 — 08.12.14 — 08:55

как подобраться к ms word задать ориентацию страницу ландшафт, почему не работает (9) ?

   LivingStar

11 — 08.12.14 — 09:04

как то решал такой вопрос в эксель, подобное сюда прикручу

    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    ИмяФайла        = ПутьКФайлу;

    //_Ориентация      = ОриентацияСтраницы.Ландшафт;

    ПолеСлева       = 0;

    ПолеСправа      = 0;

    ПолеСверху      = 0;

    ПолеСнизу       = 0;

    АвтоВысотаСтрок = Ложь;

    Попытка

        Excel                          = Новый COMОбъект(«Excel.Application»);

        Excel.Visible                  = False;

        Workbook                       = Excel.Workbooks.Open(ИмяФайла);

        Лист                           = Workbook.Sheets(1);

        Лист.PageSetUp.Zoom            = False;

        Лист.PageSetUp.FitToPagesWide  = 1; // По ширине листа

        Лист.PageSetUp.FitToPagesTall = False;

        //Если Ориентация = ОриентацияСтраницы.Ландшафт Тогда

            Лист.PageSetup.Orientation = 2; // xlLandscape

        //Иначе

        //   Лист.PageSetup.Orientation = 1; // xlPortrait

        //КонецЕсли;

        //Лист.PageSetup.LeftMargin   = Excel.Application.InchesToPoints(ПолеСлева  / 25.4); // Поле слева

        //Лист.PageSetup.RightMargin  = Excel.Application.InchesToPoints(ПолеСправа / 25.4); // Поле справа

        //Лист.PageSetup.TopMargin    = Excel.Application.InchesToPoints(ПолеСверху / 25.4); // Поле сверху

        //Лист.PageSetup.BottomMargin = Excel.Application.InchesToPoints(ПолеСнизу  / 25.4); // Поле снизу

        //

        Лист.PageSetup.LeftMargin   = Excel.Application.InchesToPoints(ПолеСлева);  // Поле слева

        Лист.PageSetup.RightMargin  = Excel.Application.InchesToPoints(ПолеСправа); // Поле справа

        Лист.PageSetup.TopMargin    = Excel.Application.InchesToPoints(ПолеСверху); // Поле сверху

        Лист.PageSetup.BottomMargin = Excel.Application.InchesToPoints(ПолеСнизу);  // Поле снизу

        //

        Если АвтоВысотаСтрок Тогда

            // Устанавливаем высоту строк

            НомерСтроки = 1;

            Пока НомерСтроки < 100000 Цикл

                Ячейка = Лист.Cells(НомерСтроки, 1);

                Строка = Ячейка.EntireRow();

                Строка.AutoFit();

                Если ПустаяСтрока(Ячейка.Value) Тогда

                    Прервать;

                КонецЕсли;

                НомерСтроки = НомерСтроки + 1;

            КонецЦикла;

        КонецЕсли;

        Excel.DisplayAlerts = False;

        Workbook.Save();

        Workbook.Close();

        Workbook = Неопределено;

        Excel.Quit();

        // 2014_09_19 LivingStar ->

        Excel.Visible         = True;

        Excel.DisplayAlerts = True;

        // <-

        Excel                 = Неопределено;

    Исключение

    КонецПопытки;

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

   LivingStar

12 — 08.12.14 — 09:39

как в ворде подобно (11) задать ораентацию страницы подскажет кто?

   LivingStar

13 — 08.12.14 — 09:52

up!

   vicof

14 — 08.12.14 — 09:53

(0) down!

   LivingStar

15 — 08.12.14 — 10:04

подскажите не найду ни одного примера как изменить ориентацию страницы в форд

   vicof

16 — 08.12.14 — 10:05

запиши макрос в «форде»

   LivingStar

17 — 08.12.14 — 10:06

(16) да какой макрос! в Excel я делал как в (11) сохраняешь файл на диск а следом обрабатываешь его из 1с тем же макросом

для ворда реально не найду ни одно примера, там методы различные с (11)

   vicof

18 — 08.12.14 — 10:10

(17) Ты не знаешь, что такое макрос в пакете мс офис — поищи в интернете.

   LivingStar

19 — 08.12.14 — 10:23

(18) зачем мне макрос в ворде???? я его и делаю из 1с, не прикалывайся!!!!

   vicof

20 — 08.12.14 — 10:26

   Любопытная

21 — 08.12.14 — 10:28

Если в вашем приложении используется печать, чаще всего без использования этого объекта не обойтись. Он позволяет программным образом настроить то, что на графическом экране настраивается через меню Файл->Параметры страницы. Объект PageSetup является вложенным в объекты Document, Selection и Range, и обычно обращение к нему происходит через эти объекты. Например, чтобы при печати документа он был выведен в альбомной ориентации, можно воспользоваться командой

ThisDocument.PageSetup.Orientation = wdOrientLandscape

http://www.askit.ru/custom/vba_office/m10/10_06_07_word_pagesetup_object.htm

   Любопытная

22 — 08.12.14 — 10:29

(20) Отличная картинка! :)

   LivingStar

23 — 08.12.14 — 10:55

(21) я это видел спасибо, я не могу подобраться к ThisDocuments

   vicof

24 — 08.12.14 — 10:56

   LivingStar

25 — 08.12.14 — 11:04

(21)

как будет правильно?

        Word                          = Новый COMОбъект(«Word.Application»);

        Word.Visible                  = False;

        Word.Documents.Open(ИмяФайла);

        ThisDocument = Word.ActiveDocument();        

        ThisDocument.PageSetup.Orientation = Orientation.wdOrientLandscape;

   Любопытная

26 — 08.12.14 — 11:06

(25) так не работает?

   LivingStar

27 — 08.12.14 — 11:10

Word                          = Новый COMОбъект(«Word.Application»);

        Word.Visible                  = False;

        ThisDocument                  = Word.Documents.Open(ИмяФайла);

        ThisDocument.PageSetup.Orientation = Orientation.wdOrientLandscape;        

|

после вот этой строки слетает, как нужно?

        ThisDocument.PageSetup.Orientation = Orientation.wdOrientLandscape;

   vicof

28 — 08.12.14 — 11:12

И откуда 1с должна знать про какую-то там Orientation?

   LivingStar

29 — 08.12.14 — 11:24

Попытка

        Word                          = Новый COMОбъект(«Word.Application»);

        Word.Visible                  = False;

        ThisDocument                  = Word.Documents.Open(ИмяФайла);

        ThisDocument.PageSetup.Orientation = 1;        

        Word.DisplayAlerts = False;

        ThisDocument.Save();

        ThisDocument.Close();

        //Workbook.Save();

        //Workbook.Close();

        Workbook = Неопределено;

        Word.Quit();

        // 2014_09_19 LivingStar ->

        Word.Visible        = True;

        Word.DisplayAlerts = True;

        // <-

        Word                = Неопределено;

    Исключение

    КонецПопытки;

   Любопытная

30 — 08.12.14 — 11:32

(29) Ну вроде ж везде в примерах без Orientation в правой части пишут.

   LivingStar

31 — 08.12.14 — 11:33

(30) так вообще не будет работать, они где то выше определили её значит

   vicof

32 — 08.12.14 — 11:47

(31) «они».

Инопланетяне?

   Любопытная

33 — 08.12.14 — 11:51

(31) Класс WdOrientation, но что-то в com соединении оно не работает

   LivingStar

34 — 08.12.14 — 11:59

ну вот так в кратце

|

    Попытка

        Word                                = Новый COMОбъект(«Word.Application»);

        Word.Visible                        = False;

        ThisDocument                        = Word.Documents.Open(ИмяФайла);

        ThisDocument.PageSetup.Orientation  = 1;        

        ThisDocument.PageSetup.BottomMargin = 10;

        ThisDocument.PageSetup.RightMargin  = 10;

        ThisDocument.PageSetup.LeftMargin   = 10;

        ThisDocument.PageSetup.TotMargin    = 10;

        Word.DisplayAlerts                     = False;

        ThisDocument.Save();

        ThisDocument.Close();

        Word.Visible        = True;

        Word.DisplayAlerts = True;        

        Word.Quit();

        Word                = Неопределено;

    Исключение

    КонецПопытки;

|

но вот заметил на производительности это не очень сказывается, подвисает при создании этого ворда

оптимизировать если это нужно делать через Active document макет, но я пробовал создать макет, выбирая нужный шаблон из ворд, так по готово никакой реакции, что туда нужно добавлять то? Из за чего может не принимать?

   vicof

35 — 08.12.14 — 12:06

(34) Поток сознания

  

LivingStar

36 — 08.12.14 — 12:32

так что там нужно загружать в макет Active documents? .docx почему не идет? там изображение таблица разноцветная, текст…

В данной статье рассмотрим достаточно простой и удобный способ формирования документов Word из 1С. Сама по себе 1С формировать документы Word “не умеет”, и для работы с такими документами используется собственно MS Word. Поэтому вначале нужно определенным образом подготовить документ, а после загрузить его в макет двоичных данных в 1С.
Для корректной работы данного способа необходимо, чтобы на компьютере, где происходит формирование документа, был установлен MS Office. Также, документ формируется на клиенте, с тем чтобы вывести его на экран пользователю. Но возможно формирование и на сервере, если на сервере установлен Word – например, для прикрепления файлов к справочникам.

Подготовка шаблона Word

В документе Word можно вставлять поля специального типа DocVariables. Это можно сделать либо вставив соответствующий фрагмент текста, либо через графический интерфейс. На примере Word 2016, это делается через меню Вставка / Экспресс блоки/ Поле. В списке доступных полей нас интересует DocVariable. Указываем нужное имя и жмем ОК.

1С напечатать Word DocVariables

Для скрытия / отображения кодов полей в документе, жмем Alt + F9. Для экономии времени, можно просто копировать нужные поля и вставлять в нужные места документа. Чтобы создать новую переменную документа, достаточно просто в кавычках заменить имя.

1С сформировать Word

Формирование документа Word из 1С

После того, как шаблон готов, его нужно загрузить в виде макета с типом “Двоичные данные”. Это можно сделать в обработке, в общем макете, в справочнике и т.д. Рассмотрим на примере хранения макета в обработке.

Сперва нужно создать ComОбъект Word, сохранить файл из макета во временный файл, и прочитать его в Word. Далее мы переходим к заполнению переменных DocVariablе любым удобным способом – можно явно указывать нужные имена переменных и их значения, а можно заранее подготовить структуру данных и в цикле заполнить по этой структуре. Далее необходимо обновить поля в документе Word, скрыть коды полей, если вдруг они включены, и отобразить документ. Для доступа к конкретному полю DocVariable используется код  вида ComОбъектWord.Variables(“СтроковоеИмяПеременной”).Value. Делаем это в попытке, на случай, если поля с таким именем в Word нет.

&НаКлиенте
Процедура ВывестиДокументWord(Команда)
	МакетШаблонWord = ПолучитьМакетНаСервере();	
	ОбъектWord = Новый COMОбъект("Word.Application");	
	ИмяВременногоФайла = ПолучитьИмяВременногоФайла();
	МакетШаблонWord.Записать(ИмяВременногоФайла);
	ДокументWord = ОбъектWord.Documents.Add(ИмяВременногоФайла);	
	//Удобнее всего заполнять через структуру
	СтруктураДанных = Новый структура("ДатаДокумента, ТекстИз1С", Формат(ТекущаяДата(),"ДЛФ=DD"), "Какой-то текст из 1С");
	Для Каждого КлючИЗначение Из СтруктураДанных Цикл
		Попытка 
			ДокументWord.Variables(КлючИЗначение.Ключ).Value = КлючИЗначение.Значение;
		Исключение
		КонецПопытки;
	КонецЦикла;
	
	ДокументWord.Fields.Update();
	ОбъектWord.ActiveWindow.View.ShowFieldCodes = False;
	ОбъектWord.Visible = True;	
КонецПроцедуры

&НаСервере
Функция ПолучитьМакетНаСервере()
	
	Возврат РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет");
	
КонецФункции

Печатная форма в формате Word из 1С 8.3 и 8.2

Рассмотрим два способа выгрузить данные из программы 1С 8.3 в Word. Эти способы можно использовать в альтернативу стандартных внутренних и внешних печатных форм 1С. Пример обработки, который описывается в статье, можно скачать здесь.

Кстати, в новой версии 1С Бухгалтерия появилась возможность настройки пользовательских шаблонов договоров без программирования.

Выгрузка данных из 1C в шаблон Word (Active document)

Чтобы сформировать документ в формате Word, нужно сначала подготовить шаблон. А точнее, создадим макет с типом «Active document» для примера во внешней обработке:

новый шаблон в 1С

Затем выбираем объект, например, Microsoft Office Word 97-2003:

Откроется чистый документ Word (причем в конфигураторе).

А в документе Word будем расставлять закладки. С закладками работать приятней и быстрей.

Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания — попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>

Выбираем режим закладок и расставляем:

новая закладка в word

Прописываем такую процедуру:

После вызова процедуры мы получим открытый документ с таким вот сообщением:

результат выполнения кода

Создание документа Word сразу (Word.Application)

Документ Word можно создать в 1C без использования макета. Напрямую, с помощью COM объекта. Делается это не сложнее.

После запуска кода мы видим вот такую красивую картину:

Ссылка на скачивание обработки — Выгрузка в Word.

Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

Вывод данных в макет 1с (на примере Word)

В этой статье мы разберем с Вами следующую задачу, нам потребуется вывести данные в макет 1с (на примере Word), в 1с это макет на базе «Active Document». Подстановку в Word документ мы будем делать с помощью закладок, чтобы установить закладку в документе Word Вам необходимо сделать следующие действия:

  1. Откройте Word документ.
  2. Найдите нужное место в тексте куда Вы хотите делать подстановку, щелкните туда курсор мышки, после этого переходим Вставка —> Закладка.
  3. Даем закладке имя и нажимаем вставить.
  4. Расставляем нужное количество закладок в макете 1с (документ Word)

После того как мы расставили все закладки в документе, мы приступаем к созданию макета. Для этого в 1с выбираем веточку «Макеты», кликаем правой кнопкой мыши и добавляем макет, появится список возможных макетов выбираем «Active Document», затем указываем путь к Word файлу. Теперь чтобы вместо закладок поставить необходимый текст и вывести данные в макет 1с Word мы сделаем следующие действия, напишем код приведенный ниже:

код вывода данных в макет 1с для подстановки текста вместо закладок

На этом все, вот такой простой способ, без лишних заморочек и неудобств. Очень рекомендуем пользоваться подобным методом.

Наши программисты оказывают полный спектр услуг 1с.

Если скопировать документ в 1С, тогда впоследствии его можно загрузить в другую программу или отправить в банк. С программой 1С работают все предприятия, ее база содержит все действия, совершаемые при ведении хозяйственной деятельности компании. Документы, хранящиеся в 1С, представляют собой единый учет организации. Программно скопировать документ в 1С вам помогут специалисты компании «Сетби». Они разберутся в самых сложных вопросах, касающихся автоматизации и настройки ПО. Наша задача — объяснить доступным языком, как работать на платформе 1С.

Как скопировать список документов в 1С программе?
Практически все предприниматели используют для учета бизнес-процессов, а также для ведения бухгалтерской деятельности программу 1С. Учитывая упрощенный интерфейс, разобраться начинающему пользователю ПО будет сложно во всех имеющихся возможностях платформы. Даже то, как копировать табличный документ в другой 1С, знает не каждый работающий в сфере финансов человек. Взаимодействуя с большим количеством информации нужно помнить об обеспечении эффективного способа заполнения данных:
• документации;
• операций;
• справочников.

Персоналу необходимо уметь разбираться в том, как скопировать строку документа в 1С. Для этого требуется придерживаться четко прописанных действий. Сначала заходим в окно «Изменение таблиц товаров», находим «Добавить из документа», выбираем строку и нажимаем кнопку «Перенести в документ». Если вы задаетесь вопросом, как скопировать несколько документов в 1С, тогда знайте, что стандартная конфигурация не предусмотрена выполнять данную функцию. Для того чтобы проделать данную операцию с документом, необходимо дополнительно поработать с настройками функционала программы.

Рассмотрение нюансов в работе с 1С программой
Как же скопировать один документ в другой 1С с первого раза и не допуская ошибок, знают профессионалы своего дела, работающие в компании «Сетби». На начальном этапе стоит разобраться в том, что такое конфигурация в программе 1С — это основной функционал, который позволит с 1С 7.7 скопировать документ.

Конфигураций существует более 500, их задачей является автоматизация отраслевой специфики организации на должном уровне. Производить работу в 1С можно в двух встроенных режимах: «Предприятие» и «Конфигуратор». Структура 1С рассчитана на ведение сразу нескольких видов учета:
• оперативного;
• налогового;
• бухгалтерского.

Программно скопировать и открыть документ в 1С можно благодаря правильно написанному коду. При малейшей неточности или погрешности в его составлении у вас будут возникать ошибки в переносе данных, поэтому следует внимательно заполнять все поля. При вводе документов с многострочной частью копирование дает возможность не заполнять полностью всю часть данных строки. Взять все сведения можно из уже имеющегося ряда.

Как скопировать документ из 1С в Ворд?
Бухгалтерам для полноценного и более комфортного рабочего процесса нужно проделывать с документами множество разных манипуляций. Функционал программного обеспечения 1С не может полностью удовлетворить все потребности пользователя, поэтому в таких случаях есть необходимость скопировать документ в тонком клиенте 1С и сохранить в программе Ворд. Это объясняется тем, что функциональные возможности платформы Word намного разнообразней, они позволяют строить графики, диаграммы, и в целом приводить документ в читабельный и внешне приемлемый вид.

Документ с 1С скопировать в Ворд можно благодаря функции, располагающейся на панели задач «Сохранить как». Единственное, что стоит помнить в этой работе, что надо сохранить документ в том формате, который подходит к нужной вам программе. Чтобы скопировать весь документ для Word из 1С, нужно выделить необходимый текст или таблицу, и потом выполнить в панели задач необходимые действия. В сети Интернет можно найти обучающие видео уроки, в которых есть возможность почерпнуть что-то важное для своей работы. Но лучше, чем наши специалисты компании «Сетби» вам никто не объяснит, как скопировать документ из 1С в Word.

Обо всех деталях процесса копирования документов в 1С расскажут наши сотрудники
Иногда случается так, что нет надобности копировать сразу весь документ, а наоборот нужен только один столбец или одна строка для переноса в другую программу. Выделенные строки табличных частей можно копировать из одного документа в другой зная все тонкости данного процесса. В 1С 8 скопировать строку документа имеется возможность при помощи следующих кнопок: скопировать строки — Ctrl+Shift+C, вставить строки — Ctrl+Shift+V. Применяя копирование в документах можно заполнить табличную часть за короткий промежуток времени.

Не теряйте свое ценное время в поисках нужной информации о программном копировании документа в 1С 8 — компания «Сетби» предоставит вам высококвалифицированных людей в данной области. Все работы ведутся нами по регламентам, благодаря этому этапы рабочего процесса завершаются в срок. Оставляйте свои номера телефонов, и наши менеджеры свяжутся с вами в ближайшее время.

Формирование и заполнение документов Microsoft Word ЛЮБОГО шаблона на основании документов и справочников системы. Любые документы и справочники 1С. Заполнение по реквизитам шапки и табличной части.





  • Основное




  • Совместимость




  • Прочее
Артикул 358
Обновлено 21.12.2022
Исходный код Открыт
Изменение конфигурации Не требуется
Покупок 55
  • BAS ERP (UA)
  • BAS Комплексное управление предприятием 2 (UA)
  • BAS Управление торговлей 3 (UA)
  • Бухгалтерия предприятия 3.0
  • Зарплата и управление персоналом 3.1
  • Комплексная автоматизация 2.4 (BY)
  • Комплексная автоматизация 2.4 (KZ)
  • Комплексная автоматизация 2.4 и 2.5
  • Управление нашей фирмой 1.6
  • Управление нашей фирмой 3.0
  • Управление предприятием ERP 2.4 и 2.5
  • Управление торговлей 11.4 и 11.5
  • Управление торговлей 3 (BY)
  • Управление торговлей 3 (KZ)

Очень полезная внешняя обработка для всех типовых конфигураций 1С:Предприятие 8.3, позволяет формировать файл Word по выбранному шаблону из справочников и документов системы. С ее помощью вы можете распечатывать из 1С различные спецификации, трудовые договоры и договоры с контрагентами, гарантийные талоны и прочее прочее. Имея под рукой Word нужной структуры и чуть доработав его, вы получите возможность формировать его прямо из 1с с заполнением всех нужных параметров.

Принцип работы обработки следующий:

  • выбираем Word нужной структуры,
  • в тех местах файла, где необходимо вставить информацию из 1С, делаем закладки (bookmarks),
  • после подготовки шаблона добавляем его в 1С (справочник Файлы),
  • настраиваем заполнение шаблона печати в 1С,
  • печатаем нужные документы/справочники, выбрав созданный шаблон.

Подготовка шаблона Word

Для демонстрации работы обработки настроим печать спецификации к договору из документа Заказ клиента. Допустим, у нас есть такой Word:

файл Word

Из него будем формировать полноценную спецификацию. Необходимо из этого файла сделать универсальный макет, который бы каждый раз брал данные для заполнения из исходного заказа. Для этого выделяем нужные блоки в документе и для них делаем закладки:

добавление закладок в файл Word

Каждой закладке даем имя.

создание закладки в файле Word

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

При печати также будем заполнять таблицу товаров. Чтобы она сформировалась красиво, оставим шапку и одну пустую строку:

удаление строк в файле Word

Сохраняем Word, закрываем.

Настройка заполнения шаблона

Теперь в программе открываем журнал заказов клиента, заходим в меню печати и жмем кнопку для настройки печати по шаблону Word:

открыть настройки печати по шаблону

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

Окно настроек выглядит следующим образом:

окно настроек печати по шаблону

В верхней части расположена таблица сохраненных шаблонов печати (которые относятся именно к заказу клиента). Добавляем новую строку таблицы, создаем новый шаблон. В строке указываем наименование шаблона (по которому впоследствии будет заполняться наименование файла). В этом наименовании можно использовать не только произвольные символы, но и заменяемые параметры (в квадратных скобках). Далее выбираем собственно файл Word (предварительно его надо добавить в справочник Файлы).

выбрать файл шаблона

Если нужно сразу сохранить файл в присоединенные файлы заказа клиента, устанавливаем галку. В результате получится подобная картина:

заполнение настроек таблицы шаблонов

При выборе файла автоматически заполняется расположенная ниже таблица закладок. Наша следующая задача — настроить источники значений для этих закладок.

выбор источника значения

Можно использовать как реквизиты исходного объекта печати (в данном случае заказа клиента), так и реквизиты реквизитов.

Для более быстрого заполнения поддерживается ввод названий с клавиатуры.

В случае работы с датой можно выбрать формат вывода.

выбор формата даты

В отдельной колонке сразу можно увидеть значение, которое будет подставлено в закладку макета Word.

отображение значения заполнения

Полный перечень доступных реквизитов выглядит внушительно:

список доступных реквизитов

Для объектов можно использовать не только значения собственных, но и дополнительных (созданных пользователями вручную) реквизитов. Для организаций и контрагентов можно использовать адреса, почту, телефоны и банковские реквизиты. Для физических лиц можно использовать паспортные данные.

В отдельной колонке таблицы закладок можно задавать падеж (для правильного склонения полученного значения), а также необходимость склонения ФИО.

На выходе получается такая таблица:

таблица закладок Word

В шаблоне присутствует таблица товаров — для настройки ее заполнения переходим на вкладку Таблицы.

Выбираем из какой табличной части брать данные:

выбор табличной части

После этого через запятую перечисляем названия реквизитов табличной части, значениями которых необходимо заполнить таблицу нашего шаблона. Их количество должно совпадать с количеством колонок шаблона. Для справки в последней колонке приведены все возможные значения.

настройка заполнения таблицы

Для некоторых колонок можно просто прописать постоянное значение (на скрине выше это ШТ).

На этом настройка шаблона завершена, не забываем сохранить настройки.

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

Если нужно сохранить еще один шаблон, то проделываем повторно такую же работу.

Для редактирования шаблона выделяем его в верхней таблице (при этом таблица закладок заполняется автоматически из сохраненных настроек), вносим правки и сохраняем.

Для удаления шаблона выделяем его в списке и нажимаем Del, затем сохраняем настройки.

Для печати вызываем команду По шаблону Word (печать), в результате на экране появляется форма прикрепленного файла (т.к. мы включили сохранение файла).

присоединенный файл

Обратите внимание, что в названии файла заменяемые параметры исчезли — вместо них подставились значения документа.

Итоговый файл Word выглядит так (название файла тоже заполнилось согласно настройке):

печатная форма Word

Если для объекта создать несколько шаблонов печати, при нажатии на кнопку печати будет появляться окно с выбором нужной печатной формы.

выбор печатной формы Word

Документы можно печатать как по отдельности, так и списком.

Чтобы оставить комментарий, зарегистрируйтесь и авторизуйтесь на сайте.

Цитата: magnifico61 от 01 июн 2018, 11:40
Или как вариант вывести табличный документ в ворд через com.

Уверен, что в Word всё же надо?
Как не крути, но на своём опыте проверил, что 1С (8.2 по крайней мере) нормально сохраняет таб.документы только в 3 формата, один из которых «родной». Это mxl, xls и pdf. Во всех остальных начинаются искажения ширинвысот колонок и прочие визуальные глюки. Одна и та же печатная форма при сохранении в xls выглядит нормально, также как на экране, а в xlsx и docx таблица вытягивается как шея у жирафа, и такого видел немало — чем сложнее макет, тем больше искажений.
Я пытался в одной обработке программно сохранять ТабДок в Word, и это работало, хоть и выглядело некрасиво, но когда дал доступ пользователям, оказалось что при выполнении кода

ТабДок.Сохранить(ПутьКФайлу,ТипФайлаТабличногоДокумента.DOCX) у многих вообще 1С вылетает! Именно в этот формат, с другими всё в порядке, я проверял.
Всё это у меня напрочь отбило желание с Word связываться.

Если всё ещё есть желание мучаться с DOCX можно попробовать сохранить в HTML и пересохранить через КОМ объект, что-то типа

//ТабДок - твой документ
//ПутьКФайлу - куда нужно сохранить
Врем = ПолучитьИмяВременногоФайла("html");
ТабДок.Сохранить(Врем,ТипФайлаТабличногоДокумента.HTML);
Word = Новый COMОбъект("Word.Application");
Word.Visible = 0;
Word.Documents.Add(Врем);
ТекДок = Word.ActiveDocument;
ТекДок.SaveAs(ПутьКФайлу,16); //16 - формат файла по умолчанию для текущей версии офиса
Word.Application.Quit();

Писал по памяти, могут быть ошибки.
Так у меня работало, но результат, опять же не радовал, т.к. сбивались ширины, «уезжали» картинки и т.д.


ВНИМАНИЕ! При использовании кодов описанных ниже, уберите символ _


Давайте рассмотрим на примерах как это делается! =) Мне известно 2 способа:
1. Путем замены шаблонного текста в макете Wordа.
2. Путем вставки текста с помощью закладок в Wordе,

В первом случае сразу скажу, что длина строки передаваемая в функцию замены, довольно небольшая 255 символов, да и расстановка шаблонных выражений в макете Word занимает довольно много времени. Через процедуру Content.Find.Execute.

Во втором случае длина, насколько мне известно неограниченна, также воськаться с закладками намного быстрее и удобнее, чем расставлять шаблонный текст. Используя Bookmarks().S_elect(). Поэтому давайте на коде рассмотрим второй пример.

И так, для начала необходимо добавить Word макет к документу. Добавляем макет с помощью конструктора макетов указав Active document и выбрав соответствующий макет.

Называем его Акт. Открываем макет в 1Ске, ставим курсор в нужном месте, переходим в меню Вставка закладка нажимаем добавить закладку к примеру у меня это НарушенияТекст

Теперь кидаем на форму документа кнопку Сформировать и по нажатию на нее пишем код который открывает наш макет Word ищем закладку по имени и вставляет туда текст:

Код 1C v 8.х

 //инициализация часть 1
СсылкаМакет = ПолучитьМакет(Акт);
MSWord = СсылкаМакет.Получить();
Попытка
СсылкаМакет = MSWord.Application.Documents(1);
СсылкаМакет.Activate();
//выгружаем табличную часть с нарушениями в строку часть 2
str = Новый COMОбъект(ADODB.Stream);
str.Open();
СтрочкаТаблицы = ЭлементыФормы.Нарушения.ТекущиеДанные;
Для Каждого СтрочкаТаблицы Из Нарушения Цикл
str.WriteText( + СтрочкаТаблицы.Описание + Нарушены требования СНИПФЗГОСТ: + СтрочкаТаблицы.СНИПФЗГОСТ + Статья: + СтрочкаТаблицы.ЧастьСтатья + Символ(13),0);
КонецЦикла;
str.Position = 0;
НарушенияТекст = str.readText();

//вставляем в закладку текст с нарушениями часть 3
MSWord.Bookmarks(НарушенияТекст).S_elect();
MSWord.Application.S_election.TypeText(НарушенияТекст);

//открыть Word часть 4
СсылкаМакет.Application.Visible = Истина;

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

Это пример вывода множества строчек из табличной части одной строкой, если нужно просто выгрузить какой-то реквизит то можно пропустить часть 2 и перейти к части 3.

Для выгрузки табличной части в форме таблицы можно использовать функцию автоформата, примеру код выгрузки табличной части документа Предписание:

Код 1C v 8.х

 Word = MSWord.Application;
Документ = Word.ActiveDocument();
//Переместиться вниз на 22 строк
Word.S_election.MoveDown(,22);
Документ.Paragraphs.Add();
//подготовка таблицы:
Rng = Word.S_election.Range;
//Формируем заголовок:
Rng.I_nsertAfter(№ п/п*Установленные нарушения и меры по их устранению*Основания);
Rng.I_nsertParagraphAfter();
//сама таблица
СтрочкаТаблицы = ЭлементыФормы.НарушенияПредписание.ТекущиеДанные;
Для Каждого СтрочкаТаблицы из НарушенияПредписание Цикл
Rng.I_nsertAfter(Строка(СтрочкаТаблицы.НомерСтроки)+*+СтрочкаТаблицы.Описание + ; + СтрочкаТаблицы.Предписание +* + СтрочкаТаблицы.СНИПФЗГОСТ + + СтрочкаТаблицы.ЧастьСтатья);
Rng.I_nsertParagraphAfter();
КонецЦикла;
Rng.ConvertToTable(*);
Документ.Tables(1).AutoFormat(17); //номер таблицы в шаблоне
Word.Visible = Истина;

Ну вот и все =)
Автор: saylolpls


Еще способ Active document
В Конфигураторе Макеты — правый клик — Добавить
Тип макета: Active document
Создать новый — Документ Microsoft Word

Меню Вставка — Поле — Автоматизация — DocVariable
Написать имя поля в графе «Новое имя:» ДатаПриказа

В модуле формы документа создаем кнопку, и в ее обработчике пишем:

Код 1C v 8.х

 Процедура ОсновныеДействияФормыWord(Кнопка)
АктивныйДокумент = ПолучитьМакет("Макет");
КомОбъект = АктивныйДокумент.Получить();

КомОбъект.Application.Visible=1;
КомОбъект.Variables.Item("ДатаПриказа").Value="24.01.2007";
КомОбъект.Fields.UpDate();

КомОбъект.PrintOut(); //распечатать документ

//Ожидание окончания отправки на печать...
Пока objWord.Application.BackgroundPrintingStatus<>0 Цикл
Предупреждение("Ожидание",1);
КонецЦикла;

КомОбъект.Application.Quit(); //закрыть Word
КомОбъект = 0;
КонецПроцедуры

2) добавляем не поле, а Закладку
Меню Вставка — Закладка и далее указываем ее имя («ИмяЗакл»)

Код 1C v 8.х

 Процедура ОсновныеДействияФормыWord(Кнопка)
АктивныйДокумент = ПолучитьМакет("Макет");
КомОбъект = АктивныйДокумент.Получить();
КомОбъект.Application.Visible=1;
КомОбъект.Bookmarks(СокрЛП("ИмяЗакл")).S_elect();
КомОбъект.Application.S_election.TypeText(СокрЛП("тест проверка"));
КонецПроцедуры


Код 1C v 8.2 УП

 // Параметры договора обозначены в тексте переменными вида "[%НомерДоговора%]"
Функция ПечатьДокумента() Экспорт

Договор = ПолучитьМакет("ActiveDocument_ДоговорПоставки"); // получим макет-ActiveDocument
MSWord = Договор.Получить();
Попытка
Doc = MSWord.Application.Documents(1);
Doc.Activate();
Replace = Doc.Content.Find;

FindText = "{НомерДоговора}"; // что искать - имя_шаблона
MatchCase = Ложь; // использовать регулярные выражения
MatchWholeWord = Истина; // искать слово целиком
MatchWildcards = Ложь; // испоьзовать регулярные выражения
MatchSoundsLike = Неопределено; // искать созвучные
MatchAllWordForms = Неопределено; // искать все формы слова
Forward = Истина; // искать вперед
Wrap = Неопределено; // что должен вернуть Find-объект
Format_ = Ложь; // использовать форматирование
ReplaceWith = "N777"; // текст, на который надо заменить имя_шаблона

// кратко:
//Replace.Execute(FindText,Ложь,Истина,Ложь,,,Истина,,Ложь,НомерДоговора);

Replace.Execute(
FindText,
MatchCase,
MatchWholeWord,
MatchWildcards,
MatchSoundsLike,
MatchAllWordForms,
Forward,
Wrap,
Format_,
НомерДоговора);

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

возврат 0;

КонецФункции

Содержание:

1.       Чек-лист разработки для создания внешней печатной формы

2.       Пример разработки в 1С 8.3 Зарплата и управление персоналом

Довольно часто пользователи 1С просят разработать печатную формы в формате файлов MS Word. Это обусловлено широкими возможностями форматирования этого типа документа либо удобством его дальнейшего использования и хранения. В этой статье я хочу описать надежный и простой алгоритм создания внешних печатных форм, который я использую для решения поставленных задач. Дополнительным преимуществом этого алгоритма является то, что не требуется вносить изменения в основную конфигурацию. Т.е. используется для конфигураций, находящихся на поддержке без возможности изменения.

Весь принцип реализации строиться на использовании расширения. Причем, добавлять в расширение объекты основной конфигурации практически не нужно. Это очень удобно для дальнейших обновлений конфигураций с расширениями. Возникает вопрос: «А при чем здесь внешняя печатная форма, ведь это расширение?». Дело в том, что расширение легко устанавливается в программу в пользовательском режиме. А если еще ее объекты обособленны от объектов основной конфигурации, то, я думаю, можно называть ее внешней.

Пожалуй, единственным ограничением является наличие в конфигурации Библиотеки стандартных подсистем (далее – БСП). Данный метод «активно» использует механизмы этой библиотеки, поэтому БСП должно быть интегрировано в конфигурацию информационной базы (далее – ИБ). Но здесь особо беспокоиться не нужно, т.к. БСП сейчас присутствует практически во всех типовых конфигурациях.

Перед тем как продемонстрировать пример разработки, предлагаю ознакомиться с чек-листом и представить общую последовательность действий.  

1. Чек-лист разработки для создания внешней печатной формы

1.Создать расширение в конфигурации ИБ

2.В расширении добавить новую обработку (далее Обработка)

3.Обработку включить в подсистему ПодключаемыеОтчетыИОбработки

4.Создать шаблон (документ в формате MS Word) с необходимым содержанием и установить параметры

5.В обработку добавить макет и загрузить в него файл шаблона, созданного в пункте 4

6.В обработку добавить форму и в модуле формы создать функцию:

·         ВыполнитьКомандуПечати – экспортная, пользовательская

7.В модуле менеджера обработки создать 3 процедуры и 4 функции:

·         ПриОпределенииНастроек — экспортная, предопределенная БСП

·         ДобавитьКомандыПечати — экспортная, предопределенная БСП

·         Печать — экспортная, предопределенная БСП

·         ПолучитьДанныеПечати — экспортная, предопределенная БСП

·         ПолучитьДанныеОбъекта – пользовательская

·         ОбластиМакетаОфисногоДокумента – пользовательская

·         НапечататьДокумент– пользовательская  

2. Пример разработки в 1С 8.3 Зарплата и управление персоналом

Давайте рассмотрим этот процесс на примере создания печатной формы дополнительного соглашения к трудовому договору в формате файла MS Word. В качестве информационной базы я буду использовать конфигурацию 1C 8.3 Зарплата и управление персоналом версии 3.1.14.183, установленную на платформе 1С:Предприятие 8.3 (8.3.17.1496). В данной конфигурации используется БСП версии 3.1.2.469.

1.Создаем расширение в конфигурации ИБ.

Запускаем 1С:Предприятие в режиме конфигуратора. Открываем список расширений с помощью команды «Расширения конфигурации» пункта меню «Конфигурация» и добавляем новое расширение. После добавления расширения в список, необходимо будет снять флажок «Безопасный режим» как это показано на Рис.1. Если безопасный режим оставить включенным, то при печати нашей формы программа будет «ругаться».

Расширение конфигурации в 1С 8.3 ЗУП

Рис. 1 Расширение конфигурации в 1С 8.3 Зарплата и управление персоналом

2.Добавляем в расширение новую обработку.

Делаем двойной клик по строке списка с нашим расширением и открываем конфигурацию расширения. В дереве конфигурации находим «Обработки» … выделяем … правая клавиша мышки … Добавить. Я назвал обработку «Расш1_ПечатьWord».

3. Включаем обработку в подсистему ПодключаемыеОтчетыИОбработки.

Для этого необходимо добавить в расширение подсистему ПодключаемыеОтчетыИОбработки из основной конфигурации. Переходим в окно основной конфигурации, находим подсистему ПодключаемыеОтчетыИОбработки в дереве, выделяем и через контекстное меню жмем команду «Добавить в расширение» (см. Рис.2)

Добавление в расширение в 1С 8.3 Зарплата и управление персоналом

Рис. 2 Добавление в расширение в 1С 8.3 Зарплата и управление персоналом

Возвращаемся в окно конфигурации расширения, находим добавленную нами подсистему и уже здесь в ее состав добавляем нашу обработку.

4.Создаем шаблон-документ Word с необходимым содержанием и параметрами.

На этом этапе берем шаблон доп. соглашения – документ в формате MS Word c расширением .docx, устанавливаем разделители областей вывода, а в местах, где необходимо подставить значения из базы 1С устанавливаем маркеры параметров.

Разделитель области предназначен для того, чтобы «именовать» части документа-шаблона для дальнейшего вывода средствами встроенного языка 1С. Разделители представляют собой пару — открывающий тэг {v8 Область.<Имя области>} в самом начале области документа и закрывающий тэг {/v8 Область.<Имя области>} в самом конце области документа.

В этом примере я не буду рассматривать ситуацию с выводом нескольких областей. В большинстве случаев это и не требуется. Например, для вывода не сложной формы дополнительного соглашения к трудовому договору достаточно весь документ поместить в одну область. Так ее и назовем «ВесьДокумент».

Маркеры параметров выполняют такую же роль, как и параметры стандартных печатных макетов, и имеют следующий формат {v8 <Имя параметра>}

Документ в формате MS Word

Рис. 3 Документ в формате MS Word

5. Добавляем в обработку макет и загружаем в него файл шаблона.

Добавляем в обработку макет. Тип макета – двоичные данные. Название должно начинаться с префикса ПФ_DOC_ Для этого примера я назвал его «ПФ_DOC_ДопСоглашение».

Далее кликаем по макету печатной формы и открывается форма с кнопкой «Загрузить из файла». Загружаем наш шаблон .docx, созданный ранее(пункт 4).

6. В обработку добавляем форму.

Теперь в нашей обработке «Расш1_ПечатьWord» создаем форму. Форма должна быть основной, поэтому при создании формы важно, чтобы флажок «Назначить форму основной» был установлен.

В модуль формы копируем функцию с Рис.4

 Команда печати в 1С 8.3 Зарплата и управление персоналом

Рис. 4 Функция модуля формы в 1С 8.3 Зарплата и управление персоналом

7. В модуле менеджера обработки создадим необходимые процедуры и функции.

На данном этапе все просто. Копируем в модуль менеджера обработки тексты процедур и функций, представленные на листингах ниже. Необходимо лишь заменить отдельные участки (я их подчеркнул красными линиями) в соответствии с конкретной задачей.

7.1 ПриОпределенииНастроек

Данная процедура является предопределенной БСП, поэтому название нужно сохранить. Изменить можно размещение (подчеркнуто красным). В моем примере команда печати должна располагаться в справочнике сотрудники.

 Команда печати в 1С 8.3 Зарплата и управление персоналом

Рис. 5 Команда печати в 1С 8.3 Зарплата и управление персоналом

7.2 ДобавитьКомандыПечати

Данная процедура является предопределенной БСП поэтому название нужно сохранить. Здесь мы описывает команду, которая будет запускать печать нашей формы. Свойство МенеджерПечати определяет нахождение модуля менеджера где располагается процедура Печать. Свойство Обработчик определяет нахождение и название клиентского обработчика команды. В нашем случае он располагается на форме обработки.

печать в 1С 8.3 Зарплата и управление персоналом

Рис. 6 Добавление команды печати в 1С 8.3 Зарплата и управление персоналом

7.3 Печать

Данная процедура является предопределенной БСП поэтому название нужно сохранить. В переменную ИдентификаторКоманды и ИмяМенеджераПечати устанавливаем имя идентификатора и менеджера печати из процедуры ДобавитьКомандуПечати (пункт 7.2).

Процедура печати в 1С 8.3 Зарплата и управление персоналом

Рис. 7 Процедура печати в 1С 8.3 Зарплата и управление персоналом

7.4 ПолучитьДанныеПечати

Данная функция является предопределенной БСП поэтому название нужно сохранить. Аналогично предыдущему шагу, устанавливаем в переменную ИдентификаторКоманды имя идентификатора из процедуры ДобавитьКомандуПечати.

В параметр функции УправлениеПечатью.МакетПечатнойФормы устанавливаем полный путь к макету печатной формы, созданному в пункте 5 нашей статьи.

Получение данных объекта в 1С 8.3

Рис. 8 Получение данных печати в 1С 8.3 Зарплата и управление персоналом

7.5 ПолучитьДанныеОбъекта

В этой функции необходимо создать структуру с данными, которыми будет заполняться печатная форма. Ключ структуры – имя параметра шаблона Word {v8 <Имя параметра>}, а значение – значение из базы 1С. Параметр функции СсылкаНаОбъект – ссылка на объект печати. В нашем случае это ссылка на сотрудника.

Получение данных объекта в 1С 8.3 Зарплата и управление персоналом

Рис. 9 Получение данных объекта в 1С 8.3 Зарплата и управление персоналом

7.6 ОбластиМакетаОфисногоДокумента

Здесь описываем области и устанавливаем типы.

Возможные типы областей:

·         Общая – используется однократно.

·         СтрокаТаблицы – используется для вывода множества строк;

·         Список – используется для вывода множества строк;

·         ВерхнийКолонтитул;

·         НижнийКолонтитул;

документ в 1С 8.3 Зарплата и управление персоналом

Рис. 10 Области макета в 1С 8.3 Зарплата и управление персоналом

7.7 НапечататьДокумент

Эта функция отвечает за вывод и заполнение областей. В блоке, отмеченном красной линией, нужно описать последовательный вывод областей. Здесь меняем/устанавливаем только название области. В нашем случае «ВесьДокумент»

Функция напечатать документ в 1С 8.3 Зарплата и управление персоналом

Рис. 11 Функция напечатать документ в 1С 8.3 Зарплата и управление персоналом

На этом все. Запускаем печать и получаем ожидаемый результат.

Печать макета документа Word

Рис. 12 Печать макета документа Word

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

В интернете можно найти множество авторских методик создания внешней печатной формы в формате документа MS Word, однако, методы на основе БСП являются наиболее надежными.

Специалист компании «Кодерлайн»

Игорь Торба

В работе программиста 1С, данный функционал требуется крайне редко, хотя благодаря нему можно решать довольно сложные задачи с динамическими и не постоянными печатными формами. При реализации данной задачи, работа по созданию шаблонов Word и расстановке закладок в шаблоне Word возлагается на пользователей 1C.

В данном примере будет показано, как используя механизмы 1С и документа Word в качестве шаблона, можно создать печатную форму для вывода данных, пользователям программы 1С.

Создадим шаблон на основе документа Word для 1С. Сначала необходимо включить показ закладок для более удобной работы с документом:

Использование шаблонов Word в 1С

Использование шаблонов Word в 1С

Использование шаблонов Word  в 1С

Использование шаблонов Word в 1С

Далее необходимо в файл шаблона для 1С, добавить текст и пару закладок. Закладка добавляется через меню «Вставка» — «Закладка». Нужно выделить текст закладки, скопировать его, открыть меню «Вставка — Закладка», вставить скопированный текст закладки и нажать «Добавить»:

Установка закладки, шаблон Word для 1С

Установка закладки, шаблон Word для 1С

Когда файл шаблона Word готов, создаем новую внешнею обработку в 1С, добавляем форму и в модуле формы вставляем следующий код:

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	ЗаполнитьШаблонВорд();
	
КонецПроцедуры

&НаКлиенте
Функция ЗаполнитьШаблонВорд()

	//Попытка создать COM объект
	Попытка
		ОбъектВорд = Новый COMОбъект("Word.Application"); 
	Исключение
		Сообщить("Ошибка при запуске Microsoft Word: " + ОписаниеОшибки(), СтатусСообщения.Внимание);
		Возврат Неопределено;
	КонецПопытки;
	
	//Путь к шаблону
	ОбъектВорд.Documents.Add("C:UsersКонстантинDesktopШаблон.docx");
	ШаблонВорд = ОбъектВорд.ActiveDocument;
	
	//Получаем все закладки из шаблона
	Для каждого ЗакладкаВорд Из ШаблонВорд.Bookmarks Цикл
		Сообщить(ЗакладкаВорд.Name);		
	КонецЦикла;
	
	//Заменяем закладку1 на текст
	ШаблонВорд.Bookmarks("Закладка1").Select();
	ШаблонВорд.Application.Selection.TypeText("Текст для закладки №1.");
	
	//Заменяем закладку2 на текст
	ШаблонВорд.Bookmarks("Закладка2").Select();
	ШаблонВорд.Application.Selection.TypeText("Текст для закладки №2.");
	
	//Заменяем закладку3 на текущую дату
	ШаблонВорд.Bookmarks("Закладка3").Select();
	ШаблонВорд.Application.Selection.TypeText(ТекущаяДата());
	
	ОбъектВорд.Application.Visible = Истина;
	ОбъектВорд.Activate();
	
	//Закрытие документа
	//ОбъектВорд.Application.Quit();
	
КонецФункции

В результат запуска внешней обработки 1С по формированию печатной формы на основе шаблона в виде файла Word, мы получим следующий результат:

Результат использования шаблонов Word в 1С

Результат использования шаблонов Word в 1С

Информацию по методам COM объекта Word, а так же дополнительные данные можно узнать из MSDN.

Скачать файл обработки 1С и шаблона Word.

Дополнение к заметке Использование шаблонов Word в 1С

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

1. А как поменять размер шрифта во вставляемом тексте?
Достаточно изменить размер шрифта закладки, в шаблоне. А вот, если необходимо динамически менять размерность, тогда:

//Заменяем закладку3 на текущую дату
ШаблонВорд.Bookmarks("Закладка3").Select();

ШаблонВорд.Application.Selection.Font.Bold = 1;
ШаблонВорд.Application.Selection.Font.Size = 20;
	
ШаблонВорд.Application.Selection.TypeText(ТекущаяДата());

2. Картинки есть возможность выгружать в шаблон?
Да, конечно. Примеры для C# и VB описаны по ссылке: https://msdn.microsoft.com/ru-ru/library/ms178792.aspx, а для 1С код будет следующий:

// Вставка изображения
ШаблонВорд.Bookmarks("Закладка3").Select();
ШаблонВорд.Application.Selection.InlineShapes.AddPicture("C:UsersКонстантинDesktoplogo_1c.png");

3. При выполнении кода: ОбъектВорд.Documents.Add(«C:/Шаблон.docx») (туда я поместил Ваш документ) получаю ошибку : «Ошибка при вызове метода контекста (Add)» в чем может быть причина?
Может попробовать изменить путь на: «C:Шаблон.docx».

4. Подскажите пожалуйста еще почему при сохранении макета типа active document в файл word кодом:

ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
Макет    = ОбработкаОбъект.ПолучитьМакет("ШаблонПисьмаПросрочка"); 
ИмяФайла = КаталогВременныхФайлов() + ""файл.doc";
Макет.Записать(ИмяФайла);

Я получаю вместо нормального документа вот такой http://prntscr.com/eshgjk
Предполагаю, что метод Записать(< ИмяФайла>, < ТипФайлаТаблицы>) по умолчанию, записывает файл в формате MXL. Попробуйте вторым параметром установить значение: ТипФайлаТабличногоДокумента.DOCX, более подробно описано в «Синтакс-помощнике».

5. У меня в документе есть ссылки на файлы которые расположены на сетевом диске. Как в шаблоне сделать гиперссылку на эти файлы?
Интересный вопрос, если попробовать сделать запись макроса и посмотреть результат, то в Visual Basic добавление гиперссылки будет выглядеть следующим образом:

Sub Макрос1()
'
' Макрос1 Макрос
'
'
    Selection.MoveLeft Unit:=wdCharacter, Count:=15, Extend:=wdExtend
    ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, Address:= _
        "C:UsersКонстантинDesktopТест.txt", SubAddress:="", ScreenTip:="", _
        TextToDisplay:="ТестоваяСсылка"
End Sub

Описание метода добавления в MSDN: https://msdn.microsoft.com/en-us/vba/word-vba/articles/hyperlinks-add-method-word

Соответственно код для 1С следующий:

Функция ЗаполнитьШаблонВорд()

	//Попытка создать COM объект
	Попытка
		ОбъектВорд = Новый COMОбъект("Word.Application"); 
	Исключение
		Сообщить("Ошибка при запуске Microsoft Word: " + ОписаниеОшибки(), СтатусСообщения.Внимание);
		Возврат Неопределено;
	КонецПопытки;
	
	//Путь к шаблону
	ОбъектВорд.Documents.Add("C:Usersk.blaginDesktopШаблон.docx");
	ШаблонВорд = ОбъектВорд.ActiveDocument;
	
	//Получаем все ссылки из шаблона
	Для каждого ЗакладкаВорд Из ШаблонВорд.Hyperlinks Цикл
		Сообщить(ЗакладкаВорд.Name);		
	КонецЦикла;
	
	//Меняем адрес уже существующей ссылки
	ШаблонВорд.Hyperlinks("Logs.zip").Address = "C:Usersk.blaginDesktopMemory.zip";
	
	//Заменяем закладку на ссылку
	ОбъектЗакладка = ШаблонВорд.Bookmarks("Закладка3");
	ШаблонВорд.Hyperlinks.Add(ОбъектЗакладка.Range, "C:Usersk.blaginDesktopШаблон.docx", "", "Шаблон.docx", "C:Usersk.blaginDesktopШаблон.docx");
	
	ОбъектВорд.Application.Visible = Истина;
	ОбъектВорд.Activate();
	
	//Закрытие документа
	//ОбъектВорд.Application.Quit();
	
КонецФункции

Понравилась статья? Поделить с друзьями:
  • Сохранения значения в формуле для excel
  • Сохранение листов всех excel в pdf
  • Сохранение шаблона word 2007
  • Сохранение листа excel с параметрами
  • Сохранение файла excel с помощью макроса