При обслуживании и обновлении конфигураций «1С:Предприятие 8», таких как «Зарплата и Управление Персоналом» (ЗУП) и «Бухгалтерия предприятия» (БП), технические специалисты часто сталкиваются с внезапным отказом механизмов синхронизации. Типичный сценарий: после планового обновления платформы или конфигураций обмен данными полностью прекращает работу, возвращая ошибку инициализации COM-объекта V83.COMConnector. При этом системные администраторы могут уверять, что библиотека comcntr.dll была успешно зарегистрирована в операционной системе Windows. Давайте подробно разберем, почему возникает эта ошибка, проанализируем внутренние механизмы взаимодействия разрядностей 1С и операционной системы, а также рассмотрим по шагам надежные способы устранения этой неисправности.
Главная причина возникновения ошибки V83.COMConnector после обновления платформы кроется в несовпадении архитектурных разрядностей компонентов системы. Рассмотрим физику процесса взаимодействия серверов. На сервере приложений 1С функционирует 64-разрядный рабочий процесс rphost. Когда запускается синхронизация данных, этот процесс пытается вызвать внешнюю библиотеку comcntr.dll для прямого COM-соединения со второй базой данных.
По законам архитектуры операционных систем Windows, 64-разрядное приложение (в нашем случае процесс сервера 1С rphost.exe) физически не способно загрузить в свое адресное пространство 32-разрядную динамическую библиотеку (DLL) напрямую. Если на сервере была зарегистрирована только 32-битная версия компонента comcntr.dll (из каталога установки Program Files (x86)), то серверный процесс выдаст ошибку отсутствия или невозможности вызова COM-объекта. Аналогичная проблема возникает в обратную сторону, когда 32-разрядный клиент пытается вызвать 64-разрядную библиотеку без использования промежуточных «оберток».
Ниже мы рассмотрим два основных технических решения данной проблемы: полную унификацию разрядности платформы (наиболее стабильный вариант) и настройку специального суррогатного COM+ приложения в Windows (если отказаться от разных разрядностей невозможно).
Это самый простой, надежный и рекомендуемый разработчиками способ. Если сервер 1С работает под управлением 64-разрядной версии, логично использовать аналогичную 64-разрядную библиотеку comcntr.dll.
Выполним процедуру по шагам:
C:\Program Files\1cv8\ (без приставки «x86»).
regsvr32 /u "C:\Program Files (x86)\1cv8\Х.Х.ХХ.ХХХХ\bin\comcntr.dll"
Х.Х.ХХ.ХХХХ — номер предыдущей версии платформы, которая использовалась ранее).
C:\Windows\System32\regsvr32.exe "C:\Program Files\1cv8\8.3.22.1709\bin\comcntr.dll"
regsvr32.exe из папки System32, так как регистрируем нативную 64-битную библиотеку в 64-битной операционной системе.После этого рекомендуется полностью перезапустить службу сервера «1С:Предприятие 8» через консоль управления службами services.msc, чтобы рабочие процессы очистили кэш COM-объектов и инициализировали новую библиотеку.
Если на вашем сервере по каким-либо причинам критически важно оставить совместное использование 32-разрядного клиента и 64-разрядного сервера, либо если прямая регистрация библиотеки не дает результатов из-за специфических настроек безопасности Windows (например, в среде Citrix), необходимо настроить COM+ приложение. Этот метод создает специальный суррогатный процесс dllhost.exe, который служит изолированным мостом-переводчиком между 64-битным сервером 1С и 32-битным COM-коннектором.
Рассмотрим по шагам этот системный процесс:
dcomcnfg и нажмем Enter.1C_COM_Connector_x86. В разделе «Способ активации» обязательно установим переключатель в положение Серверное приложение. Нажмем «Далее».USR1CV8 или системный администратор). Введем имя пользователя и пароль, после чего завершим работу мастера.1C_COM_Connector_x86, найдем внутри него папку Компоненты. Щелкнем по ней правой кнопкой мыши и выберем: Создать -> Компонент.comcntr.dll. В случае использования 32-битной библиотеки путь будет выглядеть так:
C:\Program Files (x86)\1cv8\<ВерсияПлатформы>\bin\comcntr.dll. Завершим создание компонента.1C_COM_Connector_x86 -> Свойства). Перейдем на вкладку Безопасность. Нам необходимо снять флаг «Принудительная проверка доступа для приложений» и установить уровень программных ограничений в положение «Неограниченный». Без этого операционная система Windows может заблокировать попытку обращения процесса 1С к созданному COM-объекту.Этот метод гарантированно решает проблему изоляции процессов разной разрядности, однако требует от системного администратора четкого контроля паролей сервисных учетных записей. Если у пользователя USR1CV8 изменится пароль, обмен данными сразу же остановится до момента обновления пароля в свойствах приложения COM+.
Разберем одну неочевидную ловушку системного администрирования Windows, в которую часто попадают специалисты при регистрации библиотек вручную. В 64-битных версиях Windows существует две разные системные утилиты regsvr32.exe, и их поведение различается:
C:\Windows\SysWOW64\regsvr32.exe.C:\Windows\System32\regsvr32.exe.Если зарегистрировать 32-битную DLL через 64-битную утилиту из папки System32, операционная система выдаст окно об успешном завершении операции, но фактически в реестре будут созданы неверные пути, и COM-объект инициализировать не удастся.
Проанализировав все сложности настройки COM-соединений, разработчики платформы и ведущие специалисты пришли к выводу, что технология COM является морально устаревшей и небезопасной. Она жестко привязывает сервер инфраструктуры к операционной системе Microsoft Windows. При переходе на СУБД PostgreSQL и серверы под управлением Linux использовать COMConnector становится технически невозможно.
Поэтому в современных конфигурациях «1С:Зарплата и Управление Персоналом» и «1С:Бухгалтерия предприятия» предусмотрены гораздо более надежные альтернативные методы обмена данными, о внедрении которых стоит задуматься:
Рассмотренные нами шаги по настройке разрядностей и COM-компонентов позволят вам оперативно восстановить работоспособность синхронизации в классической Windows-инфраструктуре, а переход на современные веб-сервисы поможет навсегда забыть о проблемах с обновлением библиотек платформы.