В процессе штатного обновления типовых конфигураций (например, Бухгалтерия предприятия 3.0, Зарплата и управление персоналом 3.0) системные администраторы и специалисты 1С могут столкнуться с неприятной ситуацией: программа запрашивает учетные данные администратора операционной системы, а при попытке продолжить или отменить операцию выдает сообщение: «Не удалось подключиться к другой программе -2147221005 недопустимая строка с указанием класса». Разберем детально природу этой проблемы, выясним, почему типовое обновление требует COM-подключение, и пошагово рассмотрим методы устранения неполадки.
Для того чтобы быстро устранить сбой, проанализируем, что означает данный код ошибки и почему система обращается к подсистеме COM:
-2147221005 в шестнадцатеричном представлении соответствует системной ошибке Windows 0x800401F3 (CO_E_CLASSSTRING / «Invalid class string»). Это указывает на то, что компонентная модель Windows (COM/OLE) не смогла найти в системном реестре зарегистрированный программный идентификатор (ProgID) класса V83.COMConnector (или V82.COMConnector), либо ссылка ведет на несуществующую/удаленную динамическую библиотеку.comcntr.dll. Если регистрация блокируется системными политиками или некорректными настройками DCOM, процесс завершается критической ошибкой.V8_COMConnector. При обновлении платформы 1С путь к файлу comcntr.dll меняется, старая версия удаляется, а приложение COM+ продолжает ссылаться на несуществующий каталог, полностью блокируя любые системные COM-вызовы 1С.Если в операционной системе ранее вручную настраивался мост COM+, и после обновления платформы начались сбои, проанализируем самый быстрый и действенный способ восстановления работоспособности — очистку устаревшего приложения COM+.
dcomcnfg и нажимаем Enter для открытия оснастки «Службы компонентов».V8_COMConnector, 1CV8_COMConnector или V83COMConnector).После удаления устаревшего компонента платформа вернется к использованию стандартных библиотек, зарегистрированных в реестре Windows.
Если после удаления приложения COM+ ошибка -2147221005 сохраняется, значит, в реестре операционной системы отсутствует валидная регистрация библиотеки внешнего соединения. Выполним правильную регистрацию файла comcntr.dll актуальной версии платформы с учетом разрядности используемого клиента и сервера.
Рассмотрим команды для командной строки (cmd.exe), запущенной от имени Администратора:
Для 64-разрядной платформы 1С:Предприятие:
regsvr32 "C:\Program Files\1cv8\8.3.25.1234\bin\comcntr.dll"
Для 32-разрядной платформы 1С:Предприятие на 64-битной версии Windows:
C:\Windows\SysWOW64\regsvr32.exe "C:\Program Files (x86)\1cv8\8.3.25.1234\bin\comcntr.dll"
Примечание: Обязательно замените номер версии 8.3.25.1234 на актуальный релиз платформы, установленный на вашем компьютере или сервере.
Если для интеграции разнородных систем (например, 64-битный сервер 1С обращается к 32-битной базе или внешней 32-битной DLL) мост COM+ действительно необходим, настроим его корректно по шагам:
dcomcnfg («Службы компонентов»).V83_COMConnector) и устанавливаем переключатель в положение «Серверное приложение» (Server Application).comcntr.dll из каталога bin актуальной версии платформы 1С.Важное правило: При каждом последующем обновлении релиза платформы 1С:Предприятие компонент в приложении COM+ необходимо обязательно обновлять, указывая comcntr.dll из новой директории, либо удалять и создавать заново.
Чтобы убедиться, что внешнее соединение инициализируется без ошибок и строка класса распознается корректно, выполним тестовую проверку создания COM-объекта с помощью внешнего скрипта или обработки:
Попытка
COMСоединитель = Новый COMОбъект("V83.COMConnector");
Сообщить("COM-соединитель 1С:Предприятия успешно инициализирован!");
Исключение
Сообщить("Ошибка инициализации COM-соединителя: " + ОписаниеОшибки(), СтатусСообщения.Важное);
КонецПопытки;
Если инициализация проходит успешно, процесс обновления конфигураций и обмена данными между информационными базами будет выполняться в штатном режиме без запросов паролей администратора.