Как исправить ошибку «-2147221005 недопустимая строка с указанием класса» и постоянный запрос пароля администратора при обновлении 1С?

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

В процессе штатного обновления типовых конфигураций (например, Бухгалтерия предприятия 3.0, Зарплата и управление персоналом 3.0) системные администраторы и специалисты 1С могут столкнуться с неприятной ситуацией: программа запрашивает учетные данные администратора операционной системы, а при попытке продолжить или отменить операцию выдает сообщение: «Не удалось подключиться к другой программе -2147221005 недопустимая строка с указанием класса». Разберем детально природу этой проблемы, выясним, почему типовое обновление требует COM-подключение, и пошагово рассмотрим методы устранения неполадки.

Анализ причин возникновения ошибки

Для того чтобы быстро устранить сбой, проанализируем, что означает данный код ошибки и почему система обращается к подсистеме COM:

  1. Расшифровка кода ошибки: Значение -2147221005 в шестнадцатеричном представлении соответствует системной ошибке Windows 0x800401F3 (CO_E_CLASSSTRING / «Invalid class string»). Это указывает на то, что компонентная модель Windows (COM/OLE) не смогла найти в системном реестре зарегистрированный программный идентификатор (ProgID) класса V83.COMConnector (или V82.COMConnector), либо ссылка ведет на несуществующую/удаленную динамическую библиотеку.
  2. Механизм обновления и синхронизации: При переходе с предыдущих редакций (например, с редакции 2.0 на 3.0) или при синхронизации данных типовые механизмы Библиотеки стандартных подсистем (БСП) пытаются инициировать прямое внешнее подключение к информационной базе через COM-объект.
  3. Запрос прав администратора: Когда вызов COM-объекта завершается неудачей из-за отсутствия нужной записи в реестре, подсистема 1С предполагает, что компонент еще не зарегистрирован в операционной системе, и запрашивает повышенные привилегии администратора для выполнения автоматической регистрации comcntr.dll. Если регистрация блокируется системными политиками или некорректными настройками DCOM, процесс завершается критической ошибкой.
  4. Конфликт ручных настроек в COM+: Часто для организации взаимодействия между 32-битными и 64-битными процессами администраторы вручную создают приложение в оснастке «Службы компонентов» (Component Services) с именем V8_COMConnector. При обновлении платформы 1С путь к файлу comcntr.dll меняется, старая версия удаляется, а приложение COM+ продолжает ссылаться на несуществующий каталог, полностью блокируя любые системные COM-вызовы 1С.

Способ 1. Удаление некорректного компонента из «Служб компонентов»

Если в операционной системе ранее вручную настраивался мост COM+, и после обновления платформы начались сбои, проанализируем самый быстрый и действенный способ восстановления работоспособности — очистку устаревшего приложения COM+.

  1. Нажимаем комбинацию клавиш Win + R, вводим команду dcomcnfg и нажимаем Enter для открытия оснастки «Службы компонентов».
  2. В дереве слева переходим по пути: «Службы компонентов» → «Компьютеры» → «Мой компьютер» → «Приложения COM+».
  3. Находим среди приложений вручную созданный компонент (часто он называется V8_COMConnector, 1CV8_COMConnector или V83COMConnector).
  4. Нажимаем по нему правой кнопкой мыши и выбираем пункт «Удалить».
  5. Подтверждаем удаление и перезапускаем службу «Агент сервера 1С:Предприятия» (если работа ведется в клиент-серверном режиме) либо перезапускаем сеанс 1С.

После удаления устаревшего компонента платформа вернется к использованию стандартных библиотек, зарегистрированных в реестре Windows.

Способ 2. Корректная перерегистрация comcntr.dll с учетом разрядности

Если после удаления приложения 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 на актуальный релиз платформы, установленный на вашем компьютере или сервере.

Способ 3. Правильная настройка 64-битного моста COM+ (если соединение 32/64 бит необходимо)

Если для интеграции разнородных систем (например, 64-битный сервер 1С обращается к 32-битной базе или внешней 32-битной DLL) мост COM+ действительно необходим, настроим его корректно по шагам:

  1. Запускаем оснастку dcomcnfg («Службы компонентов»).
  2. Раскрываем узел «Приложения COM+», нажимаем правой кнопкой мыши и выбираем «Создать» → «Приложение».
  3. В мастере установки нажимаем «Далее», выбираем «Установить новое приложение», вводим имя (например, V83_COMConnector) и устанавливаем переключатель в положение «Серверное приложение» (Server Application).
  4. На этапе «Удостоверение приложения» указываем пользователя Windows, под которым будет работать процесс (рекомендуется указать локального администратора или системную сервисную учетную запись 1С с постоянным паролем).
  5. После создания приложения раскрываем его ветку, нажимаем правой кнопкой мыши по папке «Компоненты» → «Создать» → «Компонент».
  6. Выбираем «Установка новых компонентов» и указываем путь к файлу comcntr.dll из каталога bin актуальной версии платформы 1С.
  7. Открываем свойства созданного компонента, переходим на вкладку «Безопасность» и проверяем, чтобы у пользователей, запускающих 1С, были права на обращение к данному объекту.

Важное правило: При каждом последующем обновлении релиза платформы 1С:Предприятие компонент в приложении COM+ необходимо обязательно обновлять, указывая comcntr.dll из новой директории, либо удалять и создавать заново.

Способ 4. Проверка подключения через встроенный язык 1С

Чтобы убедиться, что внешнее соединение инициализируется без ошибок и строка класса распознается корректно, выполним тестовую проверку создания COM-объекта с помощью внешнего скрипта или обработки:


Попытка
    COMСоединитель = Новый COMОбъект("V83.COMConnector");
    Сообщить("COM-соединитель 1С:Предприятия успешно инициализирован!");
Исключение
    Сообщить("Ошибка инициализации COM-соединителя: " + ОписаниеОшибки(), СтатусСообщения.Важное);
КонецПопытки;

Если инициализация проходит успешно, процесс обновления конфигураций и обмена данными между информационными базами будет выполняться в штатном режиме без запросов паролей администратора.

← На главную