При настройке или использовании синхронизации данных между конфигурациями 1С:Зарплата и управление персоналом и 1С:Бухгалтерия предприятия пользователи и администраторы часто сталкиваются с техническим сбоем. Ошибка с кодом -2147221005(0x800401F3): Недопустимая строка с указанием класса сигнализирует о том, что операционная система Windows не может найти или инициализировать COM-объект, отвечающий за связь между двумя базами. Чаще всего это происходит после обновления платформы 1С или изменения разрядности сервера. Разберем подробно, как диагностировать и устранить эту проблему несколькими способами.
Для начала проанализируем ситуацию. Ошибка возникает в строке кода, где инициализируется новый COM-объект:
COMConnector = Новый COMObject(ОбщегоНазначенияКлиентСервер.ИмяCOMСоединителя); // "V83.COMConnector"
Система пытается обратиться к классу V83.COMConnector, зарегистрированному в реестре Windows, но не находит соответствующую запись или путь к исполняемому файлу библиотеки comcntr.dll. Это происходит по трем основным причинам: библиотека не зарегистрирована вовсе, зарегистрирована версия от старой платформы, или существует конфликт разрядности (32-битная библиотека против 64-битного сервера).
Рассмотрим самый простой и быстрый метод, который помогает в большинстве случаев. Нам необходимо принудительно зарегистрировать библиотеку comcntr.dll, входящую в состав установленной платформы 1С. Выполним следующие шаги:
8.3.18.1201.
regsvr32 "C:\Program Files\1cv8\8.3.18.1201\bin\comcntr.dll"
Если используется 32-битная платформа на 64-битной ОС, путь будет иным:
regsvr32 "C:\Program Files (x86)\1cv8\8.3.18.1201\bin\comcntr.dll"
После успешного выполнения должно появиться окно с сообщением "Успешное выполнение DllRegisterServer". Посмотрим, решило ли это проблему. Если ошибка сохраняется, проанализируем разрядность систем.
Часто бывает, что сервер 1С:Предприятие работает в 64-битном режиме, а внешнее приложение или компонента требует 32-битного окружения (или наоборот). В этом случае простая регистрация в реестре может не сработать. Разберем, как настроить "мостик" через Службы компонентов Windows.
Проделаем следующие действия:
1C_COM_Connector) и установим способ активации "Серверное приложение".USR1CV8).comcntr.dll в папке bin нужной версии платформы.Этот метод заставляет Windows запускать COM-объект в отдельном процессе dllhost.exe, что позволяет обойти ограничения разрядности процессов 1С.
Проанализируем ситуацию, когда библиотека зарегистрирована, но ошибка остается. Проблема может крыться в правах доступа. Пользователь, от имени которого работает сервер 1С, должен иметь права на чтение веток реестра, связанных с V83.COMConnector.
Проверим следующие ветки в regedit:
HKEY_CLASSES_ROOT\V83.COMConnectorHKEY_LOCAL_MACHINE\SOFTWARE\Classes\V83.COMConnectorУбедимся, что у группы "Пользователи" или конкретного пользователя USR1CV8 есть права на чтение этих разделов. Если прав недостаточно, 1С просто "не увидит" зарегистрированный класс.
Как справедливо замечено в обсуждении на форуме, прямое COM-подключение — довольно хрупкая технология, которая "ломается" при каждом обновлении платформы. Рассмотрим более стабильные варианты синхронизации, которые не зависят от регистрации библиотек в операционной системе.
Выясним, какой путь выбрать именно вам. Если вам нужно быстро восстановить работу здесь и сейчас — воспользуйтесь Способом 1 (регистрация через regsvr32). Однако помните, что при следующем обновлении платформы процедуру, скорее всего, придется повторить.
Если же вы стремитесь к стабильности системы и хотите минимизировать количество рутинных операций после каждого обновления, настоятельно рекомендуем рассмотреть вариант с обменом через файлы или веб-сервисы. Это избавит вас от зависимости от системных библиотек Windows и сделает процесс синхронизации прозрачным и отказоустойчивым.
При использовании COM-соединения также всегда проверяйте, чтобы в настройках синхронизации был указан актуальный адрес сервера и имя базы данных, а версия платформы 1С на клиентских местах и на сервере совпадала. Совместная работа администратора и программиста 1С над этими настройками позволит избежать подобных ошибок в будущем.