Документ Word и 1С 8.3: просмотр, печать по шаблону и чтение кодом

· 9 мин

Содержание

Встроенного просмотрщика Word в платформе 1С:Предприятие 8.3 нет. Вордовский файл (.doc, .docx) 1С открывает через программу, которая сопоставлена с этим расширением в системе: Microsoft Word, LibreOffice Writer или «Мой Офис». Поэтому открыть документ Word в 1С можно тремя путями: прикрепить его к карточке и нажать «Открыть», напечатать форму по шаблону Word или прочитать содержимое кодом.

Команда Файл → Открыть в режиме 1С:Предприятие с .docx не работает : она понимает табличные документы (.mxl, .xls, .xlsx, .ods), текст и HTML. Если пытаетесь открыть Word именно так, это и есть причина неудачи.

Как 1С работает с файлами других программ

Платформа хранит файл Word как двоичные данные. Сама она его не разбирает и не отображает. Когда пользователь просит открыть файл, 1С делает три вещи:

  1. Выгружает двоичные данные во временный файл на компьютере пользователя.
  2. Передаёт путь операционной системе.
  3. Система запускает программу, назначенную для .docx или .doc.

Отсюда практичное правило: если Word не открывается из 1С, сначала проверьте, открывается ли этот же файл двойным щелчком в проводнике. Если нет, проблема в ассоциации файлов или в самом офисе, а не в 1С.

Какие средства есть у разработчика и пользователя:

СредствоЧто умеетГде работает
Присоединённые файлы (БСП)Хранит, открывает, даёт редактировать с возвратом в базуЛюбой клиент, любая ОС
Макет печатной формы типа WordЗаполняет шаблон через запущенный WordТолько Windows с установленным Word
Макет печатной формы DOCXЗаполняет шаблон без WordЛюбая ОС
ЗапуститьПриложение()Открывает файл в программе по умолчаниюКлиент
COMОбъект("Word.Application")Полное управление Word из кодаТолько Windows
ЧтениеZipФайла + ЧтениеXMLДостаёт текст из .docx без офисаКлиент и сервер, любая ОС

Формат .doc (Word 97–2003) — двоичный. Без Word или LibreOffice его содержимое кодом 1С не прочитать. Формат .docx — это ZIP-архив с XML внутри, с ним можно работать средствами платформы.

Открыть Word из печатной формы или отчёта

Здесь два разных сценария, их часто путают.

Сохранить печатную форму в Word

Любой табличный документ (счёт, акт, отчёт) можно выгрузить в .docx:

  1. Сформируйте печатную форму или отчёт.
  2. Нажмите кнопку сохранения на панели формы (значок дискеты) или Ctrl+S.
  3. В поле типа файла выберите документ Word 2007 (.docx).
  4. Укажите папку и сохраните.
  5. Откройте файл в Word или LibreOffice.

💡 Word получает таблицу с объединёнными ячейками, повторяя сетку макета. Для правки текста договора это неудобно. Если документ потом будут редактировать, лучше сразу печатать его по шаблону Word, а не конвертировать табличный документ.

Печать по шаблону Word

В типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) часть печатных форм строится по шаблону Word. Классический пример — договоры. 1С берёт шаблон, подставляет в поля реквизиты и открывает готовый документ уже как .docx.

Бывает два типа таких шаблонов:

  • 📄 Макет Microsoft Word (старый тип). Заполняется через COM: 1С на компьютере пользователя запускает Word и вставляет значения. Работает только в Windows и только при установленном Word.
  • 📦 Макет DOCX (формат Office Open XML). 1С собирает файл сама, без офиса. Результат открывается в любой программе, в том числе в Linux и в веб-клиенте.

Если форма падает с ошибкой COM на компьютере без Word, это почти всегда первый тип.

Файлы Word в карточках документов и справочников

Самый частый случай: к договору, контрагенту или сотруднику прикреплён .docx. В карточке ищите ссылку «Файлы» или значок скрепки в командной панели. Там список присоединённых файлов.

Просмотр

  1. Откройте список файлов объекта.
  2. Выделите нужный документ.
  3. Нажмите «Открыть» или дважды щёлкните строку.

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

