1с ошибка анализа макета шаблона макет шаблона офисного документа имеет неверный формат

Обновлено: 27.01.2023

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Особенности использования механизма шаблонов в 1С:Предприятии 8 и отличия от версии 7.7

Шаблоны хранятся в виде файлов с расширением st. Подключение шаблонов осуществляется в окне «Шаблоны текста», с помощью «Сервис» – «Шаблоны текста» – «Действия» – » Настройка шаблонов . «. В появившемся диалоге можно выбрать любое множество файлов шаблонов, которые будут подключены.

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

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

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

  • Название шаблона.
  • Строка автозамены для шаблона.
  • Признак включения шаблона в контекстное меню.
  • Текст шаблона.

Рассмотрим подробно назначение каждого элемента шаблона.

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

Автоматически заменять строку – строка, по которой механизм автозамены будет подбирать подходящий шаблон. Эта строка также используется для подбора шаблона с помощью команды «Подобрать шаблон…» (Ctrl + Q). Например, если строка автозамены содержит текст «ABC», находясь в текстовом редакторе справа от этого слова и нажав Space или Enter , будет выполнена автозамена текста «ABC» (если механизм автозамены включен).

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

Текст шаблона – текст, который будет вставлен в редактируемый документ при выполнении шаблона.

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

2. Использование шаблонов

В 1С:Предприятии 8 расширен набор вариантов выбора шаблона для вставки его содержимого в текст. Рассмотрим эти варианты:

1. Из окна «Шаблоны текста» с помощью мыши, перетаскивая выбранный шаблон в текст.

2. Из окна «Шаблоны текста» путем копирования в буфер обмена выбранного шаблона и вставки его в тексте.

3. С помощью контекстного меню текстового редактора. В него попадут те шаблоны, у которых отмечен флажок «Включать в контекстное меню».

4. С помощью механизма автозамены текстового редактора. Механизм автозамены должен быть активизирован с помощью настройки редактора текста (редактора модулей): нужно указать, что автозамена включена или включена с подсказкой. Это можно сделать так: «Сервис» – «Параметры» – Тексты» («Тексты модулей») – «Автозамена»: выбрать из списка «Включить» или «Включить с подсказкой». После нажатия клавиш Space или Enter система попытается подобрать шаблон по слову, стоящему слева от курсора.

5. С помощью команды «Подобрать шаблон…» (Ctrl + Q).

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

3 . Файл шаблонов, поставляемый с 1С:Предприятием

В поставку 1С:Предприятия 8 входит файл шаблонов GenTempl.st . В него включены шаблоны для часто используемых конструкций. Это и шаблоны для написания управляющих конструкций, шаблоны, связанные с использованием прикладных объектов, а так же некоторые другие.

Поскольку в будущем файл шаблонов GenTempl.st , поставляемый вместе с 1С:Предприятием 8, может изменяться и дополняться, он будет перезаписываться заново при установке очередных релизов 1С:Предприятия 8. После установки 1С:Предприятия 8 файл GenTempl.st доступен только для чтения.

Если в процессе работы возникает необходимость расширения состава поставляемых шаблонов или их изменения, рекомендуется скопировать файл GenTempl.st под новым именем, сделать его доступным для редактирования и внести в него необходимые изменения. Можно также для создания новых шаблонов создать новый файл шаблонов и подключить его. Шаблоны начнут использоваться только после того, как файлы шаблонов будут подключены.

4. Правила формирования строки автозамены

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

Однако это не всегда удобно. Так, например, если пользователь хочет заменить слово «Проц» на «Процедура…», то набрав на клавиатуре слово «Проце» и активизировав механизм автозамены, ничего не произойдет, поскольку в строках автозамены в шаблонах слова «Проце» обнаружено не будет.

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

Строка автозамены Текст шаблона
Проц Процедура.
Проце Процедура.
Процед Процедура.
Процеду Процедура.
Процедур Процедура.
Процедура Процедура.

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

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

