Универсальная печать по шаблонам word

Формирование и заполнение документов 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

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

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

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-ти дней со дня поступления денег на наш счет.

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

Для возврата оплаты просто свяжитесь с нами.

Обработка “”Универсальная печать по шаблонам Word” является инструментом для формирования печатных форм в формате Word (docx) на основе шаблонов (docx). 

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

Целевая аудитория:

  • Кадры:
    — Различные варианты печатных форм: job offer, трудовые договоры, соглашения, nda и т.д.;
  • Юр. Служба:
    — Печатные формы по договорам контрагентов с применением логотипов и картинок, добавление нескольких вариантов договоров, приложений, доп соглашений для разных условий;
  • Продажи и закупки:
    — Печатные формы по документам с выводом таблиц (например: Прайс листы номенклатуры, коммерческие предложения, заказы, тендеры, и др.);

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


Последние темы автора:

  • Скачать «Ethereal. Психосоматика зубов»
  • Скачать «Ethereal. «Дорогая, я стал миллионером!»»
  • Скачать «Ethereal. Подключение к регулярным денежным порталам»
  • Скачать «Ethereal. Деньги и Тело»
  • Скачать «Нейровзрыв 36. Приворот»
  • #1

Автор: Infostart
Название: Универсальная печать по шаблонам Word. Печать договоров из 1С (2022)

2

Описание:

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

Целевая аудитория:

  • Кадры
    • Различные варианты печатных форм: job offer, трудовые договоры, соглашения, nda и т.д.;
  • Юр. Служба
    • Печатные формы по договорам контрагентов с применением логотипов и картинок, добавление нескольких вариантов договоров, приложений, доп соглашений для разных условий;
  • Продажи и закупки
    • Печатные формы по документам с выводом таблиц (например: Прайс листы номенклатуры, коммерческие предложения, заказы, тендеры, и др.);

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

Функционал PRO версии (расширение STANDART версии):

  1. Вывод изображений в шаблон (включая таблицы). Источником изображений могут быть справочники с постфиксом «присоединенные файлы» (типовой механизм хранения файлов) или хранилище значения.
  2. Настройки вывода изображений посредством дополнений/
  3. Вывод вложенных таблиц в шаблон. Это может пригодится для вывода например прайс листа с товарами и их комплектующими. Вывод изображений вложенных таблиц также работает.
  4. Вывод параметров в колонтитулы (включая таблицы и изображения);
  5. Расширенные настройки хранения файлов шаблонов
  6. Расширенная форма выбора шаблона из форм элементов и списков с возможностями

Версия: Универсальная печать по шаблонам Word (Обработка PRO)

Подробнее:

Скачать:

  • #2

В раздаче 2 файла . В чем их отличие друг от друга ? спасибо !

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

Итак, к примеру, необходимо формировать некоторый типовой текст на основе имеющегося в организации шаблона в формате 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С, но это на ваше усмотрение.

Итак

  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/ (если есть стартмани конечно)

Понравилась статья? Поделить с друзьями:
  • Умные таблицы в excel как создать
  • Универсальная загрузка excel файлов скачать
  • Унифицированная форма т 3 штатное расписание скачать бланк excel
  • Умные таблицы в excel как включить
  • Умный фильтр для excel