Почему перестал работать COM-обмен после обновления на 1С 8.3.25 и как это исправить?

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

Введение в проблему обновления платформы

Многие администраторы и программисты 1С сталкиваются с ситуацией, когда штатное обновление технологической платформы приводит к неожиданным последствиям. В частности, переход на релиз 8.3.25 вызвал волну вопросов, связанных с нарушением работы механизмов синхронизации данных (РИБ или универсальный обмен) через прямое подключение (COM-соединение) — решить проблему поможет настройка синхронизации и обмена данными баз 1С.

Рассмотрим типичный сценарий: у нас есть файловые базы (например, "Зарплата и управление персоналом" и "Бухгалтерия"), между которыми настроен обмен. После обновления платформы с 8.3.23 или 8.3.24 на 8.3.25 обмен перестает работать. При этом обычная перерегистрация библиотеки comcntr.dll не помогает, а на других компьютерах со старыми релизами все функционирует корректно.

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

Анализ технической части проблемы: Ошибка платформы 8.3.25

Чтобы понять, как исправить ошибку, давайте разберемся в её природе. Проблема кроется не в настройках самой базы данных, а в том, как новая платформа регистрирует свои компоненты в операционной системе Windows, особенно в 64-разрядных версиях ОС.

Для файлового варианта работы или при запуске клиента 1С мы часто используем 32-разрядное клиентское приложение (даже на 64-битной Windows). Для обмена данными 1С использует механизм COM (Component Object Model), вызывая библиотеку comcntr.dll.

В релизе 8.3.25 была обнаружена ошибка инсталлятора: при регистрации 32-разрядной библиотеки типов в системном реестре путь к ней прописывается в ветку, предназначенную для 64-битных библиотек. Это создает путаницу для операционной системы: когда 32-битное приложение 1С пытается создать COM-объект, система не находит правильного пути к интерфейсу в ожидаемом месте реестра.

Решение 1: Исправление реестра Windows вручную

Это самый действенный метод для восстановления работы COM-соединения на платформе 8.3.25, если вы используете 32-разрядный клиент 1С на 64-разрядной Windows.

Давайте выполним следующие действия:

  1. Откроем редактор реестра. Для этого нажмем комбинацию клавиш Win + R и введем команду regedit.
  2. Нам необходимо найти ветку, отвечающую за библиотеку типов 1С. Путь зависит от разрядности вашей операционной системы.

Для 64-разрядной ОС (наиболее распространенный вариант) нам нужно перейти по следующему пути:

HKEY_CLASSES_ROOT\WOW6432Node\TypeLib\{98AC3B5B-5323-418F-8F07-E32F231D2393}\1.0\0\

Внутри этой ветки вы увидите папку (раздел) с названием win64. В этом и заключается ошибка. Поскольку мы работаем в ветке WOW6432Node (эмуляция 32-битной среды) и используем 32-битную DLL, раздел должен называться win32.

Что нужно сделать:

  1. Найдите подраздел win64 внутри указанного выше пути.
  2. Нажмите на него правой кнопкой мыши и выберите "Переименовать".
  3. Измените имя на win32.

Если у вас 32-разрядная ОС (что сейчас редкость), путь будет таким:

HKEY_CLASSES_ROOT\TypeLib\{98AC3B5B-5323-418F-8F07-E32F231D2393}\1.0\0\

Здесь также нужно проверить наличие папки win64 и при необходимости переименовать её в win32.

После этой манипуляции перезапустите сеанс 1С и попробуйте выполнить проверку подключения в настройках синхронизации. В большинстве случаев ошибка исчезнет.

Решение 2: Правильная регистрация библиотеки comcntr.dll

Иногда проблема усугубляется тем, что библиотека вовсе не зарегистрирована или зарегистрирована старая версия. Рассмотрим, как правильно перерегистрировать компоненту, учитывая особенности 64-битных систем.

Важно помнить: в 64-битной Windows есть две версии утилиты регистрации:

Если вы используете 32-битный клиент 1С, вам необходимо зарегистрировать DLL именно из папки 32-битной платформы (обычно это Program Files (x86)) с помощью утилиты из SysWOW64.

Создадим командный файл или выполним в командной строке (запущенной от имени администратора) следующую команду:


"C:\Windows\SysWOW64\regsvr32.exe" "C:\Program Files (x86)\1cv8\8.3.25.XXXX\bin\comcntr.dll"

Где 8.3.25.XXXX — это точный номер вашего релиза платформы.

