Формирование и заполнение документов 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.
Полный перечень доступных реквизитов выглядит внушительно:
Для объектов можно использовать не только значения собственных, но и дополнительных (созданных пользователями вручную) реквизитов. Для организаций и контрагентов можно использовать адреса, почту, телефоны и банковские реквизиты. Для физических лиц можно использовать паспортные данные.
В отдельной колонке таблицы закладок можно задавать падеж (для правильного склонения полученного значения), а также необходимость склонения ФИО.
На выходе получается такая таблица:
В шаблоне присутствует таблица товаров — для настройки ее заполнения переходим на вкладку Таблицы.
Выбираем из какой табличной части брать данные:
После этого через запятую перечисляем названия реквизитов табличной части, значениями которых необходимо заполнить таблицу нашего шаблона. Их количество должно совпадать с количеством колонок шаблона. Для справки в последней колонке приведены все возможные значения.
Для некоторых колонок можно просто прописать постоянное значение (на скрине выше это ШТ).
На этом настройка шаблона завершена, не забываем сохранить настройки.
Настройка шаблонов — задача одноразовая, один раз настроили и потом печатаете любые заказы сколько угодно раз.
Если нужно сохранить еще один шаблон, то проделываем повторно такую же работу.
Для редактирования шаблона выделяем его в верхней таблице (при этом таблица закладок заполняется автоматически из сохраненных настроек), вносим правки и сохраняем.
Для удаления шаблона выделяем его в списке и нажимаем Del, затем сохраняем настройки.
Для печати вызываем команду По шаблону Word (печать), в результате на экране появляется форма прикрепленного файла (т.к. мы включили сохранение файла).
Обратите внимание, что в названии файла заменяемые параметры исчезли — вместо них подставились значения документа.
Итоговый файл Word выглядит так (название файла тоже заполнилось согласно настройке):
Если для объекта создать несколько шаблонов печати, при нажатии на кнопку печати будет появляться окно с выбором нужной печатной формы.
Документы можно печатать как по отдельности, так и списком.
Чтобы оставить комментарий, зарегистрируйтесь и авторизуйтесь на сайте.
10.12.2019
Научитесь печать из 1С по шаблонам (Например: трудовые договоры, договоры с контрагентами, акты, накладные и и многие другие).
Внешняя обработка предназначена для формирования печатных форм на основе шаблонов в формате Word из любой конфигурации 1С.
С помощью данного инструмента можно самостоятельно заполнить шаблон реквизитами справочника или документа 1С и сформировать печатные формы на основании ссылки на объект.
Основные особенности:
-
Для любых конфигураций 1С;
-
Для любых документов и справочников 1C;
-
Не требуется изменять конфигурацию;
-
Заполнение шаблона Word посредством “Drag and Drop” (мышкой из окна 1С в окно внешнего редактора MS Word);
-
Не требуется установленный Word на сервере.
Обработка “Универсальная печать по шаблонам Word” является инструментом для формирования печатных форм в формате Word (docx) на основе шаблонов (docx).
Пользователь сможет самостоятельно создавать шаблоны и наполнять их параметрами из данных объекта. Программист будет необходим только в исключительных случаях, когда информацию для печатной формы требуется получить специфическим способом. Программист прямо из данной обработки посредством языка запросов сможет создать файл с настройками. Вам нужно будет указать путь к каталогу файлов с настройками, и они расширят реквизитный состав объектов (об этом подробнее читайте в инструкции). В дальнейшем мы планируем выпустить предопределенные файлы с настройками для типовых конфигураций.
Целевая аудитория:
- Кадры
- Различные варианты печатных форм по трудовым договорам
- Юр. Служба
- Печатные формы по договорам контрагентов с применением логотипов и картинок
- Продажи и закупки
- Печатные формы по документам с выводом таблиц (например: список номенклатуры)
Обработку можно применять для печати по шаблонам в разных целях, но опираясь на собственный опыт, для представленной аудитории данная разработка будет востребована больше всех.
Основные функциональные возможности:
Со всеми функциональными возможностями решения можно ознакомиться в инструкции.
Требования:
-
Управляемые формы;
-
Платформа версии 8.3.7 и выше (8.3.13 и выше при работе в веб-интерфейсе);
-
БСП версии 2.3.1 и выше для использования типового функционала дополнительных реквизитов / сведений и контактной информации объектов;
-
Файлы шаблонов с расширением “.docx”.
Тестирование проводилось на платформе 1С:Предприятие 8.3 (8.3.14.1854) в конфигурациях:
- Комплексная автоматизация: 2.4.9.98;
- ERP Управление предприятием: 2.4.9.98;
- Бухгалтерия предприятия: 3.0.73 ПРОФ, 3.0.73 КОРП;
- Зарплата и управление персоналом: 3.1.10 ПРОФ; 3.1.10 КОРП;
- Документооборот 2.1.14 ПРОФ, 2.1.14 КОРП;
- Управление торговлей 11.4
- Управление нашей фирмой 1.6
1.0.0 Добавлена пилотная версия.
1.0.1
05.11.2023 Исправлены некоторые интерфейсные проблемы. Добавлена возможность сохранять место хранения шаблонов в настройках пользователя. Дополнение параметра «Формат текста» было расширено типовой функцией вывода номера на печать («00УТ-00120» -> «УТ-120»).
1.0.2
30.11.2023 Исправлены ошибки. Обработаны проблемы использования не предопределенных дополнительных реквизитов (созданных пользователем). Теперь в запросе помимо параметра «&Ссылка», появилась возможность использовать «&ТекущаяДата», в которую подставляется значение типовой функции «ТекущаяДата()».
1.0.3
09.12.2023 Добавлена обработка с видом печатная форма. При ее подключении добавляется команда печати во все справочники и документы. При вызове команды печати автоматически подставляется ссылка на объект. Функционал обработок идентичен, различается только способ их открытия.
Достоинства
- Универсально
- Для любых конфигураций;
- Для любых документов и справочников.
- Удобно
- Грамотно продуманный пользовательский интерфейс;
- Помощь в заполнении шаблона параметрами;
- Все настройки хранятся в шаблоне, а значит шаблон можно использовать в нескольких базах со схожей структурой;
- Поддерживается работа через веб клиент.
- Функционально
- Использование дополнительных реквизитов / сведений и контактной информации объектов (для типовых);
- Расширение реквизитного состава объектов посредством языка запросов.
- Просто
- Не требуется изменять конфигурацию;
- Не требуется установленный Word на сервере (и драйвера OLE не нужны).
Гарантия возврата денег
ООО «Инфостарт» гарантирует Вам 100% возврат оплаты, если программа не соответствует заявленному функционалу из описания. Деньги можно вернуть в полном объеме, если вы заявите об этом в течение 14-ти дней со дня поступления денег на наш счет.
Программа настолько проверена в работе, что мы с полной уверенностью можем дать такую гарантию. Мы хотим, чтобы все наши покупатели оставались довольны покупкой.
Для возврата оплаты просто свяжитесь с нами.
Выберите вариант загрузки:
- скачать с сервера SoftPortal (Версия программы для Microsoft Word 97/2000/XP/2003)
- скачать с сервера SoftPortal (Версия программы для Microsoft Word 2007/2010. Устанавливается в шаблон Normal.dot. Работает в любых версиях Word)
Верстка Текста Книжкой — пакет макросов для Microsoft Word, позволяющий сверстать ваш документ в формате книжки для последующей его печати — то есть выполнить то, что обычно называется «создание брошюры», «печать брошюры» или «спуск полос» (полное описание…)
Рекомендуем популярное
Doc Reader 2.0
Doc Reader — простая в использовании программа, которая позволяет открывать, просматривать и…
Печать книгой 3.4
Печать книгой — надстройка для Word 97-2010 позволяющая печатать любые документы в форме…
SSC Service Utility 4.30
SSC Service Utility — Программа предназначена для всех владельцев струйных принтеров производства…
FinePrint 11.34
FinePrint — отличный инструмент для редактирования различных типов документов и вывода их на…
Expert PDF Reader 9.0.180
Expert PDF Reader — бесплатный и легкий в эксплуатации инструмент для просмотра, редактирования и…
Довольно распространенная задача, но так как пока не реализованная в типовых, поэтому и пишу.
Итак, к примеру, необходимо формировать некоторый типовой текст на основе имеющегося в организации шаблона в формате docx — MS Word. Обычно это договора (с контрагентами, сотрудниками), а также всевозможные приказы и т.д. Формат Word позволяет подготовить красиво оформленный документ, однако некоторые данные необходимо подставить из базы (ФИО и проч).
Данную задачу в данной статье буду реализовывать через расширение на примере печати договора с контрагентом. Конфигурация 1С:Бухгалтерия — типовая на поддержке 3.0.121.31, релиз платформы — 8.3.22.1704).
Для реализации задачи будем использовать подсистему БСП «Работа с печатью», с помощью которой можем быстро добавлять на формы списков и элементов команды Печати и формировать документы из шаблона Word.
Забегая вперед, добавлю, что при формировании документа MS Word использована серверная процедура формирования документа без создания COM-объекта. Однако, для формирования PDF документа — пришлось создавать COM-объект Word.Application, соответственно, это действие рекомендуется делать исключительно на клиенте, поэтому я задействовал клиентскую процедуру.
Сами шаблоны договоров оказания услуг — мои рабочие — можете брать и использовать или для образца (Скачать с Инфостарта https://infostart.ru/public/1753205/). Все переменные типа ФИО, должностей, ИНН и т.д. — беру из данных базы.
В общем, если нужно быстро сделать печать из шаблона MS Word — это вам подойдет как пример. Можно использовать и как готовый вариант текста договора оказания услуг по 1С, но это на ваше усмотрение.
Итак
- Создаем новое расширение, снимаем галку безопасный режим
2. Создаем файл-шаблон MS Word. Формат файла MS Word должен соответствовать формату БСП.
- Файл должен состоять из набора именованных областей. Каждая область начинается тэгом {v8 Область.ИмяОбласти1} {/v8 Область.ИмяОбласти1}.
- Внутри области могут использоваться параметры, в которые мы впоследствии передадим нужные нам значения (типа ФИО). Параметры маркируются как {v8 Параметр1}.
- Можно создавать даже таблицы для вывода табличных частей (например спецификация по договору), но в данном примере мы это не используем. Вот подробная статья про формат шаблона infostart.ru/1c/articles/1052233/.
- Даже проще понять на примере, см скрины ниже
3. Далее Переходим к нужному объекту метаданных, в нашем случае — к справочнику Договоры. Далее макеты, добавить-двоичные данные-выбираем нужный файл Ворд
4. Добавим команды печати в справочник «Договоры контрагентов». Для этого в модуле менеджера объекта (справочника Договоры) находим процедуру «ДобавитьКомандыПечати» и добавляем ее в наше расширение с директивой &После. И добавляем команды
&После("ДобавитьКомандыПечати")
Процедура пп_ДобавитьКомандыПечати(КомандыПечати)
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "ДоговорОказанияУслуг";
КомандаПечати.Представление = "Договор оказания услуг (PDF)";
КомандаПечати.Обработчик = "пп_ПечатьКлиент.ПечатьДоговораОказанияУслуг";
КомандаПечати.Картинка = БиблиотекаКартинок.ФорматPDF;
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "ДоговорОказанияУслугWord";
КомандаПечати.Представление = "Договор оказания услуг (Word)";
КомандаПечати.Картинка = БиблиотекаКартинок.ФорматWord;
КонецПроцедуры
Обратите внимание, что для выполнения команды печати PDF используется обработчик с процедурой пп_ПечатьКлиент.ПечатьДоговораОказанияУслуг. Модуль пп_ПечатьКлиент — сделаем клиентский, для работы с Com-объектом на клиенте (так рекомендуется стандартами 1С). Почему так — распишу поподробнее ниже.
Далее в модуле менеджера добавляем предопределенную процедуру «Печать». Если таковая уже есть в основной конфигурации — тогда размещаем ее с другим именем и директивой &После(«Печать»). В нашем примере этого не нужно. Если не указана другая процедура-обработчик — по умолчанию вызывается именно серверная процедура «Печать». Задействуем ее для формирования документа в Word.
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
ИмяМакета = "ДоговорОказанияУслуг";
ИмяМакетаWord = "ДоговорОказанияУслугWord";
НаименованиеДокумента = "Договор оказания услуг";
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, ИмяМакетаWord) Тогда
ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, ИмяМакетаWord);
Если ПечатнаяФорма <> Неопределено Тогда
ПечатнаяФорма.ОфисныеДокументы = СформироватьДокументыWord(МассивОбъектов, ИмяМакета, НаименованиеДокумента);
ПечатнаяФорма.СинонимМакета = НаименованиеДокумента;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Тут используется типовая технология формирования офисных документов. Основная функция тут СформироватьДокументWord(Ссылка, ИмяМакета), которая использует несколько функций БСП.
- УправлениеПечатью.ИнициализироватьМакетОфисногоДокумента(МакетДоговора, Неопределено) — инициализация структуры с нужными параметрами
- УправлениеПечатью.ДобавитьОписаниеОбласти(ОписаниеОбластей, «Основная», «Общая») — формирует структуру с описанием, необходимым далее при формировании макета
- УправлениеПечатью.ИнициализироватьПечатнуюФорму(Неопределено, Неопределено, Макет) — инициализирует макет
- УправлениеПечатью.ОбластьМакета(Макет, ОписаниеОбластей[«Основная»]) — формирование макета с параметрами
- УправлениеПечатью.ПрисоединитьОбластьИЗаполнитьПараметры(ПечатнаяФорма, Область, ПолучитьДанныеДоговора(Ссылка)) — окончательно формирует макет документа с переданными параметрами
- Адрес = УправлениеПечатью.СформироватьДокумент(ПечатнаяФорма) — кладет готовый макет в Хранилище значений и отдает ссылку с адресом
Функция СформироватьДокументыWord(МассивОбъектов, ИмяМакета, НаименованиеДокумента)
Шаблон = НаименованиеДокумента + " %1 от %2";
ОфисныеДокументы = Новый Соответствие;
Для каждого Ссылка Из МассивОбъектов Цикл
Адрес = СформироватьДокументWord(Ссылка, ИмяМакета);
ИмяДокумента = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Шаблон, Ссылка.Номер, Формат(Ссылка.Дата,"ДФ=dd.MM.yyyy"));
ОфисныеДокументы.Вставить(Адрес, ИмяДокумента);
КонецЦикла;
Возврат ОфисныеДокументы;
КонецФункции
Функция СформироватьДокументWord(Ссылка, ИмяМакета)
УстановитьПривилегированныйРежим(Истина);
МакетДоговора = УправлениеПечатью.МакетПечатнойФормы("Справочник.ДоговорыКонтрагентов." + ИмяМакета);
Макет = УправлениеПечатью.ИнициализироватьМакетОфисногоДокумента(МакетДоговора, Неопределено);
ОписаниеОбластей = Новый Структура;
УправлениеПечатью.ДобавитьОписаниеОбласти(ОписаниеОбластей, "Основная", "Общая");
ПечатнаяФорма = УправлениеПечатью.ИнициализироватьПечатнуюФорму(Неопределено, Неопределено, Макет);
Область = УправлениеПечатью.ОбластьМакета(Макет, ОписаниеОбластей["Основная"]);
УправлениеПечатью.ПрисоединитьОбластьИЗаполнитьПараметры(ПечатнаяФорма, Область, ПолучитьДанныеДоговора(Ссылка));
Адрес = УправлениеПечатью.СформироватьДокумент(ПечатнаяФорма);
УстановитьПривилегированныйРежим(Ложь);
Возврат Адрес;
КонецФункции
ПолучитьДанныеДоговора(Ссылка) — структура со значениями переменных, самая рутинная, но самая смысловая в части данных. Только ее вам и нужно написать свою для своего объекта
Функция ПолучитьДанныеДоговора(ДоговорСсылка)
УстановитьПривилегированныйРежим(Истина);
Текст = "ВЫБРАТЬ
| ДоговорыКонтрагентов.Ссылка КАК Договор,
| ДоговорыКонтрагентов.Номер КАК НомерДоговора,
| ДоговорыКонтрагентов.Дата КАК ДатаДоговора,
| ДоговорыКонтрагентов.СрокДействия КАК ДатаОкончанияДействия,
| ДоговорыКонтрагентов.Владелец КАК Контрагент,
| ДоговорыКонтрагентов.Владелец.НаименованиеПолное КАК КонтрагентПолноеНаименование,
| ДоговорыКонтрагентов.Организация КАК Организация,
| ДоговорыКонтрагентов.Организация.НаименованиеПолное КАК ОрганизацияПолноеНаименование,
| ДоговорыКонтрагентов.Организация.ИНН КАК ОрганизацияИНН,
| ДоговорыКонтрагентов.Организация.КПП КАК ОрганизацияКПП,
| ДЕНЬ(ДоговорыКонтрагентов.Дата) КАК ДатаЧисло,
| МЕСЯЦ(ДоговорыКонтрагентов.Дата) КАК ДатаМесяц,
| ГОД(ДоговорыКонтрагентов.Дата) КАК ДатаГод,
| ДоговорыКонтрагентов.Организация.ОсновнойБанковскийСчет КАК БанковскийСчет,
| ДоговорыКонтрагентов.Владелец.ОсновнойБанковскийСчет КАК БанковскийСчетКонтрагента
|ИЗ
| Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
|ГДЕ
| ДоговорыКонтрагентов.Ссылка = &ДоговорСсылка";
Запрос = Новый Запрос(Текст);
Запрос.УстановитьПараметр("ДоговорСсылка", ДоговорСсылка);
РезЗапроса = Запрос.Выполнить();
Если РезЗапроса.Пустой() Тогда
Возврат Неопределено;
КонецЕсли;
ДанныеЗапроса = РезЗапроса.Выгрузить()[0];
ДанныеШапки = Новый Структура("СтавкаСДополнением, НомерДоговора, КонтрагентПолноеНаименование");
ЗаполнитьЗначенияСвойств(ДанныеШапки, ДанныеЗапроса);
ДанныеШапки.Вставить("ДатаДоговора", Формат(ДанныеЗапроса.ДатаДоговора, "ДФ='d MMMM yyyy ''г.'''"));
ДанныеШапки.Вставить("ДоговорПредставление", ДанныеЗапроса.НомерДоговора + " от "
+ Формат(ДанныеЗапроса.ДатаДоговора, "ДФ=dd.MM.yyyy"));
КонтрагентПодписант = ДанныеЗапроса.Контрагент.ОсновноеКонтактноеЛицо;
КонтрагентПодписантФИО = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("%1 %2 %3",
КонтрагентПодписант.Фамилия, КонтрагентПодписант.Имя, КонтрагентПодписант.Отчество);
ПодписантДолжность = ДанныеЗапроса.Контрагент.ОсновноеКонтактноеЛицо.Должность;
СтавкаВЧас = УправлениеСвойствами.ЗначениеСвойства(ДоговорСсылка, "ДоговорСтавкаВЧас");
Если СтавкаВЧас <> Неопределено Тогда
ДанныеШапки.Вставить("СтавкаСДополнением", РаботаСКурсамиВалют.СформироватьСуммуПрописью(СтавкаВЧас,
Константы.ВалютаРегламентированногоУчета.Получить(), Истина) +"(НДС не облагается)");
КонецЕсли;
КонтрагентПодписант_Инициалы = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("%1 %2.%3.",
КонтрагентПодписант.Фамилия, Сред(КонтрагентПодписант.Имя, 1, 1), Сред(КонтрагентПодписант.Отчество, 1, 1));
ДанныеШапки.Вставить("КонтрагентПодписант_Инициалы", КонтрагентПодписант_Инициалы);
ДанныеШапки.Вставить("КонтрагентПодписантРП", СклонениеПредставленийОбъектов.ПросклонятьФИО(КонтрагентПодписантФИО, 2,,1));
ДанныеШапки.Вставить("КонтрагентПодписантДолжностьРП", СклонениеПредставленийОбъектов.ПросклонятьПредставление(Строка(ПодписантДолжность), 2, КонтрагентПодписант));
ДанныеШапки.Вставить("КонтрагентПодписантДолжность", ПодписантДолжность);
ДанныеШапки.Вставить("КонтрагентНаОсновании", "Устава");
ОтветственныеЛица = ОтветственныеЛицаБППереопределяемый.ОтветственныеЛица(ДанныеЗапроса.Организация,ТекущаяДатаСеанса(),);
ДанныеОрганизации = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(
ДанныеЗапроса.Организация, ДанныеЗапроса.ДатаДоговора,ДанныеЗапроса.БанковскийСчет,,);
ПредставлениеОрганизации = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(ДанныеОрганизации,
"НаименованиеДляПечатныхФорм,ИНН,ЮридическийАдрес,Телефоны,НомерСчета,Банк,БИК,КоррСчет");
ОрганизацияДоп = РегламентированнаяОтчетностьВызовСервера.ПолучитьСведенияОбОрганизации(
ДанныеЗапроса.Организация, ТекущаяДатаСеанса(), "ОргСубъект");
СведенияОКонтрагенте = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(
ДанныеЗапроса.Контрагент,ДанныеЗапроса.ДатаДоговора,,,);
ПредставлениеКонтрагента= ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОКонтрагенте,
"НаименованиеДляПечатныхФорм,ИНН,ЮридическийАдрес,Телефоны,НомерСчета,Банк,БИК,КоррСчет");
РуководительДолжностьПредставление = ОтветственныеЛица.РуководительДолжностьПредставление;
ОрганизацияПодписантДолжностьРП = СклонениеПредставленийОбъектов.ПросклонятьПредставление(
РуководительДолжностьПредставление, 2,);
ОрганизацияПодписант = ОтветственныеЛица.Руководитель;
ОрганизацияПодписантРП = СклонениеПредставленийОбъектов.ПросклонятьФИО(ОрганизацияПодписант.ФИО,
2, ОрганизацияПодписант, 1);
ДанныеШапки.Вставить("ОрганизацияПодписантРП", ОрганизацияПодписантРП);
ДанныеШапки.Вставить("ОрганизацияПодписантДолжностьРП", ОрганизацияПодписантДолжностьРП);
ШаблонВЛицеНаОсновании = "%1%2%3, действующ%4 на основании %5, именуем%6";
ШаблонОГРН = "свидетельства о регистрации ОГРНИП №";
Если Справочники.Организации.КодыСтатистики(ДанныеЗапроса.Организация).КодОКОПФ = "50102" Тогда
ОрганизацияВЛицеНаОсновании = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонВЛицеНаОсновании,
"","","","ий",
ШаблонОГРН + ДанныеОрганизации.ОГРН,
"ый");
ЕстьКПП = Ложь;
Иначе
ОрганизацияВЛицеНаОсновании = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонВЛицеНаОсновании,
" в лице ", ОрганизацияПодписантДолжностьРП + " ", ОрганизацияПодписантРП,"его",
"Устава",
"ое");
ЕстьКПП = Истина;
КонецЕсли;
ДанныеШапки.Вставить("ОрганизацияВЛицеНаОсновании", ОрганизацияВЛицеНаОсновании);
Если СведенияОКонтрагенте.ЮридическоеФизическоеЛицо = Перечисления.ЮридическоеФизическоеЛицо.ФизическоеЛицо Тогда
КонтрагентВЛицеНаОсновании = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонВЛицеНаОсновании,
"", "", "", "ий",
ШаблонОГРН + СведенияОКонтрагенте.ОГРН,
"ый");
ЕстьКППКонтрагента = Ложь;
Иначе
КонтрагентВЛицеНаОсновании = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонВЛицеНаОсновании,
" в лице ", ДанныеШапки.КонтрагентПодписантДолжностьРП + " ", ДанныеШапки.КонтрагентПодписантРП, "его",
"Устава",
"ое");
ЕстьКППКонтрагента = Истина;
КонецЕсли;
ДанныеШапки.Вставить("КонтрагентВЛицеНаОсновании", КонтрагентВЛицеНаОсновании);
ИНН_КПП_Строкой = "ИНН" + "%1" + " " + ДанныеОрганизации.ИНН + "%2";
ИНН_КПП_Строкой = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ИНН_КПП_Строкой,
?(ЕстьКПП, "/КПП", ""), ?(ЕстьКПП, "/" + ДанныеОрганизации.КПП, ""));
ДанныеШапки.Вставить("Город", ОрганизацияДоп.ОргСубъект);
ДанныеШапки.Вставить("ОрганизацияПодписантДолжность", РуководительДолжностьПредставление);
ДанныеШапки.Вставить("ОрганизацияПодписантДолжностьРП", СклонениеПредставленийОбъектов.ПросклонятьПредставление(РуководительДолжностьПредставление, 2, ОрганизацияПодписант));
ДанныеШапки.Вставить("ОрганизацияПодписант_Инициалы", ОтветственныеЛица.РуководительПредставление);
ДанныеШапки.Вставить("ОрганизацияПолноеНаименование", ДанныеОрганизации.ПолноеНаименование);
ДатаОкончанияДействия = ?(ЗначениеЗаполнено(ДанныеЗапроса.ДатаОкончанияДействия), ДанныеЗапроса.ДатаОкончанияДействия,
КонецГода(ТекущаяДатаСеанса()));
СрокОкончанияДоговора = Формат(ДатаОкончанияДействия, "ДФ='d MMMM yyyy ''г.'''");
ДанныеШапки.Вставить("СрокОкончанияДоговора", СрокОкончанияДоговора);
РеквизитыСтрокой = "%1: %2
|%3
|ОГРН %4
|Банковские реквизиты:
|р/с %5
|В банке %6
|БИК %7
|e-mail: %8";
ДанныеБанкСчета = Справочники.БанковскиеСчета.РеквизитыСчета(ДанныеЗапроса.БанковскийСчет);
ОрганизацияРеквизитыСтрокой = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(РеквизитыСтрокой,
ДанныеОрганизации.НаименованиеДляПечатныхФорм,
ДанныеОрганизации.ЮридическийАдрес,
ИНН_КПП_Строкой,
ДанныеОрганизации.ОГРН,
ДанныеБанкСчета.НомерСчета,
ДанныеБанкСчета.НаименованиеБанка,
ДанныеБанкСчета.БИКБанка,
ДанныеОрганизации.Email);
АдрЮР = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(ДанныеЗапроса.Контрагент,
Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента, ТекущаяДатаСеанса(), Истина);
ДанныеБанкСчетаКонтрагента = Справочники.БанковскиеСчета.РеквизитыСчета(ДанныеЗапроса.БанковскийСчетКонтрагента);
EmailКонтрагента = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(ДанныеЗапроса.Контрагент,
Справочники.ВидыКонтактнойИнформации.EmailКонтрагенты, ТекущаяДатаСеанса(), Истина);
Если ДанныеБанкСчетаКонтрагента = Неопределено Тогда
ДанныеБанкСчетаКонтрагента = Новый Структура("НомерСчета, НаименованиеБанка, БИКБанка");
КонецЕсли;
ИНН_КПП_Строкой = "ИНН" + "%1" + " " + СведенияОКонтрагенте.ИНН + "%2";
ИНН_КПП_Строкой = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ИНН_КПП_Строкой,
?(ЕстьКППКонтрагента, "/КПП", ""), ?(ЕстьКППКонтрагента, "/" + СведенияОКонтрагенте.КПП, ""));
КонтрагентРеквизитыСтрокой = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(РеквизитыСтрокой,
СведенияОКонтрагенте.НаименованиеДляПечатныхФорм,
АдрЮР,
ИНН_КПП_Строкой,
ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДанныеЗапроса.Контрагент, "РегистрационныйНомер"),
ДанныеБанкСчетаКонтрагента.НомерСчета,
ДанныеБанкСчетаКонтрагента.НаименованиеБанка,
ДанныеБанкСчетаКонтрагента.БИКБанка,
EmailКонтрагента);
ДанныеШапки.Вставить("ОрганизацияРеквизитыСтрокой", ОрганизацияРеквизитыСтрокой);
ДанныеШапки.Вставить("КонтрагентРеквизитыСтрокой", КонтрагентРеквизитыСтрокой);
ДанныеШапки.Вставить("ОрганизацияРеквизитыСтрокойВАкте", ПредставлениеОрганизации);
ДанныеШапки.Вставить("КонтрагентРеквизитыСтрокойВАкте", ПредставлениеКонтрагента);
УстановитьПривилегированныйРежим(Ложь);
Возврат ДанныеШапки;
КонецФункции
С серверной частью все. Переходим к клиентской. Во первых почему нужен клиентский вызов. Потому что MS Word умеет сохранять документы в PDF, вот такой процедурой: WordDocument.SaveAs(FilePDF, 17). Причем умеет только из приложения, то есть нужно создавать COM-объект Word.Application. А вот COM-объект на сервере — это не только регистрация ком-объекта, но и проблемы с зависанием сессий и затем полная остановка данной функции. Поэтому 1С и сообщество не рекомендует, нужно делать на клиенте.
В клиентском модуле добавляем две процедуры. Собственно наш обработчик ПечатьДоговораОказанияУслуг и собственно процедуру открытия СформироватьWordИОткрытьPDF.
Функция ПечатьДоговораОказанияУслуг(Парам) Экспорт
МассивОбъектов = Парам.ОбъектыПечати;
ИмяМакета = Парам.Идентификатор;
МакетИДанныеОбъекта = УправлениеПечатьюВызовСервера.МакетыИДанныеОбъектовДляПечати(Парам.МенеджерПечати, ИмяМакета, МассивОбъектов);
СформироватьWordИОткрытьPDF(МассивОбъектов, МакетИДанныеОбъекта, ИмяМакета);
Возврат Истина;
КонецФункции
Процедура СформироватьWordИОткрытьPDF(МассивОбъектов, МакетИДанныеОбъекта, ИмяМакета)
ТипМакета = МакетИДанныеОбъекта.Макеты.ТипыМакетов[ИмяМакета];
ДвоичныеДанныеМакетов = МакетИДанныеОбъекта.Макеты.ДвоичныеДанныеМакетов;
Области = МакетИДанныеОбъекта.Макеты.ОписаниеОбластей;
Макет = УправлениеПечатьюКлиент.ИнициализироватьМакетОфисногоДокумента(ДвоичныеДанныеМакетов[ИмяМакета], ТипМакета, ИмяМакета);
Если Макет = Неопределено Тогда
Возврат;
КонецЕсли;
ЗакрытьОкноПечатнойФормы = Ложь;
Попытка
ПечатнаяФорма = УправлениеПечатьюКлиент.ИнициализироватьПечатнуюФорму(ТипМакета, Макет.НастройкиСтраницыМакета, Макет);
Если ПечатнаяФорма = Неопределено Тогда
УправлениеПечатьюКлиент.ОчиститьСсылки(Макет);
Возврат;
КонецЕсли;
Для каждого ДокументСсылка Из МассивОбъектов Цикл
ДанныеОбъекта = МакетИДанныеОбъекта.Данные[ДокументСсылка][ИмяМакета];
Область = УправлениеПечатьюКлиент.ОбластьМакета(Макет, Области[ИмяМакета]["Основная"]);
УправлениеПечатьюКлиент.ПрисоединитьОбластьИЗаполнитьПараметры(ПечатнаяФорма, Область, ДанныеОбъекта, Ложь);
КонецЦикла;
Исключение
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
ЗакрытьОкноПечатнойФормы = Истина;
Возврат;
КонецПопытки;
FilePDF = ПолучитьИмяВременногоФайла("pdf");
FileDOC = ПолучитьИмяВременногоФайла("docx");
MSWordApp = ПечатнаяФорма.COMСоединение;
MSWordApp.Application.Selection.Collapse();
// Восстановить вид просмотра документа.
Если ПечатнаяФорма.Свойство("ViewType") Тогда
MSWordApp.Application.ActiveWindow.View.Type = ПечатнаяФорма.ViewType;
КонецЕсли;
MSWordApp.Application.Visible = Истина;
MSWordApp.Activate();
WordDocument = MSWordApp.Application.Documents(1);
WordDocument.SaveAs(FilePDF, 17);
WordDocument.Close(0);
MSWordApp.Application.Quit();
УдалитьФайлы(FileDOC);
УправлениеПечатьюКлиент.ОчиститьСсылки(ПечатнаяФорма, ЗакрытьОкноПечатнойФормы);
УправлениеПечатьюКлиент.ОчиститьСсылки(Макет);
ОписаниеОповещения = Новый ОписаниеОповещения();
НачатьЗапускПриложения(ОписаниеОповещения, FilePDF,);
КонецПроцедуры
Ну и вуаля — все готово.
Вообще весь код в статье, он мой рабочий, шаблон ворда — изготовите сами на 5 мин, ну а если нужно готовое — качайте готовое с Инфостарта https://infostart.ru/public/1753205/ (если есть стартмани конечно)
Печать по любому шаблону Word Обработка 1С
15:48
20.79 MB
6.3K
Печать в Word из 1С БСП
22:05
29.06 MB
15K
Обзор решения Универсальная печать по шаблонам Word из 1С
01:48
2.37 MB
641
APPLIX RU Печать документов 1С по шаблону WORD Создаем шаблон договора
10:36
13.95 MB
12K
Печатная форма шаблон Microsoft Word для 1С Предприятие 8 3 1 я часть
07:05
9.32 MB
28.3K
Печать договоров по шаблонам MS Word из 1С
04:32
5.97 MB
1.9K
APPLIX RU Мастер печати документов 1С по шаблону WORD
08:20
10.97 MB
477
Как обрабатывать и печатать документы из 1С по шаблонам WORD Скрипт в 1С ЭВОДОК Автоматизатор
03:11
4.19 MB
319
1С Предприятие 8 Работа с Word
08:48
11.58 MB
1.9K
Как в 1С сформировать документ Word
06:19
8.31 MB
343
1С Документооборот Настройка заполнения шаблона файла MS Word
13:24
17.64 MB
1.4K
APPLIX RU Печать документов 1С по шаблону WORD Как запустить и использовать
05:55
7.79 MB
1.1K
APPLIX RU Мастер печати документов 1С по шаблону WORD Общий обзор
04:09
5.46 MB
753
Печатная форма договора контрагента по шаблону выгрузкой в MS Word для 1С УТ 10 3
05:58
7.85 MB
77
Печать договоров в Word из 1С
01:51
2.43 MB
112
Печать в Word из 1с
03:33
4.67 MB
350
Вставка изображений в Word из 1С с Шаблоны Doc
06:49
8.97 MB
2K
Как печатать документы в СRM 1С
54
1.18 MB
49
Универсальная печатная форма договора в формате Word для 1С Розница 2 2
14:37
19.24 MB
198
1С Мастер печати документов в WORD примеры написания скриптов
03:48
5.00 MB
134
Печать договоров в 1С пишем скрипт для обработки
08:57
11.78 MB
401
Печать из 1С в WORD Функционал версии 4 0
11:23
14.98 MB
627
Заготовка для создания обработок печати из 1С в WORD
01:13
1.60 MB
570
Универсальная печатная форма договора в формате Word для 1С УТ 11 3
09:12
12.11 MB
453
Установка Шаблоны Doc для 1С Предприятие
01:59
2.61 MB
194
Как создать печатную форму в 1С без программиста Эводок мастер печати документов Автоматизатор
01:01
1.34 MB
3.4K
Как создать шаблон договора Заполнение шаблона Word Программа Комбинатор Про
16:35
21.82 MB
895
Печать договоров с контрагентами по произвольному шаблону в 1С Предприятие 8
18:10
23.91 MB
6K
1С БСП Подсистема Печать
14:04
18.51 MB
593
1С Мастер печати договоров Запись вебинара
16:50
22.15 MB
21.2K
Формирование документов Word из 1С
06:29
8.53 MB
1.4K
Заполнение 1C таблицы в макете MS Word
01:22
1.80 MB
6K
Создание договора в 1c из шаблона Word или OpenOffice
02:23
3.14 MB
3.8K
Шаблоны Doc для 1С Предприятие из 1С в Word
02:16
2.98 MB
2.5K
Универсальная печатная форма договора в формате Word для 1С УНФ 1 6
08:37
11.34 MB
474
Универсальная печатная форма договора в формате Word для 1С УТ 11 1
10:34
13.91 MB
47
Универсальная форма договора в формате Word для 1С Бухгалтерия Предприятия 3 0
09:13
12.13 MB
177
Вебинар Настройка печатных форм и шаблонов модуль Печатные формы Спец шаблоны Текстовые шаблоны
39:26
51.90 MB
1.7K
Помощники ввода данных печать в Word в Процессах 3 0 16
13:00
17.11 MB
115
Как создать договор в 1С без ошибок за 5 сек Печать договора из 1С ЭВОДОК Автоматизатор
15:06
19.87 MB
4.1K
1С Мастер печати документов WORD Вывести БИК Банка
01:30
1.97 MB
228
1С Обработки Групповая печать документов версия 1 0 0
04:05
5.37 MB
338
BPMonline печатные формы Word
08:10
10.75 MB
38
Универсальная печатная форма договора в формате Word с выводом доп реквизитов для 1С Розница 2 2
14:00
18.42 MB
49
Универсальная печатная форма договора в формате Word с выводом доп реквизитов для 1С УТ 11 1
14:44
19.39 MB
44
3 этап Формирование документа Word из документа или справочника
03:25
4.50 MB
156
Разработка внешних печатных форм 1С
51:52
68.26 MB
6.8K
20 Выгрузка выборки сохранение данных в Word и Excel
01:23
1.82 MB
23
Универсальная форма договора в формате Word для 1С Управление торговлей 10 3
07:18
9.61 MB
401
Инструкция о использовании набора для создания документов Word из 1С 7 7
06:05
8.01 MB
83