Печатная форма 1С в формате Word: от кнопки «Сохранить» до шаблонов

· 10 мин

Содержание

Чтобы выгрузить файл из 1С в Ворд, откройте печатную форму документа, нажмите кнопку со значком дискеты («Сохранить») и отметьте формат Документ Microsoft Word 2007 (.docx). Файл ляжет в выбранную папку, Word для этого даже не нужен: платформа 8.3 сама собирает DOCX.

Частое заблуждение — что сначала надо выгрузить в Excel, а потом копировать таблицу в Word. Так делали лет десять назад. Сейчас прямой экспорт в Word есть в любой типовой конфигурации на платформе 8.3. Другое дело, если документов сотни или нужен договор по своему шаблону с закладками. Тогда пригодятся COM-соединение, сборка DOCX через OpenXML и шаблоны.

1. Сохранить печатную форму в Word кнопкой «Сохранить»

Способ работает в БП 3.0, ЗУП 3.1, УТ 11 и других конфигурациях на БСП: окно печатной формы у них общее.

  1. Откройте документ (счёт, акт, накладную, приказ) или выделите его в списке.
  2. Нажмите Печать и выберите нужную форму.
  3. В окне предварительного просмотра нажмите кнопку с дискетой — Сохранить.
  4. В окне выбора формата отметьте флажок Документ Microsoft Word 2007 (.docx). Остальные флажки снимите, если другие форматы не нужны.
  5. Укажите, куда сохранить: в папку на компьютере или прикрепить файл к документу в базе.
  6. Подтвердите сохранение и откройте файл в Word.

Можно отметить сразу несколько форматов, например DOCX и PDF. 1С сохранит оба файла за один раз. PDF уйдёт контрагенту, DOCX останется для правки.

Если перед печатью вы выделили в списке 10 документов, в окно просмотра попадут все 10. При сохранении 1С создаст файлы по каждому документу, а не один общий.

Когда кнопки «Сохранить» нет

Кнопка может прятаться в меню Ещё командной панели печатной формы. Если нет и там, проверьте два варианта:

  • 🔒 у пользователя урезаны права (подробнее — в разделе про доступ);
  • 🧩 форма открыта не стандартным механизмом печати, а внешней обработкой со своим окном. Тогда используйте способ из следующего раздела.

2. Выгрузка в Word через «Сохранить как»: отчёты и любые табличные документы

Печатная форма, отчёт, оборотно-сальдовая ведомость — всё это табличные документы. Любой из них можно сохранить в Word через главное меню.

  1. Сформируйте отчёт или откройте печатную форму.
  2. Щёлкните мышью внутри таблицы, чтобы она стала активной.
  3. Откройте главное меню (кнопка с тремя полосками в заголовке окна) → Файл → Сохранить как....
  4. В поле типа файла выберите Документ Word 2007 (*.docx).
  5. Введите имя и нажмите Сохранить.

Сочетание Ctrl+S при активной таблице открывает то же окно.

Что получится в Word

Word получает таблицу, а не «картинку» бланка. Это удобно для правки, но есть нюансы:

Что было в 1СЧто будет в Word
Строки и колонки макетаТаблица Word, часто с объединёнными ячейками
Широкая форма (ТОРГ-12, УПД)Может вылезти за поля страницы
Печать, подпись, логотипКартинки сохраняются, но могут сместиться
Колонтитулы и повтор шапкиПереносятся не всегда
Разрывы страницWord пересчитает страницы по своим полям

Для форм с жёсткой разметкой (УПД, ТОРГ-12, счёт-фактура) Word — не лучший формат. Если документ нужно только отправить, сохраните PDF. Word берите, когда текст действительно будут редактировать: договор, служебную записку, приказ.

Широкую форму проще поправить в самом Word: Макет → Ориентация → Альбомная, затем уменьшите поля. Если и это не помогает, в 1С перед сохранением поставьте масштаб печати «по ширине страницы» в параметрах страницы.

3. Автоматическая выгрузка из 1С в Word через COM-соединение

COM — способ управлять установленным Word прямо из кода 1С. Он нужен, когда документ должен строиться по готовому вордовскому шаблону: с вашим оформлением, стилями, колонтитулами.

Условия работы:

  • 🖥️ Windows и установленный Microsoft Word на том компьютере, где выполняется код;
  • 💻 код выполняется на клиенте (&НаКлиенте) в тонком или толстом клиенте; веб-клиент COM не поддерживает;
  • 📄 шаблон .dotx или .docx с закладками в местах, куда подставляются данные.

Пример: заполнить договор по закладкам

В шаблоне Word поставьте курсор в место номера договора и вставьте закладку: Вставка → Закладка, имя НомерДоговора. Так же создайте закладки Контрагент, Сумма, Дата.

