Печатная форма с макетом word - ПК журнал
Polytech-soft.com

ПК журнал
114 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Печатная форма с макетом word

Печать в Word по любому шаблону

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

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

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

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

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

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

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

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

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

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

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

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

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

В открывшемся окне настроек первым делом создадим новый файл в программе (имеется в виду элемент справочника Файлы) и привяжем к нему наш Word:

В открывшемся окне выбираем Добавить файл:

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

В качестве источника используются реквизиты самого документа продажи, а также производные от этих реквизитов:

При печати можно использовать также дополнительные реквизиты справочников и документов.

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

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

Для значения к строках таблицы доступно склонение по падежам, а также сокращение ФИО:

Для печати таблицы в Word выберем исходную таблицу документа:

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

В конце обязательно нажимаем Сохранить шаблон.

Все ОК, теперь можем печатать нужный Word.

Печать по настроенному шаблону доступна теперь для всех, т.е. пользователям не нужно каждому настраивать печать самостоятельно.

Можем печатать как один документ, так и список:

На форме настроек печати помимо создания новых шаблонов можно редактировать имеющиеся:

В том случае, если для объекта настроено несколько шаблонов Word, то при выборе команды печати откроется окно с выбором нужного:

Во избежание коллизий с правами доступа пользователей к справочнику Файлы вам необходимо установить помимо самой обработки печати в Word еще и расширение для 1С (находится в одном архиве с обработкой), которое предоставит пользователям доступ на чтение справочника.

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

Релиз 1.1.2.2 от 15.12.2018

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

Теперь можно удалять ненужные шаблоны:

Релиз 1.1.2.3 от 29.01.2019

Появилась возможность выводить части даты по отдельности — день, месяц (номер или название) и год:

Для физических лиц (и контрагентов с типом физлицо) теперь можно выводить паспортные данные:

Релиз 1.1.2.4 от 12.03.2019

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

Релиз 1.1.2.5 от 12.07.2019

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

По окончании процедуры печати откроется форма присоединенного файла.

Из этой формы можно при необходимости открыть на просмотр/редактирование заполненный шаблон Word.

Артикул358
Цена,3500
Последнее обновление10.11.2019
Наличие демо-версии
Тип файлаВнешняя обработка (*.epf)
Изменение конфигурацииНе требуется
Совместимость
  • Управление торговлей 11.4 (11.3,11.2)
  • Бухгалтерия предприятия 3.0
  • Управление предприятием ERP 2.4
  • Зарплата и управление персоналом 3.1
  • Комплексная автоматизация 2.4
  • Управление торговлей 3 (KZ) *
  • Комплексная автоматизация 2.4 (KZ) *
  • Управление торговлей 3 (BY) **
  • Комплексная автоматизация 2.4 (BY) **

* — конфигурация для Казахстана

** — конфигурация для Беларуси

Вас может заинтересовать

Обработка позволяет делать произвольную выгрузку номенклатуры в файлы Excel и XML настраиваемого формата. Доступна автоматическая выгрузка по расписанию и сохранение на локальном компьютере, FTP-сервере или отправка файла по электронной почте.

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

В данном видеоуроке рассмотрен процесс создания нового профиля группы доступа в 1С:Предприятие 8 (на примере Бухгалтерии предприятия 3.0).

Благин Константин

Программирование как созидательный процесс.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

А как поменять размер шрифта во вставляемом тексте?

  1. Благин Константин Автор записи 27.11.2016 в 16:02

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

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

  1. Благин Константин Автор записи 30.11.2016 в 15:03

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

Спасибо, будем пробовать.

Снова, здравствуйте.
Вопрос по шаблонам. Попросили перенести шаблоны, написанные в Word из ЗиК 1.0 в ЗиК 3.0.
Как я понял — не перенесутся, нужно новые писать. Поскольку, учусь, то это даже на руку. За образец решил взять Ваш и начать разбираться. Но Ваш НЕ ГРУЗИТСЯ. Пишет:
Невозможно подключить дополнительную обработку из файла.
Возможно, она не подходит для этой версии программы.

