Документ Word и 1С 8.3: просмотр, печать по шаблону и чтение кодом
Содержание
Встроенного просмотрщика 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С делает три вещи:
- Выгружает двоичные данные во временный файл на компьютере пользователя.
- Передаёт путь операционной системе.
- Система запускает программу, назначенную для
.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:
- Сформируйте печатную форму или отчёт.
- Нажмите кнопку сохранения на панели формы (значок дискеты) или
Ctrl+S. - В поле типа файла выберите документ Word 2007 (
.docx). - Укажите папку и сохраните.
- Откройте файл в 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С выгрузит копию во временную папку и запустит Word. Изменения в этой копии в базу не попадут: вы правите временный файл, а не тот, что хранится в 1С.
Редактирование с возвратом в базу
Чтобы правки сохранились, файл нужно взять на редактирование:
- Выделите файл и нажмите «Редактировать». Файл занимается за вами, у других он становится доступен только для чтения.
- Внесите правки в Word и сохраните документ (
Ctrl+S), закройте Word. - Вернитесь в 1С и выполните «Закончить редактирование». Система предложит записать новую версию.
Если забыть третий шаг, файл так и останется занятым, а правки лежат только на вашем диске. Другой пользователь увидит, что документ занят, и не сможет его изменить.
Если вы закрыли 1С, не закончив редактирование, не нажимайте «Освободить»: эта команда снимает блокировку без записи изменений. Сначала откройте 1С на том же компьютере и выполните «Закончить редактирование» — локальная копия будет взята из рабочего каталога.
Рабочий каталог
Файлы для редактирования 1С складывает в рабочий каталог пользователя. Путь и предельный размер каталога задаются в персональных настройках работы с файлами. Если каталог переполнен или находится на недоступном диске, файлы перестают открываться. Проверьте путь и при необходимости очистите каталог из тех же настроек.
Шаблоны Word для печати: где менять и как настроить
В БП 3.0 и других конфигурациях на БСП шаблоны лежат в разделе Администрирование → Печатные формы, отчеты и обработки → Макеты печатных форм.
Порядок правки шаблона:
- Найдите макет в списке. Тип шаблона видно в колонке типа или по значку.
- Нажмите «Изменить». Шаблон откроется в Word (или в том, что назначено для
.docx). - Поправьте текст. Поля для подстановки не удаляйте и не переименовывайте.
- Сохраните файл и закройте редактор.
- В 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 в таких условиях часто не стартует или виснет. Что помогает:
- Создайте пустые папки
C:\Windows\System32\config\systemprofile\DesktopиC:\Windows\SysWOW64\config\systemprofile\Desktop. Без них Word при запуске из службы нередко не открывает документы. - Один раз войдите на сервер под учётной записью службы 1С и запустите Word вручную: закройте окна первого запуска и активации.
- В
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 Writer | COM, шаблоны типа Microsoft Word |
| macOS | Программа, назначенная в Finder: Word для Mac, Pages, LibreOffice | COM, шаблоны типа Microsoft Word |
| Веб-клиент | Файл скачивается браузером, дальше его открывает ОС | COM, редактирование с автоматическим возвратом в базу без расширения работы с файлами |
Что сделать в Linux, если документ не открывается:
- Проверьте, что установлен LibreOffice (пакет
libreoffice-writer). - Назначьте его для
.docx:xdg-mime default libreoffice-writer.desktop application/vnd.openxmlformats-officedocument.wordprocessingml.document. - Убедитесь командой
xdg-open файл.docx, что документ открывается из терминала.
Для веб-клиента браузер попросит установить расширение для работы с файлами. Без него команды «Редактировать» и «Закончить редактирование» превращаются в ручное скачивание и повторную загрузку файла.
💡 Если в компании смешанный парк (Windows и Linux), переводите печатные формы на шаблоны DOCX. Тогда одна и та же форма печатается везде одинаково.
Частые вопросы
Можно ли показать документ Word прямо в форме 1С, без внешней программы?
Почему 1С не открывает старый файл .doc, а .docx открывает?
Как загрузить таблицу из Word в 1С?
Файл → Открыть как табличный документ, дальше его можно загрузить обработкой.