Редактирование с возвратом в базу

Чтобы правки сохранились, файл нужно взять на редактирование:

  1. Выделите файл и нажмите «Редактировать». Файл занимается за вами, у других он становится доступен только для чтения.
  2. Внесите правки в Word и сохраните документ (Ctrl+S), закройте Word.
  3. Вернитесь в 1С и выполните «Закончить редактирование». Система предложит записать новую версию.

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

Если вы закрыли 1С, не закончив редактирование, не нажимайте «Освободить»: эта команда снимает блокировку без записи изменений. Сначала откройте 1С на том же компьютере и выполните «Закончить редактирование» — локальная копия будет взята из рабочего каталога.

Рабочий каталог

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

Шаблоны Word для печати: где менять и как настроить

В БП 3.0 и других конфигурациях на БСП шаблоны лежат в разделе Администрирование → Печатные формы, отчеты и обработки → Макеты печатных форм.

Порядок правки шаблона:

  1. Найдите макет в списке. Тип шаблона видно в колонке типа или по значку.
  2. Нажмите «Изменить». Шаблон откроется в Word (или в том, что назначено для .docx).
  3. Поправьте текст. Поля для подстановки не удаляйте и не переименовывайте.
  4. Сохраните файл и закройте редактор.
  5. В 1С подтвердите завершение редактирования, чтобы измененный макет записался в базу.

Если макет испорчен, в том же списке есть команда возврата к стандартному макету.

Когда печать идёт на сервере

Шаблон типа Microsoft Word заполняется там, где запущен COM-объект. Обычно это компьютер пользователя. Но бывают обработки, которые формируют документы Word на сервере 1С, например при массовой рассылке. Тогда Word должен стоять на сервере, а служба 1С — иметь право его запускать (настройка разобрана ниже, в разделе про COM).

💡 Для новых доработок выбирайте шаблоны DOCX. Они не требуют Word на сервере, не зависят от лицензий Office и не ломаются после его обновления.

Типовые ошибки при открытии документа Word

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

Работа с Word через COM-соединение

COM даёт полный доступ к Word из встроенного языка: открыть файл, прочитать текст, заменить поля, сохранить в PDF. Работает только в Windows с установленным Word. В веб-клиенте COM недоступен.

Открыть документ Word на экране пользователя

Простейший вариант — показать файл в программе по умолчанию. Это работает с любым офисом:

&НаКлиенте
Процедура ОткрытьДокументWord(Команда)
    ЗапуститьПриложение("C:\Документы\Договор.docx");
КонецПроцедуры

В конфигурациях на БСП удобнее вызвать ФайловаяСистемаКлиент.ОткрытьФайл(ПутьКФайлу): процедура сама учитывает тип клиента и ОС.

Прочитать текст через Word.Application

Функция ТекстДокументаWord(ПутьКФайлу)
    Word = Новый COMОбъект("Word.Application");
    Word.Visible = Ложь;
    Текст = "";
    Попытка
        // Параметры: имя файла, подтверждать преобразование, только чтение
        Док = Word.Documents.Open(ПутьКФайлу, Ложь, Истина);
        Текст = Док.Content.Text;
        Док.Close(0); // 0 — не сохранять изменения
    Исключение
        Word.Quit(0);
        ВызватьИсключение;
    КонецПопытки;
    Word.Quit(0);
    Возврат Текст;
КонецФункции

Обязательно закрывайте Word в любом исходе. Иначе в диспетчере задач копятся процессы WINWORD.EXE, и через пару сотен вызовов сервер начинает тормозить.

COM на сервере 1С: что настроить

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

  1. Создайте пустые папки C:\Windows\System32\config\systemprofile\Desktop и C:\Windows\SysWOW64\config\systemprofile\Desktop. Без них Word при запуске из службы нередко не открывает документы.
  2. Один раз войдите на сервер под учётной записью службы 1С и запустите Word вручную: закройте окна первого запуска и активации.
  3. В dcomcnfg (Службы компонентов → DCOM Config) найдите приложение Microsoft Word и на вкладке удостоверения задайте конкретную учётную запись с правами на Word.

