Печатная форма 1С в формате Word: от кнопки «Сохранить» до шаблонов
Содержание
Чтобы выгрузить файл из 1С в Ворд, откройте печатную форму документа, нажмите кнопку со значком дискеты («Сохранить») и отметьте формат Документ Microsoft Word 2007 (.docx). Файл ляжет в выбранную папку, Word для этого даже не нужен: платформа 8.3 сама собирает DOCX.
Частое заблуждение — что сначала надо выгрузить в Excel, а потом копировать таблицу в Word. Так делали лет десять назад. Сейчас прямой экспорт в Word есть в любой типовой конфигурации на платформе 8.3. Другое дело, если документов сотни или нужен договор по своему шаблону с закладками. Тогда пригодятся COM-соединение, сборка DOCX через OpenXML и шаблоны.
1. Сохранить печатную форму в Word кнопкой «Сохранить»
Способ работает в БП 3.0, ЗУП 3.1, УТ 11 и других конфигурациях на БСП: окно печатной формы у них общее.
- Откройте документ (счёт, акт, накладную, приказ) или выделите его в списке.
- Нажмите
Печатьи выберите нужную форму. - В окне предварительного просмотра нажмите кнопку с дискетой —
Сохранить. - В окне выбора формата отметьте флажок
Документ Microsoft Word 2007 (.docx). Остальные флажки снимите, если другие форматы не нужны. - Укажите, куда сохранить: в папку на компьютере или прикрепить файл к документу в базе.
- Подтвердите сохранение и откройте файл в Word.
Можно отметить сразу несколько форматов, например DOCX и PDF. 1С сохранит оба файла за один раз. PDF уйдёт контрагенту, DOCX останется для правки.
Если перед печатью вы выделили в списке 10 документов, в окно просмотра попадут все 10. При сохранении 1С создаст файлы по каждому документу, а не один общий.
Когда кнопки «Сохранить» нет
Кнопка может прятаться в меню Ещё командной панели печатной формы. Если нет и там, проверьте два варианта:
- 🔒 у пользователя урезаны права (подробнее — в разделе про доступ);
- 🧩 форма открыта не стандартным механизмом печати, а внешней обработкой со своим окном. Тогда используйте способ из следующего раздела.
2. Выгрузка в Word через «Сохранить как»: отчёты и любые табличные документы
Печатная форма, отчёт, оборотно-сальдовая ведомость — всё это табличные документы. Любой из них можно сохранить в Word через главное меню.
- Сформируйте отчёт или откройте печатную форму.
- Щёлкните мышью внутри таблицы, чтобы она стала активной.
- Откройте главное меню (кнопка с тремя полосками в заголовке окна) →
Файл→Сохранить как.... - В поле типа файла выберите
Документ Word 2007 (*.docx). - Введите имя и нажмите
Сохранить.
Сочетание 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", Данные);
Три приёма, которые экономят время:
Word.Quitв обеих ветках. Если код упал, а Word не закрыт, в диспетчере задач копятся процессыWINWORD.EXE. Через 20 вызовов компьютер начинает тормозить.Documents.Add, а неOpen.Addсоздаёт новый документ на основе шаблона, сам шаблон остаётся нетронутым.- Текст в закладку присваивайте через
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);
Текст = Чтение.Прочитать();
Чтение.Закрыть();
Для Каждого Пара Из Данные Цикл
Значение = СтрЗаменить(Строка(Пара.Значение), "&", "&");
Значение = СтрЗаменить(Значение, "<", "<");
Значение = СтрЗаменить(Значение, ">", ">");
Текст = СтрЗаменить(Текст, "[" + Пара.Ключ + "]", Значение);
КонецЦикла;
Запись = Новый ЗаписьТекста(ИмяXML, КодировкаТекста.UTF8);
Запись.Записать(Текст);
Запись.Закрыть();
НовыйАрхив = Новый ЗаписьZipФайла(ПутьРезультата);
НовыйАрхив.Добавить(Каталог + ПолучитьРазделительПути() + "*",
РежимСохраненияПутейZIP.СохранятьОтносительныеПути,
РежимОбработкиПодкаталоговZIP.ОбрабатыватьРекурсивно);
НовыйАрхив.Записать();
УдалитьФайлы(Каталог);
Возврат ПутьРезультата;
КонецФункции
Главная ловушка OpenXML: разорванные метки
Word часто дробит текст на куски (<w:r>) из-за проверки орфографии, истории правок или смены шрифта посреди слова. Метка [Контрагент] в XML может оказаться разрезанной на [Контр и агент]. Замена тогда молча не сработает.
Как избежать:
- ✏️ набирайте метку в шаблоне целиком, за один раз, без исправлений внутри;
- 🔤 отключите для меток проверку правописания (выделить →
Рецензирование→Язык→ «Не проверять правописание»); - 🔍 после правки шаблона откройте
document.xmlлюбым архиватором и найдите метки поиском. Если какая-то не находится целиком — перепечатайте её.
Если нужно не менять текст, а выгрузить готовую таблицу, проще использовать платформенный метод. Он работает на сервере без Office:
ТабДок.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.DOCX);
5. Шаблоны Word для массовой выгрузки документов
Массовая выгрузка — это одна процедура заполнения (COM или OpenXML) в цикле по выборке документов. Пример: 300 договоров с сотрудниками или уведомления всем контрагентам.
Порядок работы:
- Подготовьте один шаблон с метками или закладками. Имена меток делайте латиницей или кириллицей без пробелов:
[ФИО],[Должность],[Оклад]. - Запросом выберите данные одной таблицей: каждая строка — один будущий файл.
- В цикле собирайте структуру
Данныеи вызывайте заполнение. - Имя файла стройте из уникальных полей, например
Договор_<Номер>_<Дата>.docx. Запрещённые в именах символы (/ \ : * ? " < > |) заменяйте на_. - Готовые файлы упакуйте в один 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?
Почему в 1С нет пункта Word при сохранении?
Нужен ли Microsoft Word, чтобы сохранить печатную форму в DOCX?
Как выгрузить в Word сразу несколько документов одним файлом?
Вставка → Объект → Текст из файла.Откроется ли выгруженный DOCX в LibreOffice или «Р7-Офисе»?
Источники
- Федеральный закон от 27.07.2006 № 152-ФЗ «О персональных данных»