Почему после перехода на 64-битный клиент 1С перестал работать MS Word и как это исправить?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При переходе на 64-разрядный клиент платформы 1С:Предприятие 8.3 пользователи и разработчики часто сталкиваются с ситуацией, когда перестают работать привычные печатные формы, использующие макеты ActiveDocument или COM-автоматизацию Microsoft Word.

При выполнении кода получения объекта макета происходит аварийное завершение с сообщением об ошибке:


MSWord = Договор.Получить();
// По причине: Не удалось создать объект. Возможно, отсутствует соответствующее приложение.

Разберем подробно причины возникновения этой проблемы и проанализируем доступные варианты решения.

Причина возникновения проблемы

Основная причина кроется в несоответствии разрядностей процессов. 64-разрядный клиент 1С работает в 64-битном адресном пространстве операционной системы. Если на компьютере пользователя установлен 32-разрядный пакет Microsoft Office, то его In-Process COM-компоненты зарегистрированы в 32-битной ветке реестра Windows (WOW6432Node).

При обращении к макету типа ActiveDocument платформа 1С пытается инициализировать OLE-объект непосредственно в контексте собственного 64-битного процесса. Поскольку 64-разрядный процесс не может напрямую загрузить 32-разрядную библиотеку DLL или вызвать 32-разрядный COM-сервер без специальной прослойки, операционная система блокирует такой вызов и возвращает ошибку создания объекта.

Вариант 1. Установка 64-разрядного Microsoft Office

Самый простой и стандартный способ устранения несовместимости — установка 64-битной версии Microsoft Office на рабочие места пользователей.

  1. Удалим текущую 32-разрядную версию MS Office.
  2. Установим дистрибутив MS Office той же или более новой версии с разрядностью 64 бит.
  3. Проверим регистрацию COM-компонентов. После установки 64-битный MS Office автоматической зарегистрирует необходимые компоненты в 64-битной ветке реестра.

После этого 64-разрядный клиент 1С сможет напрямую обращаться к объектам Word.Application и макетам ActiveDocument без дополнительных манипуляций.

Вариант 2. Настройка суррогата COM+ (dllhost.exe) в Windows

Если изменить разрядность пакета Microsoft Office не представляется возможным, на операционной системе Windows можно настроить запускаемый суррогатный процесс dllhost.exe через DCOM/COM+.

Проанализируем шаги настройки межпроцессного взаимодействия (RPC/DCOM):

  1. Откроем оснастку «Службы компонентов» (выполнив команду comexp.msc в консоли или окне «Выполнить»).
  2. Перейдем в ветку «Компьютеры» -> «Мой компьютер» -> «Приложения COM+».
  3. Создадим новое приложение COM+ (выбрав тип «Серверное приложение»).
  4. Добавим в созданное приложение компонент Microsoft Word.
  5. Настроим учетную запись для запуска приложения COM+, указав пользователя с необходимыми правами.

В результате такой настройки 32-разрядный Word будет запускаться в изолированном процессе-контейнере dllhost.exe, а 64-битный клиент 1С сможет передавать ему команды через вызовы DCOM/RPC.

Вариант 3. Использование 32-битного клиента 1С или установке обеих версий

Если требования к оперативной памяти на клиентском рабочем месте не критичны, можно вернуться на 32-разрядный клиент 1С. Однако стоит учесть важный момент: при работе со сложными типовыми конфигурациями (например, 1С:Бухгалтерия 8) 32-битный клиент может испытывать нехватку адресации оперативной памяти при тяжелых операциях обновления или формирования объемных отчетов.

Компромиссным решением является параллельная установка обеих разрядностей платформы:

  1. Оставим установленными обе версии клиента 1С — 32-битную и 64-битную.
  2. Для повседневной работы со специфическими печатными формами Word или торговым оборудованием запускаем 32-битный клиент.
  3. Для выполнения ресурсоемких задач (например, обновления базы) используем 64-битный клиент.

Вариант 4. Альтернативный подход: Формирование DOCX без COM-объектов

Посмотрим на более современный подход, который полностью избавляет от зависимости от разрядности клиента, установленного MS Office и даже операционной системы (подходит для Linux и веб-клиента).

Документ формата .docx представляет собой обычный ZIP-архив с набором XML-файлов. Сформировать документ можно средствами самой платформы 1С:

  1. Сохраним шаблон `.docx` в конфигурации как двоичные данные.
  2. Распакуем файл во временную папку с помощью объекта ЧтениеZipФайла.
  3. Прочитаем основной файл содержимого word/document.xml, заменим в нем заготовленные метки-теги на нужные значения.
  4. Упакуем каталог обратно в `.docx` с помощью объекта ЗаписьZipФайла.

Данный вариант не требует использования COM-автоматизации, не зависит от разрядности 1С и работает на любых платформах без необходимости установленного пакета MS Office.

← На главную