При интеграции различных информационных баз 1С, например, при подключении из УТ 10.3 в УТ 11, часто используется механизм COM-соединения. Одной из самых неприятных проблем, с которой сталкиваются разработчики и системные администраторы, является ошибка: «Ошибка при вызове конструктора (COMОбъект): Недопустимая строка с указанием класса». Особенно часто это происходит в ситуации, когда под учетной записью администратора всё работает корректно, а у обычного пользователя или на сервере под фоновым заданием возникает сбой.
В этой статье мы подробно разберем причины возникновения данной ошибки и рассмотрим пошаговый алгоритм настройки системы для стабильной работы V83.COMConnector.
Прежде всего, проанализируем ситуацию: почему система «не видит» класс 1С? Ошибка «Недопустимая строка с указанием класса» означает, что операционная система Windows не смогла найти в реестре информацию о программном идентификаторе (ProgID) V83.COMConnector или связанном с ним CLSID. Рассмотрим основные причины:
comcntr.dll не была зарегистрирована в системе с помощью утилиты regsvr32.Рассмотрим пример кода, который обычно инициирует эту ошибку:
// Пример инициализации соединения
V82COMConnector = Новый COMОбъект("V83.COMConnector");
СтрокаПодключения = "Srvr='ServerName';Ref='BaseName';Usr='Login';Pwd='Password';";
Соединение = V82COMConnector.Connect(СтрокаПодключения);
Обратим внимание на важный нюанс, упомянутый в обсуждении: имя переменной (например, V82COMConnector) не влияет на работу, но может запутать при отладке, если вы используете платформу 8.3. Рекомендуется придерживаться соответствия имен и используемых версий.
Проанализируем первый и самый важный этап — регистрацию библиотеки comcntr.dll. Важно помнить, что в 64-битных системах Windows существует две версии утилиты regsvr32. Разберем, какую использовать:
Если вы используете 32-битный клиент или сервер 1С, необходимо регистрировать компоненту так:
C:\Windows\SysWOW64\regsvr32.exe "C:\Program Files (x86)\1cv8\8.3.XX.XXXX\bin\comcntr.dll"
Если вы используете 64-битный сервер 1С, регистрация выполняется через системную папку по умолчанию:
C:\Windows\System32\regsvr32.exe "C:\Program Files\1cv8\8.3.XX.XXXX\bin\comcntr.dll"
Важно: Всегда запускайте командную строку от имени Администратора. Даже если вы вошли в систему под учетной записью администратора, механизмы UAC могут ограничить права процесса регистрации. Как советуют опытные специалисты, иногда полезно сначала выполнить деинсталляцию компоненты с ключом /u, а затем зарегистрировать её заново.
Если простая регистрация не помогла (особенно актуально для серверных ОС), необходимо настроить так называемую «обертку» — приложение COM+. Это позволит компоненте работать в отдельном процессе и иметь собственные настройки безопасности.
Рассмотрим по шагам, как это сделать:
dcomcnfg).1Cv83_COMConnector. Тип активации укажите Серверное приложение.comcntr.dll нужной разрядности.Выясним, какие дополнительные настройки безопасности помогут нам избавиться от ошибки окончательно. В свойствах созданного нами приложения COM+ в Службах компонентов проанализируем следующие вкладки:
Вкладка «Безопасность»:
Права на ветки реестра:
Иногда система блокирует доступ обычного пользователя к описанию класса в реестре. Проверим наличие прав «Чтение» для группы Пользователи (Users) в следующих ветках:
HKEY_CLASSES_ROOT\V83.COMConnectorHKEY_CLASSES_ROOT\CLSID\{D5AB5662-73D3-46C6-835B-7581D4F0A9AB} (ID может варьироваться в зависимости от версии платформы).Проанализируем ситуацию, когда на сервере установлено несколько версий 1С (например, 8.3.18 и 8.3.22). В этом случае регистрация comcntr.dll может «слетать» при автоматическом обновлении или установке новых релизов. Рекомендуется регистрировать компоненту именно от той версии, под которой работает основной экземпляр сервера 1С.
Важный момент по поводу перезапуска: После внесения изменений в настройки COM+ или регистрации библиотеки, перезагружать весь Windows Server необязательно. Однако перезапуск службы «Агент сервера 1С:Предприятия» является крайне желательным, так как служба кэширует доступные COM-классы при старте. Если вы работаете в файловом варианте, обязательно перезапустите само приложение 1С.
Проблема с V83.COMConnector чаще всего кроется не в коде 1С, а в системных настройках прав доступа Windows. Если вы столкнулись с ошибкой «Недопустимая строка с указанием класса», пройдите по нашему чек-листу:
comcntr.dll.regsvr32 от имени администратора.Temp и профили AppData, так как COM-соединение активно использует кэш.Следуя этим шагам, мы обеспечим стабильное соединение между базами и избавимся от ошибок авторизации и доступа.