Настройку DCOM и повторный запуск службы 1С делайте вне рабочего времени: при перезапуске службы оборвутся все сеансы пользователей.

Разрядность не мешает: Word.Application запускается отдельным процессом, поэтому 64-битный сервер 1С работает с 32-битным Office.

Сама Microsoft не поддерживает автоматизацию Office из служб. Для серверных задач надёжнее читать .docx без Word.

Прочитать .docx без Word

Внутри .docx текст лежит в файле word/document.xml. Его можно достать средствами платформы на любой ОС:

Функция ТекстИзDOCX(ПутьКФайлу)
    Каталог = ПолучитьИмяВременногоФайла("");
    СоздатьКаталог(Каталог);

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

    Разд = ПолучитьРазделительПути();
    ПутьXML = Каталог + Разд + "word" + Разд + "document.xml";

    Строки = Новый Массив;
    Абзац = "";
    Чтение = Новый ЧтениеXML;
    Чтение.ОткрытьФайл(ПутьXML);
    Пока Чтение.Прочитать() Цикл
        Если Чтение.ТипУзла = ТипУзлаXML.Текст Тогда
            Абзац = Абзац + Чтение.Значение;
        ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.КонецЭлемента
            И Чтение.ЛокальноеИмя = "p" Тогда
            Строки.Добавить(Абзац);
            Абзац = "";
        КонецЕсли;
    КонецЦикла;
    Чтение.Закрыть();

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

Функция возвращает текст по абзацам, каждый абзац с новой строки. Ячейки таблиц Word тоже состоят из абзацев, поэтому их содержимое попадёт в результат построчно. Колонтитулы лежат в отдельных файлах header*.xml и footer*.xml, их функция не читает.

Linux, macOS и веб-клиент

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

СредаЧем откроется .docxЧто не работает
LinuxПрограмма по умолчанию через xdg-open, обычно LibreOffice WriterCOM, шаблоны типа Microsoft Word
macOSПрограмма, назначенная в Finder: Word для Mac, Pages, LibreOfficeCOM, шаблоны типа Microsoft Word
Веб-клиентФайл скачивается браузером, дальше его открывает ОСCOM, редактирование с автоматическим возвратом в базу без расширения работы с файлами

Что сделать в Linux, если документ не открывается:

  1. Проверьте, что установлен LibreOffice (пакет libreoffice-writer).
  2. Назначьте его для .docx: xdg-mime default libreoffice-writer.desktop application/vnd.openxmlformats-officedocument.wordprocessingml.document.
  3. Убедитесь командой xdg-open файл.docx, что документ открывается из терминала.

Для веб-клиента браузер попросит установить расширение для работы с файлами. Без него команды «Редактировать» и «Закончить редактирование» превращаются в ручное скачивание и повторную загрузку файла.

💡 Если в компании смешанный парк (Windows и Linux), переводите печатные формы на шаблоны DOCX. Тогда одна и та же форма печатается везде одинаково.

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

Можно ли показать документ Word прямо в форме 1С, без внешней программы?
Нет, такого элемента формы нет. Обходной путь — сохранить документ в HTML или PDF и вывести в поле HTML-документа.
Почему 1С не открывает старый файл .doc, а .docx открывает?
Скорее всего, для .doc не назначена программа или установлен офис без поддержки старого формата. Откройте файл в Word или LibreOffice и пересохраните в .docx.
Как загрузить таблицу из Word в 1С?
Скопируйте таблицу в Excel или LibreOffice Calc и сохраните как .xlsx. Такой файл 1С открывает через Файл → Открыть как табличный документ, дальше его можно загрузить обработкой.
Сколько весит файл Word в базе?
Столько же, сколько на диске: 1С хранит его как есть. Если файлов много, в конфигурациях на БСП можно включить хранение файлов в томах на диске, тогда база не раздувается.
Нужна ли лицензия Office на сервере, если 1С печатает через Word?
Да, Word на сервере — обычная установка Office со своей лицензией. Шаблоны DOCX этого не требуют.