Разработка и Конфигурация · 11 мин
Как открыть вордовский файл в 1С
Как открыть файл Word в 1С: через COM-объект, двоичные данные, макеты и внешние компоненты. Примеры кода, проверка результата, типичные ошибки.
Открыть вордовский файл в 1С можно несколькими способами: запустить его во внешнем Word через COM-объект, прочитать содержимое программно, показать пользователю файл из базы или из макета. Выбор зависит от задачи — нужно ли просто показать документ, извлечь из него текст или заполнить шаблон данными из справочников.
Важно понимать: у 1С нет собственного «просмотрщика» формата .doc/.docx, встроенного во все конфигурации. Платформа либо делегирует открытие установленному на компьютере Microsoft Word, либо работает с файлом как с двоичными данными, либо использует механизм табличных документов и макетов. Поэтому первый шаг — определить, что именно требуется от «открытия» файла.
Ниже разобраны рабочие варианты с примерами кода на встроенном языке, условиями их применения и типичными ошибками. Все примеры ориентированы на платформу 1С:Предприятие 8.3, но общие принципы справедливы и для более ранних версий.
Какие задачи решает открытие Word-файла в 1С
Прежде чем писать код, определите сценарий. От него зависит и метод, и требования к окружению. На практике встречаются четыре типовые задачи: показать пользователю готовый документ (договор, акт, письмо), извлечь текст из файла для обработки, заполнить шаблон данными из 1С и распечатать документ без вмешательства пользователя.
Для показа документа достаточно сохранить файл на диск и открыть его ассоциированной программой. Для извлечения текста нужен либо COM-объект Word, либо разбор формата .docx как ZIP-архива. Для заполнения шаблона используют COM-автоматизацию с закладками (Bookmarks) или механизм печатных форм конфигурации. Печать без диалогов также выполняется через COM-объект методом PrintOut.
Как выбрать способ
Открытие файла через COM-объект Word
Классический способ — COM-автоматизация. 1С создаёт объект Word.Application, открывает документ и управляет им: читает текст, заменяет закладки, печатает. Обязательное условие — на компьютере, где выполняется код (клиент или сервер), установлен Microsoft Word. Без него создание COM-объекта завершится ошибкой.
Пример открытия файла и чтения текста:
Попытка
Word = Новый COMОбъект("Word.Application");
Исключение
Сообщить("Microsoft Word не установлен: " + ОписаниеОшибки());
Возврат;
КонецПопытки;
Word.Visible = Истина; // показать окно Word пользователю
Документ = Word.Documents.Open("C:\Документы\Договор.docx");
ТекстДокумента = Документ.Content.Text;
// После работы обязательно закрываем
Документ.Close(0);
Word.Quit();
Word = Неопределено;
Обратите внимание на три момента. Во-первых, код обёрнут в попытку — без Word на машине объект не создастся. Во-вторых, свойство Visible управляет видимостью окна: для фоновой обработки ставьте Ложь, для показа пользователю — Истина. В-третьих, после работы объект нужно закрыть и обнулить, иначе в памяти останутся «висящие» процессы WINWORD.EXE.
Заполнение шаблона через закладки
Частая задача — подставить данные контрагента в готовый шаблон договора. Для этого в Word-файле заранее создают закладки (меню «Вставка» → «Закладка»), а из 1С обращаются к ним по имени:
Документ = Word.Documents.Open("C:\Шаблоны\Договор.docx");
Если Документ.Bookmarks.Exists("Контрагент") Тогда
Документ.Bookmarks("Контрагент").Range.Text = "ООО Ромашка";
КонецЕсли;
Проверка Exists обязательна: если закладку случайно удалили из шаблона, обращение по имени вызовет ошибку. После заполнения документ сохраняют под новым именем (метод SaveAs), чтобы не испортить шаблон.
Открытие файла из базы данных или макета
В типовых конфигурациях файлы часто хранятся в самой базе — в присоединённых файлах, в реквизитах типа ХранилищеЗначения или в макетах конфигурации. Чтобы показать такой файл пользователю, его сначала извлекают во временный каталог, а затем открывают программой по умолчанию.
// Файл хранится как двоичные данные
ДвоичныеДанные = ПолучитьДвоичныеДанныеФайла(СсылкаНаФайл);
ИмяВременногоФайла = ПолучитьИмяВременногоФайла("docx");
ДвоичныеДанные.Записать(ИмяВременногоФайла);
// Открываем ассоциированным приложением
ФайловаяСистема.ОткрытьФайл(ИмяВременногоФайла);
Метод ФайловаяСистема.ОткрытьФайл() доступен в тонком и веб-клиенте начиная с актуальных версий платформы 8.3 и не требует установленного Word в виде COM-сервера — достаточно любой программы, связанной с расширением .docx (Word, LibreOffice, WordPad). В старых версиях и в обычном приложении используют ЗапуститьПриложение(ИмяФайла).
Если файл лежит в макете конфигурации типа «Двоичные данные», его получают через ПолучитьМакет("ИмяМакета") и дальше действуют аналогично: записывают во временный файл и открывают. Это удобно для инструкций, бланков и шаблонов, которые не должны меняться пользователями.
- 1Получите двоичные данные файла из хранилища или макета
- 2Сформируйте имя временного файла с правильным расширением (.doc или .docx)
- 3Запишите двоичные данные во временный файл
- 4Откройте файл через ФайловаяСистема.ОткрытьФайл() или ЗапуститьПриложение()
- 5Проверьте, что файл открылся и содержимое читается
Чтение docx без установленного Word
Формат .docx — это ZIP-архив, внутри которого текст документа лежит в файле word/document.xml. Это позволяет извлечь текст средствами самой платформы, без Word и без COM. Способ подходит для серверной обработки, регламентных заданий и Linux-серверов, где Word в принципе недоступен.
ЧтениеZip = Новый ЧтениеZipФайла("C:\Файлы\Документ.docx");
Элемент = ЧтениеZip.Элементы.Найти("word/document.xml");
Если Элемент <> Неопределено Тогда
ЧтениеZip.Извлечь(Элемент, КаталогВременныхФайлов());
// Далее читаем XML через ЧтениеXML и собираем текст из узлов w:t
КонецЕсли;
ЧтениеZip.Закрыть();
Ограничения способа: он работает только с .docx (старый бинарный .doc так не прочитать), требует разбора XML с учётом пространства имён и не сохраняет сложное форматирование — вы получаете текст и базовую структуру абзацев. Для полноценного редактирования документа этот путь не подходит.
Альтернатива: макеты и табличные документы 1С
Если конечная цель — печатная форма, часто рациональнее вообще отказаться от Word. Табличный документ 1С позволяет строить отчёты и печатные формы с областями, параметрами и форматированием, а результат пользователь может сохранить в Excel, PDF или HTML прямо из интерфейса. Это снимает зависимость от установленного Office и версии Word у каждого пользователя.
Выбирайте Word-шаблон, когда документ юридически значим в именно вордовском виде (договор с фирменным оформлением, который правят юристы) или когда заказчик требует редактируемый .docx на выходе. Для внутренних отчётов, актов сверки и реестров табличный документ проще в поддержке и быстрее работает.
Сравнение подходов
Полный контроль над документом: чтение, правка, печать. Требует установленный Word и аккуратного закрытия объектов.
Просто показать файл пользователю. Работает с любой программой просмотра, но не даёт программного доступа к содержимому.
Чтение текста без Word, подходит для сервера и Linux. Только чтение, без форматирования и без поддержки .doc.
Печатные формы без зависимости от Office. Не даёт редактируемого .docx на выходе.
Проверка результата и типичные ошибки
После внедрения проверьте сценарий на тестовом файле: открывается ли документ, подставились ли данные в закладки, не осталось ли процессов WINWORD.EXE в диспетчере задач после завершения обработки. Для серверного кода дополнительно проверьте права учётной записи службы агента сервера 1С на каталог с файлами — ошибки «файл не найден» на сервере чаще всего связаны именно с правами или с тем, что путь указан как на клиентской машине.
Ещё одна частая проблема — разрядность. COM-объект Word создаётся в разрядности процесса 1С; при необычных сочетаниях 32/64-битных версий Office и платформы возможны ошибки создания объекта. Если COMОбъект не создаётся при установленном Word, проверьте разрядность клиента или сервера 1С и версию Office.
Как проверить результат
WINWORD.EXE завершён после Quit()
Процессы накапливаются с каждым запуском
Закладки заполнены актуальными данными, форматирование шаблона сохранено
Пустые места вместо данных или сбитая вёрстка
Файл шаблона не изменился, документы сохранены под новыми именами
Шаблон содержит данные последнего документа
Частые вопросы
Можно ли открыть Word-файл в 1С на Linux-сервере?
Через COM — нет, Microsoft Word под Linux не существует. Доступны два пути: разбор .docx как ZIP-архива средствами платформы для чтения текста или использование внешних конвертеров (например, LibreOffice в headless-режиме), вызываемых через командную строку.
Почему возникает ошибка «Недопустимая строка с указанием класса» при создании COMОбъект?
Эта ошибка означает, что Word не установлен на том компьютере, где выполняется код, либо повреждена регистрация COM-класса. Проверьте, установлен ли Office, и помните: если код серверный, Word должен стоять именно на сервере 1С, а не на клиентской машине.
Как открыть файл Word, хранящийся в присоединённых файлах типовой конфигурации?
В конфигурациях на БСП используются процедуры модуля РаботаСФайлами: например, получение двоичных данных через РаботаСФайлами.ДвоичныеДанныеФайла() с последующей записью во временный файл и открытием. Точные имена процедур зависят от версии библиотеки — сверьтесь с кодом вашей конфигурации.
Можно ли показать Word-документ прямо в форме 1С, без внешнего окна?
Штатного встроенного просмотрщика .docx в платформе нет. Обходные варианты: конвертировать документ в PDF или HTML и показать в поле HTML-документа, либо использовать ActiveX-элемент Word в обычных формах (устаревший подход, в управляемом приложении не работает).
Что делать, если после обработки остаются процессы WINWORD.EXE?
Убедитесь, что для каждого созданного объекта вызываются Documents.Close(), Word.Quit() и присвоение переменной значения Неопределено, причём даже при ошибках — используйте конструкцию Попытка/Исключение с закрытием в отдельной ветке. Зависшие процессы на сервере можно завершить вручную через диспетчер задач, но системно проблему решает только корректное закрытие объектов в коде.
Чем заполнение Word-шаблона лучше табличного документа?
Word-шаблон даёт редактируемый .docx, который юристы и менеджеры могут править привычными средствами, и сохраняет сложное фирменное оформление. Табличный документ выигрывает в скорости, простоте поддержки и независимости от Office. Для договоров чаще выбирают Word, для внутренних отчётов — табличный документ.
Что важно запомнить
Способ открытия вордовского файла в 1С выбирается под задачу: COM-объект Word для программной работы с содержимым, открытие через ассоциацию для показа пользователю, разбор .docx как ZIP — когда Word недоступен. Всегда закрывайте COM-объекты, проверяйте существование закладок и не перезаписывайте шаблоны.