Рассмотрим пример со словом «Процедура». Очевидно, что во всех строках автозамены строка «Проц» является постоянной частью строки автозамены, а текст правее – некоторой переменной частью, имеющей в каждом случае разное число символов. Решением для рассматриваемого примера будет один шаблон со строкой автозамены «проц[едур a ]».

5. Основные отличия от 1С:Предприятия 7.7:

1. Можно использовать несколько файлов шаблонов.

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

3. Дерево шаблонов отображается в отдельном окне «Шаблоны текста».

4. Расширился набор вариантов для выбора нужного шаблона.

5. Строка автозамены может иметь постоянную и вариантную части.

6. При установке системы активизация механизма автозамены при вводе текста отключена , поскольку не всегда удобно в процессе набора текста делать автозамену одной строки на другую. Более удобным будет использовать команду «Подобрать шаблон…» (Ctrl + Q).

7. В шаблонах появилась возможность выбора из нескольких вариантов с помощью управляющей конструкции «Выбор варианта».

По этой теме есть публикация на ИТС первая статья, вторая статья .

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

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

Сама печатная форма создается на клиентской стороне.

Шаг 1. Создание внешней обработки.

Создать внешнюю обработку, в модуле объекта обработки заполнить функцию СведенияОВнешнейОбработке.

Ниже пример из обработки к статье

Также у вас должен быть файл Word, который будет использоваться для формирования печатной формы. Поддерживаются формат как doc , так и docx .

Шаг 2. Создание макета.

Во внешней обработке надо создать новый макет . Тип макета- двоичные данные, имя макета- ПФ_DOC_МакетОтчета.

В файле Word , который будет загружен в этот макет обработки, надо выделить области .

Пример описания области .

— Окончание этой области

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

Оформление областей можно посмотреть на ИТС и в обработке к этой статье.

После оформления областей этот документ надо загрузить в макет обработки.

Шаг 3. Создание функции подготовки данных для печати.

На ИТС и в демо-базе БСП эта функция располагается в менеджере объекта, для которого создается печатная форма.

Ниже текст этой функции

Шаг 4. Создание служебных функций и процедуры

  1. функция ДанныеЗаполненияОтчета(СсылкаНаОбъект)
  2. функция ПолучитьОписаниеОбластейОфисногоДокумента()
  3. процедура ВыполнитьПечатьвWord(ДокументСсылка, МакетИДанныеОбъекта, ИмяМакета)

Эти две функции и процедура будут уникальными для конкретной печатной формы.

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

Вышеприведенная функция подставляет параметры ДатаДокумента и НаименованиеОрганизации .

В файле Word эти параметры оформлены следующим образом:

< v 8 НаименованиеОрганизации>, в лице < v 8 ДолжностьПодписанта>< v 8 ФИОПодписанта>, действующего на основании < v 8 ДокументПодписанта>, именуемое в дальнейшем “Работодатель”, с одной стороны и гр. < v 8 ФИО>, именуемый (ая) в дальнейшем “Работник” с другой стороны, именуемые в дальнейшем “Стороны”, заключили в соответствии с Трудовым кодексом Российской Федерации настоящие дополнения

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

Ниже процедура, которая выполняется на стороне клиента и выводит эти области

Обработка , прилагаемая к статье используется в конфигурации ЗУП 3.1.8.246 с версией подсистемы БСП 3.0.1.369

1) Для начала посмотрим, как выглядит печатная форма до изменений. В меню Кадры выбираем раздел Приемы, переводы, увольнения.

Печатная форма Т-1 в 1С:Зарплата и Управление Персоналом

Открываем документ с типом Прием на работу.

Прием на работу в 1С:Зарплата и Управление Персоналом

Формируем печатную форму Т-1 по кнопке Печать.

Форма Т-1 в 1С:Зарплата и Управление Персоналом

При выводе на печать поле Основание остается пустым.

Форма Т-1 в 1С:Зарплата и Управление Персоналом

2) Для заполнения по шаблону переходим в меню Администрирование, раздел Печатные формы, отчеты и обработки.

Печатные формы, отчеты и обработки в 1С:Зарплата и Управление Персоналом

