На последних версиях платформы 8.3.24.1586, 8.3.23.2236, 8.3.24.1667 у себя в организации была замечена проблема с установкой COM соединения. Регистрируешь компоненту comcntr.dll
А всё равно получаешь ошибку
Не удалось подключиться к другой программе: -2147221164(0x80040154): Класс не зарегистрирован
Статья будет короткая и только по факту, что реально помогло.
Все советуют чистить реестр. Для чистки открываем реестр и ищем строку V83.COMConnector и удаляем прям все ветки, которые с этим связаны, но к сожалению это не дало результатов.
На скрине покажу как это делается, это полезно. Удаляем прям ветку, отмеченную красным
Также не дало результатов и очистка серверного кеша.
Так же пробовали и руками создавать службу, но не первый раз слышу, что это крайне временное решение, а вернее костыль, который будет напоминать о себе очень часто.
Что реально помогло, помогает запустить службу агента сервера под системной учетной записью! Запускаешь и COM начинает работать, но это не безопасно.
В файлах предложена обработка для проверки COM Соединения. Она показывает что после регистрации библиотеки мы находимся cразу на сервере, и начинаем проверять COM, обработку прилагаю. А 1с говорит, что на клиенте СOM есть, а на сервере его нет.
Для тестирования достаточно просто запустить обработку, поставить галочки Клиент и Сервер и нажимать выполнить.
Помогает только удаление пользователя USR1CV8 и переустановка платформы с созданием нового пользователя USR1CV8. Несмотря, что внешне права этого пользователя никак не отличаются от прав старого USR1CV8 Com вдруг магическим образом начинает работать.
Если есть не равнодушные люди, столкнувшиеся с проблемой и желающие разобраться на 100%, чем же отличаются эти пользователи USR1CV8, то пишите комментарии. Это уже не первая статья, где люди указывают мне более правильное решение. Но напишу свое наблюдение, что даже если дать USR1CV8 полные права, то всё равно проблема остается и COM не подключается.
Для тестирования достаточно в обработке переключать с клиента на сервер
Далее немного текста для проверки 1с:
Если Не Объект.ПроизвольноеПриложение Тогда
Попытка
КОМ = Новый COMОбъект(Объект.ВерсияКоннектора);
Исключение
Сообщить("Не удалось создать коннектор на сервере по причине:
|" + ОписаниеОшибки());
Возврат;
КонецПопытки;
Попытка
КОМ.Connect(Объект.СтрокаПодключения);
Исключение
Сообщить("Не удалось подключиться на сервере по причине:
|" + ОписаниеОшибки());
Возврат;
КонецПопытки;
Иначе
Попытка
КОМ = Новый COMОбъект(СокрЛП(Объект.ИмяПриложения));
Исключение
Сообщить("Не удалось создать коннектор на сервере по причине:
|" + ОписаниеОшибки());
Возврат;
КонецПопытки;
КонецЕсли;
Сообщить("Соединение установлено!");
Проверено на следующих конфигурациях и релизах:
- 1С:Управление холдингом 1.3, релизы 1.0.9.32