&НаКлиенте
Процедура ЗаполнитьШаблонWord(ПутьКШаблону, ПутьРезультата, Данные)
    // Данные — Структура: ключ = имя закладки, значение = текст
    Word = Новый COMОбъект("Word.Application");
    Word.Visible = Ложь;
    Попытка
        Док = Word.Documents.Add(ПутьКШаблону);
        Для Каждого Пара Из Данные Цикл
            Если Док.Bookmarks.Exists(Пара.Ключ) Тогда
                Док.Bookmarks.Item(Пара.Ключ).Range.Text = Строка(Пара.Значение);
            КонецЕсли;
        КонецЦикла;
        Док.SaveAs2(ПутьРезультата, 16); // 16 — формат .docx
        Док.Close(0);                    // 0 — закрыть без вопросов
        Word.Quit(0);
    Исключение
        Word.Quit(0);
        ВызватьИсключение;
    КонецПопытки;
КонецПроцедуры

Вызов:

Данные = Новый Структура;
Данные.Вставить("НомерДоговора", "15/26");
Данные.Вставить("Контрагент", "ООО «Ромашка»");
Данные.Вставить("Сумма", Формат(120000, "ЧДЦ=2; ЧГ=3"));
ЗаполнитьШаблонWord("C:\Шаблоны\Договор.dotx", "C:\Выгрузка\Договор_15.docx", Данные);

Три приёма, которые экономят время:

  1. Word.Quit в обеих ветках. Если код упал, а Word не закрыт, в диспетчере задач копятся процессы WINWORD.EXE. Через 20 вызовов компьютер начинает тормозить.
  2. Documents.Add, а не Open. Add создаёт новый документ на основе шаблона, сам шаблон остаётся нетронутым.
  3. Текст в закладку присваивайте через Range.Text. Закладка при этом исчезает, поэтому для повторного заполнения берите шаблон заново, а не перезаписывайте готовый файл.

Не запускайте Word через COM на сервере 1С. Microsoft не поддерживает работу Office из служб: процесс может зависнуть на невидимом диалоге и держать сеанс. Для серверной генерации используйте способ из следующего раздела.

4. Как сделать DOCX без установленного Word: OpenXML

Файл .docx — это ZIP-архив с XML-файлами внутри. Текст документа лежит в word/document.xml. 1С умеет распаковывать и собирать ZIP, поэтому Word на компьютере не нужен. Способ работает и на сервере, и под Linux.

Схема такая: в шаблоне Word пишете метки вроде [Контрагент], код распаковывает архив, заменяет метки в XML и упаковывает обратно.

Функция ЗаполнитьDOCX(ПутьКШаблону, ПутьРезультата, Данные)
    Каталог = ПолучитьИмяВременногоФайла("");
    СоздатьКаталог(Каталог);

    Архив = Новый ЧтениеZipФайла(ПутьКШаблону);
    Архив.ИзвлечьВсе(Каталог);
    Архив.Закрыть();

    ИмяXML = Каталог + ПолучитьРазделительПути() + "word"
        + ПолучитьРазделительПути() + "document.xml";
    Чтение = Новый ЧтениеТекста(ИмяXML, КодировкаТекста.UTF8);
    Текст = Чтение.Прочитать();
    Чтение.Закрыть();

    Для Каждого Пара Из Данные Цикл
        Значение = СтрЗаменить(Строка(Пара.Значение), "&", "&");
        Значение = СтрЗаменить(Значение, "<", "&lt;");
        Значение = СтрЗаменить(Значение, ">", "&gt;");
        Текст = СтрЗаменить(Текст, "[" + Пара.Ключ + "]", Значение);
    КонецЦикла;

    Запись = Новый ЗаписьТекста(ИмяXML, КодировкаТекста.UTF8);
    Запись.Записать(Текст);
    Запись.Закрыть();

    НовыйАрхив = Новый ЗаписьZipФайла(ПутьРезультата);
    НовыйАрхив.Добавить(Каталог + ПолучитьРазделительПути() + "*",
        РежимСохраненияПутейZIP.СохранятьОтносительныеПути,
        РежимОбработкиПодкаталоговZIP.ОбрабатыватьРекурсивно);
    НовыйАрхив.Записать();

    УдалитьФайлы(Каталог);
    Возврат ПутьРезультата;
КонецФункции

Главная ловушка OpenXML: разорванные метки

Word часто дробит текст на куски (<w:r>) из-за проверки орфографии, истории правок или смены шрифта посреди слова. Метка [Контрагент] в XML может оказаться разрезанной на [Контр и агент]. Замена тогда молча не сработает.

Как избежать:

  • ✏️ набирайте метку в шаблоне целиком, за один раз, без исправлений внутри;
  • 🔤 отключите для меток проверку правописания (выделить → Рецензирование → Язык → «Не проверять правописание»);
  • 🔍 после правки шаблона откройте document.xml любым архиватором и найдите метки поиском. Если какая-то не находится целиком — перепечатайте её.