Открываем пункт Макеты печатных форм.

Макеты печатных форм в 1С:Зарплата и Управление Персоналом

Выбираем из списка печатную форму Прием на работу (Т-1).

Прием на работу (Т-1) в 1С:Зарплата и Управление Персоналом

Открываем форму для просмотра и редактирования.

Прием на работу (Т-1) в 1С:Зарплата и Управление Персоналом

В поле Основание дописываем «личное заявление [Работник] от [ДатаПриема].

Прием на работу (Т-1) в 1С:Зарплата и Управление Персоналом

Для выбранной ячейки необходимо установить свойство Шаблон. Выделяем ячейку и по кнопке Еще открываем пункт Свойства.

Прием на работу (Т-1) в 1С:Зарплата и Управление Персоналом

Указываем заполнение макета – Шаблон.

Прием на работу (Т-1) в 1С:Зарплата и Управление Персоналом

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

По свойствам значения ячейки бывают:

a. Просто текст, не содержащий в себе значений, которые нужно выводить из документа. Не меняется,

b. Параметр – выводятся из документа, каждый раз меняются, в зависимости от данных документа,

c. Шаблон – содержит в себе и текст, и параметры.

В печатной форме они обозначаются:

a. Текст не имеет обозначений,

c. [] – параметр, который используется в шаблоне.

В связи с этим, поля Работник и ДатаПриема выделены соответствующим обозначением. Это параметры (меняются в каждом документе), которые используются вместе с текстом (слова, которые не меняются для всех документов).

Сохраняем настройки и смотрим, как теперь выглядит печатная форма.

Прием на работу (Т-1) в 1С:Зарплата и Управление Персоналом

Необходимо скорректировать настройки вывода даты.

Для этого возвращаемся в шаблон печатной формы Т-1 (Администрирование — Печатные формы — Отчеты и обработки). Вынесем параметр <ДатаПриема> в отдельную ячейку, в свойствах укажем Значение макета – Параметр.

Прием на работу (Т-1) в 1С:Зарплата и Управление Персоналом

Открываем поле Формат. На вкладке Дата заполняем локальный формат даты (выбираем дату без времени) и проверяем пример.

Прием на работу (Т-1) в 1С:Зарплата и Управление Персоналом

Еще раз формируем печатную форму.

Прием на работу (Т-1) в 1С:Зарплата и Управление Персоналом

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

Макеты печатных форм в 1С:Зарплата и Управление Персоналом

Статья подготовлена специалистами Компании «АНТ-ХИЛЛ»

Тел. (473) 202-20-10

При цитировании статей или заметок ссылка на сайт автора обязательна

Накопились вопросы и нужна помощь?

С удовольствием на них ответим и поможем все настроить! Обращайтесь по тел.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читайте также:

  • Изменить формат ячейки в excel формулой
  • Ошибка при обновлении данных excel
  • Как провести в 1с счет фактуру от банка
  • Ant plugins service что это за программа на андроид
  • Как заполнять 1с предприятие

Я
   VOI

07.11.14 — 12:51

Макет activedocument, при загрузке Wodr шаблона «.doc» (поле «загрузить из файла») Выдает месседж «неверный формат файла».

Хотя FAQ говорит что:

«Также конструктор поддерживает создание макетов, содержащих ActiveDocument (например, документ Word, лист Excel или рисунок CorelDRAW).»

http://v8.1c.ru/overview/Term_000000615.htm

Что может нетак быть с моим ворд файлом?

Заранее благодарю за ответ.

   VOI

1 — 07.11.14 — 13:01

(0) не работает на 2013 офисе,  на 2007 все нормально работает.)))

   Господин ПЖ

2 — 07.11.14 — 13:08

платформу обновляйте — может в новой поддержка есть

  

Поpyчик-4

3 — 07.11.14 — 13:17

(1) 1С:Предприятие 8.3 (8.3.5.1186). Документ docx офиса 2013 без проблем загружаю в макет. Даже odt OpenOffica грузится.