Метод объекта не обнаружен (СведенияОВнешнейОбработке)
Кстати, когда пытаюсь загрузить шаблоны из 1.0, то пишет тоже самое.
Можете что-нибудь посоветовать?

  1. Благин Константин Автор записи 04.12.2016 в 15:29

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

А насчет переноса могу посоветовать, проанализировать, как в ЗиК 1.0 производилось заполнение шаблона. Найти участки кода, которые за это отвечают, попробовать сначала перенести их во внешнюю обработку, для тестирования. Как вариант, сам шаблон можно положить в макеты (тип макета «Active document») этой обработки и уже оттуда загружать его.

Здесь есть несколько нюансов, механизм заполнения шаблонов и сами шаблоны, типовые, доработанные или самописные? Объекты которые используются для заполнения в ЗиК 1.0 могут отсутствовать в ЗиК 3.0 или иметь другое наименование. Плюс ко всему, необходимо еще учесть, что ЗиК 1.0 это обычное приложение, использующее толстый клиент, а ЗиК 3.0 управляемое приложение, использующее тонкий клиент, соответственно здесь тоже присутствует своя специфика работы.

Да и еще, в ЗиК 3.0 как мне кажется должен быть свой механизм шаблонов, к сожалению, не работал с этими конфигурациями, но вероятно там уже есть механизм аналогичный ЗиК 1.0. Так что может, будет достаточно только добавить шаблон.

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

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

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

  1. Благин Константин Автор записи 05.04.2017 в 07:59

Может попробовать изменить путь на: «C:Шаблон.docx»

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

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

Я получаю вместо нормального документа вот такой http://prntscr.com/eshgjk

  1. Благин Константин Автор записи 05.04.2017 в 19:56

Предполагаю, что метод Записать( , ) по умолчанию, записывает файл в формате MXL. Попробуйте вторым параметром установить значение: ТипФайлаТабличногоДокумента.DOCX, более подробно описано в «Синтакс-помощнике».

Константин,
У меня в документе есть ссылки на файлы которые расположены на сетевом диске.
Как в шаблоне сделать гиперссылку на эти файлы?

  1. Благин Константин Автор записи 31.07.2017 в 21:27

Здравствуйте, Руслан.
Интересный вопрос, если попробовать сделать запись макроса и посмотреть результат, то в Visual Basic добавление гиперссылки будет выглядеть следующим образом:

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

я хочу заполнить шаблон с помощью заполнения пользовательской формы. как получить значение,выбранное из списка, если тип поля СправочникСсылка.НазваниеСправочника?

  1. Благин Константин Автор записи 07.06.2018 в 19:03

Предполагаю заполнение производите на стороне клиента, тогда можете сразу обратиться к элементу формы или объекта.

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

  1. Благин Константин Автор записи 28.06.2018 в 11:30

Ирина, для ответа необходима дополнительная информация:
1. Какая конфигурация используется?
2. Каким образом происходило обновление шаблонов?
3. Ошибка выходит при формировании документа на основе данных и шаблона или при отправке на печать?

Доброго дня. Прошу помочь с задачей вставки в документ Word, ранее записанного файла HTML (из 1С сохранил на диск, браузером файл открывается нормально — отображается НЕ как текст)., а в документе Word формируется как текст не конвертированный.
Вставляю так
Word = ПечатнаяФорма.COMСоединение;
Select = Word.Selection;
Docum = Word.Application.Documents(1);
Select.InsertFile(«C:Temp1.html»);

  1. Благин Константин Автор записи 19.07.2019 в 13:32

В данный момент не пользуюсь Office, попробуйте использовать Selection.PasteAndFormat как было подсказано здесь: https://toster.ru/q/164995

Добрый день. Все бы хорошо, но, как сделать не обработку а печатную форму?
Я сделал внешнюю печатную форму с шаблоном типа Active Document, добавил пока одну закладку на пробу, подключил, чтобы при нажатии кнопки «Печать» из справочника «договоры» выполнялось. Открывается Word, все работает, но, в базе возникает окно где написано : Печать. Печатная форма недоступна. Как сделать чтобы окно не вылезало? Обработка не подходит потому что она не падает в меню кнопки «Печать»

  1. Благин Константин Автор записи 08.09.2019 в 11:48

