Сабж.
В очередной раз, при обновлении платформы налетел на расхождение версий комконнектора на сервере и локально.
Проблема в том, что непонятно где хранится уже зареганая в винде длл. Т.е. я сейчас хочу элементарно разрегать её и получить сообщение в 1С класс не зарегистрирован. Чтобу убедиться, что старой длл нет.
Вот только это не удаётся.
Самого файла физически нет на компе. Я срыл все платформы и поставил новую. - Пишет, что у меня старая версия.
Сделал поиск файла comcntr.dll - его физически нигде нет, кроме нового. Сделал поиск по реестру - старого там нет, никаких ссылок на него либо какой-либо безликий нет. Только на новый.
Кэш 1С снес.
Не помогло - при попытке соединиться пишет, что у меня старая версия:
"Произошла исключительная ситуация (V83.COMConnector.1): Версия компоненты 'comcntr' (8.3.20.1674) отличается от версии корневого модуля 'core83' (8.3.20.2184)"
Где?! Где винда/1с хранят этот 1674 и записи о нём?
(1)База где вертится на сервере?Там и коннектор должен быть.Библиотека располагается все в платформе клиента на той машине, где вертится база. C:\Program Files (x86)\1cv8\8.3.20.2180\bin\comcntr.dll
После обновы платформы библиотеку лучше всего зарегистрировать в регистре через команду regsvr32 под админом, а потом уже заменить в компаненте службы компанентов. Опять же на той же машине, где вертится база.
(2.) Не смотрел. Смотрю сейчас, спасибо.
Пока не удаётся найти. В оснастке нет поиска, а глазами ничего похожего на comcntr или comconnector я пока не увидел. Большрй раздел.
(4) база на сервере.
стандартные решения с regsvr23 и wow64 под админом уже пробовались. Сервер упорно видит старую библиотеку, и вот на удалении старой я и начал удивляться. Ожидал, что либо не даст удалить старый файл, либо разрегает. Однако файл стёрся, а инфа о нём, а возможно и какая-то скрытая его копия нет. Его даже не разрегаешь сейчас regsvr32 /u C:\Program Files (x86)\1cv8\8.3.20.1674\bin\comcntr.dll за физическим отсутствием.
(7) Эта ветка обычно не нужна - достаточно просто регистрировать dll. У меня на сервере ее нет - стандартные обращения с dll работают. Поддержка так же писала что не нужно заморачиваться с созданием COM+
Скачайте утилиту regdllview - довольно удобно смотреть что установлено и откуда...
https://www.nirsoft.net/utils/registered_dll_view.html
(8) я понимаю. Соединение я осуществляю уже в 1С обработкой. И она(1С) утверждает, что версия компоненты старая.
(9) Ветки нет ни на локальной ни на сервере. запускаю с админскими правами.
(11) Я думаю, это взамосвязанные события. Если я смогу разрегать старую, то смогу зарегать и новую. На текущий момент, несмотря на успешные сообщения о регистрации новой, видится старая. Проблема, предположительно, как раз в том, под каким пользователем и с какими правами регается новая.
При использовании в коде конфигурации COM-объектов, входящих в состав платформы 1С:Предприятия и являющихся внутрипроцессными COM-серверами, например, V83.COMConnector, могут диагностироваться ошибки Версия компоненты 'компонента' (версия) отличается от версии корневого модуля 'core83' (версия) или -2147221164(0x80040154): Класс не зарегистрирован. При этом клиентское приложение может либо продолжить работу, либо аварийно завершить работу в зависимости от ситуации.
16.
solodovnikov.84
1118.01.23 13:06 Сейчас в теме
(15)И что это как то помогло пере зарегистрировать Коннектор? Вы же его вроде не нашли.
А ошибка которая тут приведена, она обычно записывается в логах винды. В принципе с регистрацией она ни как не связана.Просто могут быть вылеты.
Тогда посоветую выполнить переустановку Сервера 1С и сделать это из поставки Сервера, запустив от имени Администратора и отметить в компонентах Дополнительно - COM-соединение
Я так тоже ставил и COM сама новая зарегистрировалась, не пришлось батником пользоваться.
Вопрос закрыт. Перезапуск сервера решил. Обращение к коннектору выполнялось &на сервере в 64разрядном режиме, а там до перезапуска оставался в памяти старый ком коннектор.
ветка в службе компонентов так и не появилась, кстати, но всё работает.
Много лет пользуюсь данной инструкцией при регистрации на сервере или клиенте и проблем не было никогда. Сервер никогда не перезапускал.
//Администрирование - Службы компонентов – Компьютеры – Мой компьютер – Приложения COM+ - Создать приложение – Создать новое приложение –
//вводим имя «V83.COMConnector»(переключатель «Серверное приложение») – Указанный пользователь (Администратор)
//2. В появившейся ветке V83COMConnector – подветка Компоненты – создание нового компонента – Установка новых компонентов - C:\Program Files\1cv8\8.3.15.1830\bin\comcntr.dll
//3. Правой кнопкой по ветке V83COMConnector – Свойства – Безопасность – Снять галку «Принудительная проверка доступа для приложений»
//- Поставил галку «Применить политику программных ограничений» - Уровень ограничений «Неограниченный»
она пишет какая версия, ее надо снести, затем запустить от имени админа по правой кнопке файл cmd содержание вот только свою версию и путь подставьте regsvr32 "C:\Program Files\1cv8\8.3.19.1726\bin\comcntr.dll"
Случай из практики.
Сервер с виндой 64 бит, платформа 64 бит, клиент 64 бит.
Новый COMОбъект("V83.COMConnector") &НаКлиенте работало, на &НаСервереБезКонтекста выдавало Invalid class string
До тех пор пока 64-битная DLL не была зарегана 32-битным регистратором reg32=%systemroot%\SysWoW64\regsvr32.exe
То есть вот так вот:
set version=8.3.20.2184
set x64=C:\Program Files\1cv8\%version%\bin\comcntr.dll
set x32=C:\Program Files\1cv8\%version%\bin\comcntr.dll
set reg64=%systemroot%\System32\regsvr32.exe
set reg32=%systemroot%\SysWoW64\regsvr32.exe
%reg64% /i /s "%x64%"
%reg64% /u /s "%x32%"
%reg64% /i /s "%x64%"
%reg32% /u /s "%x64%"
%reg64% /i /s "%x64%"
%reg32% /u /s "%x32%"
%reg64% /i "%x64%"