В статье написано, как создать внешнюю печатную форму (для конфигураций с БСП) в формате Word.

    По этой теме есть публикация на ИТС  Разработка печатных форм с использованием макетов в формате офисных документов Office Open XML , есть несколько статей на инфостарте- первая статья, вторая статья .

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

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

Сама печатная форма создается на клиентской стороне.

Шаг 1. Создание внешней обработки.

Создать внешнюю обработку, в модуле объекта обработки заполнить функцию СведенияОВнешнейОбработке.

Ниже пример из обработки к статье

Функция СведенияОВнешнейОбработке() Экспорт

ПараметрыРегистрации = Новый Структура;
МассивНазначений = Новый Массив;
МассивНазначений.Добавить("Справочник.ПодразделенияОрганизаций");
ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
ПараметрыРегистрации.Вставить("Наименование", "Договор коллективной материальной ответственности (в Word)");
ПараметрыРегистрации.Вставить("Версия", "1.1");
ПараметрыРегистрации.Вставить("БезопасныйРежим", ИСТИНА);
ПараметрыРегистрации.Вставить("Информация", "Договор коллективной материальной ответственности (в Word). Автор - Петрянкин В.Ф. ");
ТаблицаКоманд = ПолучитьТаблицуКоманд();

ДобавитьКоманду(ТаблицаКоманд, "Договор коллективной материальной ответственности (в Word)", "Макет", "ВызовКлиентскогоМетода", Истина, "");

ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);

ПараметрыРегистрации.Вставить("БезопасныйРежим",Ложь);

Возврат ПараметрыРегистрации;

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

Также у вас должен быть файл Word, который будет использоваться для формирования печатной формы. Поддерживаются формат как  doc  , так и docx .

Шаг 2. Создание макета.

Во внешней обработке надо создать новый макет . Тип макета- двоичные данные, имя макета- ПФ_DOC_МакетОтчета.

В файле Word , который будет загружен в этот макет обработки, надо выделить области .

Этих областей может быть три типа, про это есть описание на ИТС. Тип Общая- область , используемая один раз, СтрокаТаблицы — область для вывода табличной части.

Области выделяются «тегами»: начало области {v8 Область.<Имя области>}, конец области {/v8 Область.<Имя области>}

Пример описания области .

{v8 Область.Заголовок} —     Начало области с именем Заголовок, это обычный текст в файле, в печатной форме он отображаться не будет

… Здесь содержимое области

{/v8 Область.Заголовок}- Окончание этой области 

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

{v8 НаименованиеОрганизации} — описание параметра НаименованиеОрганизации. Т.е. у параметров есть только открывающий тег и нет служебного слова Область.

Оформление областей можно посмотреть на ИТС и в обработке к этой статье.

После оформления областей этот документ надо загрузить в макет обработки.

Шаг 3. Создание функции подготовки данных для печати.

На ИТС и в демо-базе БСП эта функция располагается в менеджере объекта, для которого создается печатная форма.

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

Ниже текст этой функции

// Подготавливает данные объекта к выводу на печать.
//
// Параметры:
//  МассивДокументов - Массив - ссылки на объекты, для которых запрашиваются данные для печати;
//  МассивИменМакетов - Массив - имена макетов, в которые подставляются данные для печати.
//
// Возвращаемое значение:
//  Соответствие - коллекция ссылок на объекты и их данные:
//   * Ключ - ЛюбаяСсылка - ссылка на объект информационной базы;
//   * Значение - Структура - макет и данные:
//    ** Ключ - Строка - имя макета,
//    ** Значение - Структура - данные объекта.
&НаСервере
Функция ПолучитьДанныеПечати(Знач МассивДокументов, Знач МассивИменМакетов) Экспорт

ДанныеПоВсемОбъектам = Новый Соответствие;

Для Каждого ОбъектСсылка Из МассивДокументов Цикл
ДанныеОбъектаПоМакетам = Новый Соответствие;
Для Каждого ИмяМакета Из МассивИменМакетов Цикл
ДанныеОбъектаПоМакетам.Вставить(ИмяМакета, ПолучитьДанныеОбъекта(ОбъектСсылка));
КонецЦикла;
ДанныеПоВсемОбъектам.Вставить(ОбъектСсылка, ДанныеОбъектаПоМакетам);
КонецЦикла;