Если же вы используете 64-битный сервер 1С, то для серверных вызовов нужно зарегистрировать 64-битную компоненту:


"C:\Windows\System32\regsvr32.exe" "C:\Program Files\1cv8\8.3.25.XXXX\bin\comcntr.dll"

Рекомендуем перед регистрацией новой версии удалить регистрацию старой, добавив ключ /u к команде, например: regsvr32.exe /u "путь_к_старой_dll".

Решение 3: Настройка приложения через Службы компонентов (DCOM)

Если правка реестра не помогла, или если обмен падает с ошибками доступа ("Access denied", "Ошибка создания объекта"), стоит проверить настройки DCOM. Это особенно актуально, если обмен запускается в фоновом режиме или по расписанию — для таких сценариев есть автоматический запуск обмена 1С через COM.

Давайте настроим приложение COM+ вручную:

  1. Нажмите Win + R, введите dcomcnfg и нажмите Enter.
  2. В открывшемся окне перейдите по дереву: Службы компонентов -> Компьютеры -> Мой компьютер -> Приложения COM+.
  3. Создайте новое приложение: Правая кнопка мыши -> Создать -> Приложение.
  4. В мастере нажмите "Далее", выберите "Создать пустое приложение".
  5. Введите имя, например V83_COM_Connector, и выберите "Серверное приложение".
  6. На вкладке "Учетная запись" выберите "Указанный пользователь" и введите данные администратора (логин и пароль), под которым гарантированно работает 1С. Это критически важный момент!
  7. Завершите создание приложения.
  8. Раскройте ветку созданного приложения, перейдите в "Компоненты".
  9. Нажмите правой кнопкой -> Создать -> Компонент.
  10. Выберите "Установка новых компонентов", найдите файл comcntr.dll в папке bin нужной версии платформы (8.3.25).
  11. После добавления компонента, перейдите в его свойства, вкладка "Безопасность", и убедитесь, что роли настроены корректно (обычно достаточно настроек по умолчанию, так как мы задали пользователя на уровне приложения).

Эта процедура "изолирует" процесс COM-соединения и запускает его от имени конкретного пользователя, что решает массу проблем с правами доступа к файловой системе и реестру.

Альтернативные подходы: отказ от COM

Если борьба с COM-соединением отнимает слишком много времени, стоит рассмотреть альтернативные варианты обмена, которые предлагает платформа 1С. Иногда использование внешних инструментов является лучшим решением. Например, для быстрой миграции данных между базами подойдет простой менеджер данных (simple data manager), который позволяет удобно переносить информацию без сложной настройки COM.

Переход на файловый обмен

Самый простой способ восстановить работу "здесь и сейчас" — перенастроить синхронизацию через каталог.
В настройках синхронизации выберите вариант "Другие каналы связи" -> "Каталог на диске".

Преимущества:

Этот вариант идеален для файловых баз, расположенных в локальной сети. Чтобы расширить возможности штатного механизма, можно использовать инструмент Выгрузка и загрузка данных XML с дополнительными опциями, позволяющий делать отборы по подсистемам и независимым регистрам — для этого подойдёт универсальная выгрузка и загрузка XML для 1С. Если же конфигурации источника и приемника отличаются, выручит адаптивная выгрузка и загрузка данных XML, работающая даже с неидентичными структурами метаданных. В случаях, когда передача файлов осуществляется через незащищенные каналы, стоит обратить внимание на универсальную выгрузку с возможностью шифрования.

Использование Web-сервисов и гибридные методы

Более современный и надежный подход, особенно если базы разнесены территориально или используются серверные версии.

Для этого потребуется:

  1. Установить веб-сервер (IIS или Apache).
  2. Опубликовать базу-источник и базу-приемник на веб-сервере.
  3. В настройках синхронизации выбрать "Подключение к другой программе через Интернет".

Веб-сервисы работают быстрее COM в условиях нестабильной сети. В качестве альтернативы можно рассмотреть универсальный перенос данных между разными конфигурациями, использующий технологию COM+HTTP и позволяющий обойти многие ограничения стандартных протоколов.

Заключение

Проблема с COM-обменом в 25-м релизе платформы 1С — это известная ошибка регистрации типов. Мы разобрали основной способ лечения через правку реестра (замена win64 на win32 в WOW6432Node). Если вы столкнулись с этой ситуацией, не спешите делать "даунгрейд" платформы. Попробуйте применить описанные исправления или временно переключите обмен на файловый режим с использованием специализированных обработок.

← На главную