1. Конфигурация какая?
2. Нужен скриншот ошибки.
3. Нужен код модуля для анализа.

Скажите пожалуйста а можно шаблон word в обработку вставить, чтобы он в конфигурации был

  1. Благин Константин Автор записи 02.12.2019 в 20:54

Добрый день, подскажите, пожалуйста, как сделать так, чтобы подобный документ создавался при нажатии на кнопку на форме . Я создала команду «Документ», но не понимаю, что нужно вписать в ее обработчик. У меня имеется документ «ПриемНаРаботу» в виде списка, я заполняю форму (фио, паспорт, должность, оклад). А после могу нажать на кнопку «Документ», чтобы увидеть тот самый шаблон word.Как это можно сделать?

  1. Благин Константин Автор записи 15.12.2019 в 14:07

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

Добрый день, а как можно вставить в колонтитул на разных листах в ворде номера бланков взятых из 1С( 1 лист бланк — №0089 ,2 лист бланк — №0090 и …)

  1. Благин Константин Автор записи 02.02.2020 в 14:46

https://infostart.ru/public/488556/
Цитата:
Каждая страница Word разделена на несколько областей:

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

Формирование печатной формы в Ворд

Я
K1RSAN

Не могу понять небольшой момент. Внешняя печатная форма (зарегистрирована как обычная внешняя печатная форма с макетом), НО вместо документа типа «табличный документ» формирую документ Word через процедуру
ОбъектВорд = Новый COMОбъект(«Word.Application»);

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

K1RSANCool_ProfiK1RSAN

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

gantonioK1RSANgantonioK1RSAN

как то ты сложно с букмарками общаешься
[1C]
Попытка
Скрипт=СоздатьОбъект(«MSScriptControl.ScriptControl»);
Скрипт.language=»javascript»;
Ворд = Скрипт.Eval(«new ActiveXObject(‘Word.Application.14’)»);
Исключение
Попытка
Ворд = СоздатьОбъект(«Word.Application.15»);
Исключение
Сообщить(«Не удалось открыть Word 2010»);
Возврат;
КонецПопытки;
КонецПопытки;

//[*] ((( dk 16/03/2018
//Ворд.Visible = ексДа;
Ворд.Visible = ексНет;
//[*] dk )))

// Заполним пустышками
Попытка
Док.Bookmarks(«НомерДоговора»).Range.Text = НомерДоговора;//»__________»;
Исключение
КонецПопытки;
Попытка
Док.Bookmarks(«НомерДоговора1″).Range.Text = НомерДоговора;//»__________»;
Исключение
КонецПопытки;
Попытка
Док.Bookmarks(«НомерДоговора2″).Range.Text = НомерДоговора;//»__________»;
Исключение
КонецПопытки;
Попытка
Док.Bookmarks(«НомерДоговора3″).Range.Text = НомерДоговора;//»__________»;
Исключение
КонецПопытки;

Зн = СокрЛП(Элем.Емэйл);
Если ПустоеЗначение(Зн) = 0 Тогда
Попытка
Док.Bookmarks(«ЭлПочта»).Range.Text = Зн;
Исключение
КонецПопытки;
Попытка
Док.Bookmarks(«ЭлПочта1»).Range.Text = Зн;
Исключение
КонецПопытки;
Попытка
Док.Bookmarks(«ЭлПочта2»).Range.Text = Зн;
Исключение
КонецПопытки;
Иначе
Попытка
Док.Bookmarks(«ЭлПочта»).Range.Text = «__________________________»;
Исключение
КонецПопытки;
Попытка
Док.Bookmarks(«ЭлПочта1»).Range.Text = «__________________________»;
Исключение
КонецПопытки;
Попытка
Док.Bookmarks(«ЭлПочта2»).Range.Text = «__________________________»;
Исключение
КонецПопытки;
КонецЕсли;

Зн = СокрЛП(Элем.ПолнНаименование);
Если ПустоеЗначение(Зн) = 0 Тогда
Попытка
Док.Bookmarks(«ПокНаименование»).Range.Text = Зн;
Исключение
КонецПопытки;
КонецЕсли;
[/1С]

Alexandr_U1982