ОписаниеОбластей = Новый Соответствие;
ДвоичныеДанныеМакетов = Новый Соответствие;
ТипыМакетов = Новый Соответствие; // Для обратной совместимости.

Для Каждого ИмяМакета Из МассивИменМакетов Цикл
Если ИмяМакета = "МакетОтчета(Word)" Тогда
ДвоичныеДанныеМакета = РеквизитФормыВЗначение("Объект").ПолучитьМакет("ПФ_DOC_МакетОтчета");
ДвоичныеДанныеМакетов.Вставить(ИмяМакета, ДвоичныеДанныеМакета);
ТипыМакетов.Вставить(ИмяМакета, "DOC");
КонецЕсли;
ОписаниеОбластей.Вставить(ИмяМакета, ПолучитьОписаниеОбластейМакетаОфисногоДокумента());
КонецЦикла;

Макеты = Новый Структура;
Макеты.Вставить("ОписаниеОбластей", ОписаниеОбластей);
Макеты.Вставить("ТипыМакетов", ТипыМакетов); // Для обратной совместимости.
Макеты.Вставить("ДвоичныеДанныеМакетов", ДвоичныеДанныеМакетов);

Результат = Новый Структура;

Результат.Вставить("Данные", ДанныеПоВсемОбъектам);
Результат.Вставить("Макеты", Макеты);

Возврат Результат;

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

Шаг 4. Создание служебных функций и процедуры

  1. функция ДанныеЗаполненияОтчета(СсылкаНаОбъект)
  2. функция ПолучитьОписаниеОбластейОфисногоДокумента()
  3. процедура ВыполнитьПечатьвWord(ДокументСсылка, МакетИДанныеОбъекта, ИмяМакета)

Эти две функции и процедура будут уникальными для конкретной печатной формы.

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

Примеры функций

&НаСервере
Функция ДанныеЗаполненияОтчета(СсылкаНаСправочник)

ДанныеОбъекта = Новый Структура();

ДатаПечати=ТекущаяДата();
ДатаДокумента=Формат(ДатаПечати,"ДЛФ=DD");
ДанныеОбъекта.Вставить("ДатаДокумента",ДатаДокумента);

ОрганизацияПодразделения=СсылкаНаСправочник.Владелец;
ДанныеОбъекта.Вставить("НаименованиеОрганизации",ОрганизацияПодразделения.НаименованиеПолное);

...



Возврат ДанныеОбъекта;

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

Вышеприведенная функция подставляет параметры ДатаДокумента и НаименованиеОрганизации .

В файле Word эти параметры оформлены следующим образом:

 {v8 НаименованиеОрганизации}, в  лице  {v8 ДолжностьПодписанта} {v8 ФИОПодписанта},  действующего на   основании {v8 ДокументПодписанта},  именуемое в дальнейшем “Работодатель”, с одной стороны и гр. {v8 ФИО}, именуемый (ая) в дальнейшем “Работник” с другой стороны, именуемые в дальнейшем “Стороны”, заключили в соответствии с Трудовым кодексом Российской Федерации настоящие дополнения

&НаСервере
Функция ПолучитьОписаниеОбластейМакетаОфисногоДокумента()

ОписаниеОбластей = Новый Структура;

УправлениеПечатью.ДобавитьОписаниеОбласти(ОписаниеОбластей, "Заголовок", "Общая");
УправлениеПечатью.ДобавитьОписаниеОбласти(ОписаниеОбластей, "ШапкаКоллектива", "Общая");

УправлениеПечатью.ДобавитьОписаниеОбласти(ОписаниеОбластей, "СтрокаТаблицы", "СтрокаТаблицы");


УправлениеПечатью.ДобавитьОписаниеОбласти(ОписаниеОбластей, "ПодвалКоллектива", "Общая");

Возврат ОписаниеОбластей;

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

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

Ниже процедура, которая выполняется на стороне клиента и выводит эти области

