Как выгрузить, отредактировать и загрузить обратно макет MS Word из 1С?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Работа с печатными формами в формате MS Word в среде 1С — задача распространенная, но имеющая свои технические «подводные камни». Часто разработчики сталкиваются с ситуацией, когда макет хранится в конфигурации не как прямой объект ActiveDocument, а как Двоичные данные. Это создает определенные сложности при попытке внести даже незначительные правки в текст или структуру документа.

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

Разбираем процесс выгрузки макета

Когда макет в конфигураторе представлен как Двоичные данные, 1С воспринимает его просто как набор байтов. Чтобы превратить этот набор в редактируемый документ, проделаем следующие шаги:

  1. Откроем конфигуратор и найдем нужный макет в дереве метаданных.
  2. Нажмем на него правой кнопкой мыши или дважды кликнем, после чего выберем команду «Сохранить макет в файл...» (или «Выгрузить в файл»).
  3. Система предложит сохранить файл. На этом этапе крайне важно вручную дописать расширение файла. Если ваша конфигурация использует старые механизмы связи через COM-объект, лучше использовать расширение .doc (Word 97-2003). Если конфигурация современная — .docx.

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

Выясним причину: почему не видны параметры?

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

1. Использование закладок (Bookmarks)

Это самый популярный метод. 1С ищет в документе именованную закладку и вставляет в ее позицию текст. По умолчанию в MS Word закладки невидимы. Чтобы их увидеть и не удалить случайно при редактировании, выполним настройку в Word:

После этого в тексте появятся серые квадратные скобки [ ]. Именно внутри них 1С «рисует» данные. Если вы удалите эти скобки, программный код 1С выдаст ошибку или просто не заполнит поле.

2. Поля слияния (Mail Merge Fields)

Иногда используются специальные поля. Чтобы увидеть их технические имена вместо пустых значений, нажмите комбинацию клавиш Alt + F9. Вы увидите конструкции вида { MERGEFIELD ИмяПараметра }. Их можно перемещать по тексту, но нельзя просто переименовывать без правки кода в 1С.

3. Простая замена текста (Поиск и замена)

Если в тексте вы видите конструкции типа [ФИО] или {{Дата}}, значит разработчик использует метод Find.Execute. В этом случае вы можете смело менять их положение или форматирование, главное — сохранить написание самого маркера.

Программируем взаимодействие: работа с COM-объектом

Рассмотрим, как 1С обычно обращается к этим данным программно. Это поможет понять, почему важно сохранять структуру документа. Типичный код обращения к макету выглядит так:


// Получаем макет как двоичные данные
МакетОбъект = ПолучитьМакет("МойМакетWord");
// Сохраняем во временный файл
ИмяВременногоФайла = ПолучитьИмяВременногоФайла("doc");
МакетОбъект.Записать(ИмяВременногоФайла);

// Инициализируем Word
WordПриложение = Новый COMОбъект("Word.Application");
Документ = WordПриложение.Documents.Open(ИмяВременногоФайла);

// Пример заполнения через закладку
Если Документ.Bookmarks.Exists("НомерДоговора") Тогда
    Документ.Bookmarks("НомерДоговора").Range.Text = "№123-А";
КонецЕсли;

Из этого примера видно: если мы переименуем закладку в Word, условие Bookmarks.Exists не выполнится, и данные в печатную форму не попадут. При необходимости можно использовать пример печатной формы Word с заполнением таблиц и колонтитулов.

Тип макета: Active Document против Двоичных данных

Если вам часто приходится править макет, рекомендуем рассмотреть возможность смены типа макета. В 1С есть специальный объект Active Document. В отличие от Двоичных данных, такой макет открывается для редактирования прямо внутри конфигуратора. Вам не нужно будет постоянно выгружать и загружать файлы — 1С сама откроет окно Word внутри своего интерфейса.

Однако помните: при смене типа макета с Двоичных данных на Active Document вам придется заново создать структуру закладок или скопировать содержимое через буфер обмена, так как это разные типы объектов метаданных.

Важные нюансы при сохранении и загрузке

Проанализируем возможные ошибки при обратной загрузке макета:

Итоги

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

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

← На главную