Если нужно не менять текст, а выгрузить готовую таблицу, проще использовать платформенный метод. Он работает на сервере без Office:

ТабДок.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.DOCX);

5. Шаблоны Word для массовой выгрузки документов

Массовая выгрузка — это одна процедура заполнения (COM или OpenXML) в цикле по выборке документов. Пример: 300 договоров с сотрудниками или уведомления всем контрагентам.

Порядок работы:

  1. Подготовьте один шаблон с метками или закладками. Имена меток делайте латиницей или кириллицей без пробелов: [ФИО], [Должность], [Оклад].
  2. Запросом выберите данные одной таблицей: каждая строка — один будущий файл.
  3. В цикле собирайте структуру Данные и вызывайте заполнение.
  4. Имя файла стройте из уникальных полей, например Договор_<Номер>_<Дата>.docx. Запрещённые в именах символы (/ \ : * ? " < > |) заменяйте на _.
  5. Готовые файлы упакуйте в один ZIP и передайте пользователю.
СпособСкорость на 300 файловГде работаетРиски
Кнопка «Сохранить» в печатной формеБыстро, но вручнуюЛюбой клиентНет своего шаблона
ТабДок.Записать(..., DOCX) в циклеБыстроКлиент и серверВид как у макета 1С, не Word
COM + закладкиМедленно, Word открывается на каждый файлТолько Windows-клиент с WordЗависшие процессы WINWORD.EXE
OpenXML + меткиБыстроКлиент и сервер, Windows и LinuxРазорванные метки в шаблоне

При COM-выгрузке в цикле создавайте объект Word.Application один раз до цикла и закрывайте после. Запуск Word на каждой итерации увеличивает время в разы.

Шаблоны храните в базе, а не в общей сетевой папке: в реквизите типа ХранилищеЗначения или как присоединённый файл. Тогда шаблон один для всех пользователей, и никто случайно не перезапишет его своей версией.

6. Ошибки при выгрузке из 1С в Word и что с ними делать

Диагностика: выберите симптом

Отдельно о кракозябрах вместо кириллицы. При выгрузке через Сохранить как их не бывает. Если они появились в файле, собранном через OpenXML, значит document.xml записан не в UTF-8. Проверьте кодировку в ЗаписьТекста.

7. Права доступа и безопасность выгружаемых файлов

Выгрузка в Word — это вынос данных из базы. В договорах и приказах есть паспортные данные, оклады, адреса. Это персональные данные, и за их утечку отвечает работодатель по закону № 152-ФЗ.

Что настроить:

  • 🔑 Право «Вывод». Платформенное право в ролях конфигурации. Без него пользователь не может печатать и сохранять табличные документы в файлы. Бухгалтеру оно нужно, а для ролей «только просмотр» его отключение — рабочая мера.
  • 🗂️ Профили групп доступа. В типовых конфигурациях права меняют в Администрирование → Настройки пользователей и прав → Профили групп доступа, а не правкой ролей в Конфигураторе.
  • 🛡️ Безопасный режим. Внешние обработки, подключённые в безопасном режиме, не могут создавать COM-объекты и писать файлы вне временного каталога. Если ваша обработка выгрузки работает через COM, её придётся подключить с соответствующим разрешением. Делайте это только для обработок, код которых вы проверили.
  • 🧹 Временные файлы. При OpenXML-сборке на сервере используйте ПолучитьИмяВременногоФайла и удаляйте каталог после упаковки, как в примере выше. Иначе на сервере копятся копии договоров с персональными данными.
  • 📁 Папка выгрузки. Не сохраняйте массовую выгрузку в общую сетевую папку «для всех». Лучше отдать ZIP пользователю через диалог сохранения.

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

Частые вопросы

Можно ли выгрузить из 1С в Word старый формат .doc?
Стандартное сохранение даёт только DOCX. Если получателю нужен .doc, откройте файл в Word и сохраните как «Документ Word 97–2003».
Почему в 1С нет пункта Word при сохранении?
Возможны две причины: база работает на старой платформе или вы сохраняете не табличный документ, а, например, текстовое поле. Проверьте номер платформы в окне «О программе» и откройте именно печатную форму.
Нужен ли Microsoft Word, чтобы сохранить печатную форму в DOCX?
Нет. Платформа сама формирует файл. Word или LibreOffice нужен только чтобы открыть результат.
Как выгрузить в Word сразу несколько документов одним файлом?
Платформа сохраняет каждый документ отдельно. Для одного файла соберите документы через COM в один Word-документ или объедините файлы в самом Word через Вставка → Объект → Текст из файла.
Откроется ли выгруженный DOCX в LibreOffice или «Р7-Офисе»?
Да, это стандартный формат Office Open XML. Возможны мелкие расхождения в ширине колонок и отступах.

Источники

  • Федеральный закон от 27.07.2006 № 152-ФЗ «О персональных данных»