&НаКлиенте
Процедура ВыполнитьПечатьВWord(ДокументСсылка, МакетИДанныеОбъекта, ИмяМакета)

ТипМакета    = МакетИДанныеОбъекта.Макеты.ТипыМакетов[ИмяМакета];
ДвоичныеДанныеМакетов = МакетИДанныеОбъекта.Макеты.ДвоичныеДанныеМакетов;
Области     = МакетИДанныеОбъекта.Макеты.ОписаниеОбластей;
ДанныеОбъекта = МакетИДанныеОбъекта.Данные[ДокументСсылка][ИмяМакета];

Макет = УправлениеПечатьюКлиент.ИнициализироватьМакетОфисногоДокумента(ДвоичныеДанныеМакетов[ИмяМакета], ТипМакета, ИмяМакета);
Если Макет = Неопределено Тогда
Возврат;
КонецЕсли;

ЗакрытьОкноПечатнойФормы = Ложь;
Попытка
ПечатнаяФорма = УправлениеПечатьюКлиент.ИнициализироватьПечатнуюФорму(ТипМакета, Макет.НастройкиСтраницыМакета, Макет);
Если ПечатнаяФорма = Неопределено Тогда
УправлениеПечатьюКлиент.ОчиститьСсылки(Макет);
Возврат;
КонецЕсли;

// Вывод заголовка документа.
Область = УправлениеПечатьюКлиент.ОбластьМакета(Макет, Области[ИмяМакета]["Заголовок"]);
УправлениеПечатьюКлиент.ПрисоединитьОбластьИЗаполнитьПараметры(ПечатнаяФорма, Область, ДанныеОбъекта, Ложь);

Область = УправлениеПечатьюКлиент.ОбластьМакета(Макет, Области[ИмяМакета]["ШапкаКоллектива"]);
УправлениеПечатьюКлиент.ПрисоединитьОбластьИЗаполнитьПараметры(ПечатнаяФорма, Область, ДанныеОбъекта, Ложь);

Если ДанныеОбъекта.Свойство("СтрокаТаблицы_1") Тогда
Область = УправлениеПечатьюКлиент.ОбластьМакета(Макет, Области[ИмяМакета]["СтрокаТаблицы"]);
УправлениеПечатьюКлиент.ПрисоединитьИЗаполнитьКоллекцию(ПечатнаяФорма, Область, ДанныеОбъекта.СтрокаТаблицы_1, Ложь);
КонецЕсли;

Область = УправлениеПечатьюКлиент.ОбластьМакета(Макет, Области[ИмяМакета]["ПодвалКоллектива"]);
УправлениеПечатьюКлиент.ПрисоединитьОбластьИЗаполнитьПараметры(ПечатнаяФорма, Область, ДанныеОбъекта, Ложь);


УправлениеПечатьюКлиент.ПоказатьДокумент(ПечатнаяФорма);
Исключение
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
ЗакрытьОкноПечатнойФормы = Истина;
Возврат;
КонецПопытки;

УправлениеПечатьюКлиент.ОчиститьСсылки(ПечатнаяФорма, ЗакрытьОкноПечатнойФормы);
УправлениеПечатьюКлиент.ОчиститьСсылки(Макет);

КонецПроцедуры

Обработка , прилагаемая к статье используется в конфигурации ЗУП 3.1.8.246 с версией подсистемы БСП 3.0.1.369

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

Для этого:

  • Надо изменить функции и процедуру , которые описаны на шаге 4:  
    • функцию ДанныеЗаполненияОтчета(СсылкаНаОбъект)
    • функцию ПолучитьОписаниеОбластейОфисногоДокумента()
    • процедуру ВыполнитьПечатьвWord(ДокументСсылка, МакетИДанныеОбъекта, ИмяМакета)
  • В вашем файле Word оформить области и загрузить в макет обработки

  • 1с ошибка http при обращении к серверу apache
  • 1с ошибка error 210
  • 1с ошибка codebase error
  • 1с ошибка 402 iis
  • 1с ошибка 36р при пробитии чека