(7)Попробуй вместо «ВызовСерверногоМетода» использовать «ВызовКлиентскогоМетода».
В этом случае тебе нужно будет в обработке создать форму, и в нее поместить процедуру Печать().

И уже в этой процедуре формировать документ Word.

Печатные формы и печать в целом с макетом Word-документа

Много сталкаивался с необходимостью печатать тот или иной документ с использованием и заполнением Word. Но использую наиболее распространенный механизм «замены» текста, с которым многие знакомы, сталкивался с различными ошибками, из-за которых ничего не получалось (хотя код написан 100% верно).

Раскажу о методе заполнения нужных нам Параметров в документе с использованием Параметров Word.

Я думаю программисты пойму, поэтому не буду размусоливать. Смотрите скрин — что мы видим, текст и «непонятные» вставки… поясняю — эти вставки и есть параметры Word документа. Для того что бы их получить и заполнить делаем следующее:

1. Создаем документ Word, заполняем его так, как нам надо, в моем случае был такой вот «Агентский договор».

2. Определяем нужные нам для заполнения «места». На скриншоте — это Номер(NomerDogovora), Дата(DataDok), Организация(Organization), Менеджер(Menager), Контрагент(Principal)

3.Собственно сама замена (на примере Номера Документа):

3.1 Выбираем участок для параметра, например: «АГЕНТСКИЙ ДОГОВОР №0101010101», в качестве участка нам нужно выделить сам номер, или удалить его и спозиционироваться на его месте.

3.2 В меню Word, переходим на «Вставка», далее «Экспресс-блоки», далее «Поле»

3.3 В открывшемся диалоговом окне, выбираем тип «DocVariable»

3.4 Назначаем имя, в моем случае «NomerDogovora»

3.5 Жмем «Ок», когда окно закроется, вы скорей всего не увидите изменений, так как скрыт «Word kod», нажмите Alt+F9, что бы открыть код.

4. Таким образом создаете все нужные Вам параметры.

5. После того как все параметры готовы, сохраняем и закрываем докмент Word.

ПЕРЕХОДИМ К 1С

1. В нашем нужном объекте конфигурации (ВН форма, ВН отчет и т.д.) добавляем макет, устанавливаем тип «Двоичные данные», и выбираем из файла наш созданный документ Word.

2. Программный код выглядит вот так:

Функция ПолучитьМакетСервер()
Возврат ПолучитьМакет(«Макет1»);
КонецФункции

ПРоцедура НапечататьДокумент(Объект)

Word = Новый COMОбъект(«Word.Application»);
Макет = ПолучитьМакетСервер();
временныйПуть = КаталогВременныхФайлов();
имяВременногоФайла = временныйПуть + «gph.doc»;
Макет.Записать(имяВременногоФайла);
ТекДок = Word.Documents.ADD(имяВременногоФайла);

СтруктураДоверенности = ПолучитьДанныеДоверенности(СсылкаНаОбъект.Менеджер);
НомерДатаДоверенности = «№ » + СтруктураДоверенности.Номер + » от » + СтруктураДоверенности.Дата;

ТекДок.Variables(«NomerDogovora»).Value=СокрЛП(Строка(СсылкаНаОбъект.Номер));
ТекДок.Variables(«DateDok»).Value=Строка(Формат(СсылкаНаОбъект.Дата,»ДЛФ = ДД»));
ТекДок.Variables(«Organization»).Value=СокрЛП(СсылкаНаОбъект.Организация.НаименованиеПолное);
ТекДок.Variables(«Menager»).Value=Строка(СсылкаНаОбъект.Менеджер);
ТекДок.Variables(«NDateDov»).Value=Строка(НомерДатаДоверенности);
ТекДок.Variables(«Principal»).Value=Строка(СсылкаНаОбъект.Контрагент);

ТекДок.Fields.Update();
Word.ActiveWindow.View.ShowFieldCodes = False;
Word.Visible=Истина;
КонецПроцедуры

Заключение: Вот таким образом получаем наш макет Word, с заполненными параметрами. Когда я этому научился ) очень помогло, а то до этого возился, возился… все ошибки лезли при «замене текста».

Читать еще:  Real time word
Ссылка на основную публикацию
ВсеИнструменты 220 Вольт
Adblock
detector