Печатная форма с макетом 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) | |
Изменение конфигурации | Не требуется | |
Совместимость |
* — конфигурация для Казахстана ** — конфигурация для Беларуси Вас может заинтересовать Обработка позволяет делать произвольную выгрузку номенклатуры в файлы 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. Картинки есть возможность выгружать в шаблон? 3. При выполнении кода: ОбъектВорд.Documents.Add(«C:/Шаблон.docx») (туда я поместил Ваш документ) получаю ошибку : «Ошибка при вызове метода контекста (Add)» в чем может быть причина? 4. Подскажите пожалуйста еще почему при сохранении макета типа active document в файл word кодом: Я получаю вместо нормального документа вот такой http://prntscr.com/eshgjk 5. У меня в документе есть ссылки на файлы которые расположены на сетевом диске. Как в шаблоне сделать гиперссылку на эти файлы? Соответственно код для 1С следующий: Использование шаблонов Word в 1С : 29 комментариевА как поменять размер шрифта во вставляемом тексте?
Достаточно изменить размер шрифта закладки, в шаблоне. А вот, если необходимо динамически менять размерность, тогда: Добрый день, подскажите, пожалуйста, картинки есть возможность выгружать в шаблон?
Да, конечно. Примеры для C# и VB описаны по ссылке: https://msdn.microsoft.com/ru-ru/library/ms178792.aspx, а для 1С код будет следующий: Спасибо, будем пробовать. Снова, здравствуйте. Метод объекта не обнаружен (СведенияОВнешнейОбработке)
Данная ошибка, появляется, потому что обработка создана просто как внешняя, без возможности подключения к 1С. Если вы хотите подключить какую либо обработку, в режиме «1С:Предприятие», тогда в модуле обработки необходимо вставить определенный код, более подробно описано по следующим ссылкам: А насчет переноса могу посоветовать, проанализировать, как в ЗиК 1.0 производилось заполнение шаблона. Найти участки кода, которые за это отвечают, попробовать сначала перенести их во внешнюю обработку, для тестирования. Как вариант, сам шаблон можно положить в макеты (тип макета «Active document») этой обработки и уже оттуда загружать его. Здесь есть несколько нюансов, механизм заполнения шаблонов и сами шаблоны, типовые, доработанные или самописные? Объекты которые используются для заполнения в ЗиК 1.0 могут отсутствовать в ЗиК 3.0 или иметь другое наименование. Плюс ко всему, необходимо еще учесть, что ЗиК 1.0 это обычное приложение, использующее толстый клиент, а ЗиК 3.0 управляемое приложение, использующее тонкий клиент, соответственно здесь тоже присутствует своя специфика работы. Да и еще, в ЗиК 3.0 как мне кажется должен быть свой механизм шаблонов, к сожалению, не работал с этими конфигурациями, но вероятно там уже есть механизм аналогичный ЗиК 1.0. Так что может, будет достаточно только добавить шаблон. Спасибо за быстрый и подробный ответ. Ваша ссылка помогла. При выполнении кода: ОбъектВорд.Documents.Add(«C:/Шаблон.docx») (туда я поместил Ваш документ) получаю ошибку : «Ошибка при вызове метода контекста (Add)» в чем может быть причина?
Может попробовать изменить путь на: «C:Шаблон.docx» Помогло. Спасибо. ОбработкаОбъект = РеквизитФормыВЗначение(«Объект»); Я получаю вместо нормального документа вот такой http://prntscr.com/eshgjk
Предполагаю, что метод Записать( , ) по умолчанию, записывает файл в формате MXL. Попробуйте вторым параметром установить значение: ТипФайлаТабличногоДокумента.DOCX, более подробно описано в «Синтакс-помощнике». Константин,
Здравствуйте, Руслан. Соответственно код для 1С следующий: я хочу заполнить шаблон с помощью заполнения пользовательской формы. как получить значение,выбранное из списка, если тип поля СправочникСсылка.НазваниеСправочника?
Предполагаю заполнение производите на стороне клиента, тогда можете сразу обратиться к элементу формы или объекта. Здравствуйте. Попросили обновить шаблоны договоров для печати. Обновила, но теперь при печати выводит ошибку, что не удалось сформировать элемент управления ActiveX. С чем это может быть связано?
Ирина, для ответа необходима дополнительная информация: Доброго дня. Прошу помочь с задачей вставки в документ Word, ранее записанного файла HTML (из 1С сохранил на диск, браузером файл открывается нормально — отображается НЕ как текст)., а в документе Word формируется как текст не конвертированный.
В данный момент не пользуюсь Office, попробуйте использовать Selection.PasteAndFormat как было подсказано здесь: https://toster.ru/q/164995 Добрый день. Все бы хорошо, но, как сделать не обработку а печатную форму?
1. Конфигурация какая? Скажите пожалуйста а можно шаблон word в обработку вставить, чтобы он в конфигурации был
Добрый день, подскажите, пожалуйста, как сделать так, чтобы подобный документ создавался при нажатии на кнопку на форме . Я создала команду «Документ», но не понимаю, что нужно вписать в ее обработчик. У меня имеется документ «ПриемНаРаботу» в виде списка, я заполняю форму (фио, паспорт, должность, оклад). А после могу нажать на кнопку «Документ», чтобы увидеть тот самый шаблон word.Как это можно сделать?
Ирина, вы можете воспользоватся примером из обработки, ссылку на которую находится внизу заметки. Добрый день, а как можно вставить в колонтитул на разных листах в ворде номера бланков взятых из 1С( 1 лист бланк — №0089 ,2 лист бланк — №0090 и …)
https://infostart.ru/public/488556/ Верхний колонтитул Формирование печатной формы в Ворд | Я |
Не могу понять небольшой момент. Внешняя печатная форма (зарегистрирована как обычная внешняя печатная форма с макетом), НО вместо документа типа «табличный документ» формирую документ Word через процедуру
ОбъектВорд = Новый COMОбъект(«Word.Application»);
И там его заполняю, использую закладки для вставки параметров. Документ создается и корректно открывается, НО программа после этого пытается сформировать так же обычную печатную форму, что приводит либо к появлению пустой печатной формы (если создаю пустую), либо пишет ошибку, дескать для такого макета не был создан печатный документ. Как правильно организовать вывод внешней печатной формы, чтобы не появлялась эта ошибка при каждом формировании формы?
(2) Ну я просто взял старую обработку получения внешней печатной формы, и сделал вставил свою процедуру туда. Просто в первый раз решил реализовать именно через договор, потому не знаю, что делаю не так.
как то ты сложно с букмарками общаешься
[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С]
(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, с заполненными параметрами. Когда я этому научился ) очень помогло, а то до этого возился, возился… все ошибки лезли при «замене текста».
detector