Есть сервер, на нем MS SQL и много разных баз. В частности есть УТ 10 (обычные формы) и кучка БП 3 (управляемые формы). Также есть много обработок, которые из одной базы в другую лезут через V83.COMConnector.
Поставили новую платформу 8.3.24.1667.
Зарегистрировали dll - без ошибок, успешно, написали Винды.
Картина теперь такая:
в УТ 10.3
Новый COMОбъект("V83.COMConnector")
работает без проблем, все создается, коннектится, красота.
В БП 3
&НаСервере
Новый COMОбъект("V83.COMConnector")
валится с ошибкой "Класс не зарегистрирован".
Сервер физически один, на нем все базы и пользователи по RDP.
Кто-нибудь может объяснить, что надо сделать, чтобы это все работало. Или хотя бы что сказать админу. С прошлой версией платформы (23 какая-то) все работало без проблем везде.
(2) Да! сервер 64х
Клиентские я запускаю разные, и 32 и 64, они оба есть. И в обоих ошибка.
Через COM+ - это во всех "управляемых" конфигурациях надо будет новый COM объект вместо штатного прописывать?
Как же оно там же раньше работало...
(3) Нет это обертка которая позволяет вызывать из 32-х 64-х dll или наоборот. Если 64-х битный сервер оставьте 64-х битного клиента, ye и нужно зарегить 64-х битную dll.
(5) посмотрите в реестре (на сервере) ссылки на путь на comcntr.dll - при обновлении платформ бывает рассогласование библиотек и их типов - ссылки на разные редакции получаются. В этом случае спасает ручная корректировка пути в реестре.
(5) ИМХО отвалившийся СОМ, после обновления платформы, это прям БАЗА. Только из-за этого на одной из работ все переписывал под http сервисы. Самый железный способ - это создавать в ручную, через службы компонентов.
(4)
(7)
вопрос остается. COM+ у меня не делается с ошибкой "Произошла ошибка 80070005". Это недостаточно прав, но поскольку права админские полные и все запускается "от имени администратора", то понять это не получается. Что ей нужно??
Провел еще исследования - на БП процедура &НаКлиенте создает этот объект V83.ComConnector без проблем, &НаСервере - нет. Что бы еще сделать?...
(9) спасибо. Поставил обработку ИР, серьезная вещь.
Но эффект все тот же. Создать/удалить - класс не зарегистрирован. Зарегистрировать - все успешно. Все компоненты и СОМ+ она видит, проверить работу объектов -
"Ошибка при вызове метода контекста (Connect): Произошла исключительная ситуация (V83.COMConnector.1): Идентификация пользователя не выполнена
Неправильное имя или пароль пользователя"
=== тут вот непонятно, запуск всего этого "от имени администратора", какой пароль какого пользователя?
Как итог по-прежнему на клиенте работает, на сервере нет.
(8) Если смотреть инструкцию выше, там есть пункт где определяется роль CreatorOwner и к ней добавляются пользователи. У вас какой пользователь добавлен?
Можно попробовать помимо существующей учетной записи, добавил туда System и учетную запись под которой работает сервер 1С.
Зарегистрировали dll - без ошибок, успешно, написали Винды.
В УТ 10 все выполняется на клиенте, и на клиенте dll зарегистрирована и работает.
В БП 3 как видно код выполняется на сервере, и на сервере dll не зарегистрирована.
Нужно выполнить регистрацию dll на сервере. Причем из каталога "Programm Files\....", в который установлен 64-бит сервер.
Все проше, сам вчера мучался и нашел простой способ.
Создаем bat файл в C:\Program Files\1cv8\8.3._\bin, ниже текст:
@set CS=CScript //nologo %TMP%\%~n0.vbs /REALTIME^>nul^ & del /Q %TMP%\%~n0.vbs&CLS
@ECHO off
title %~n0
SET CX=CLS^&EXIT
SET BS=^>%TMP%\%~n0.vbs
SET G=GOTO
SET H=shell&fsutil>NUL
IF %ERRORLEVEL% EQU 0 (
GOTO 2
) ELSE (
if not "%minimized%"=="" GOTO 1
)
SET minimized=true & start /min cmd /C "%~dpnx0"&%CX%
:1
ECHO SET %H%=CreateObject("%H%.Application"):%H%.%H%Execute "%~dpnx0",,"%CD%", "runas", 1 : SET %H%=nothing%BS%&%CS%&%CX%
:2
ECHO %~dpnx0 & regsvr32.exe /i:user "%~dp0comcntr.dll"&%CX%
Сохраняем. Запускаем от администратора. Перезапускаем агент сервера 1с и радуемся.
Мне такие батники не помогали. Спасала только ручная правка путей в реестре. В реестре при обновлении образовались рудименты, которые стандартные регистрации (разрегистрации) не убирали.
Вот фрагмент переписки с поддержкой 1С:
Здравствуйте,
Удаляйте все следы (ветки 98AC3B5B-5323-418F-8F07-E32F231D2393). В какой-то момент у вас получилось конфликтная ситуация.
Вы можете отслеживать статус своего обращения перейдя по ссылке HL-852321
С уважением, отдел тех. поддержки фирмы "1С"
From :
Sent : 13.07.2024 20:42:45
To : '1С Линия консультации'
Subject : Re: (#HL-852321) RE[7]: Проблемы регистрации comcntr.dll при переходе на новую версию платформы
Здравствуйте!
Не работает и этот способ - выкладываю список веток реестра ПОСЛЕ применения Unregister Selected Files и следом удаления платформ программ 1С
Обращаю внимание что в этих ветках вообще собрались сведения от разных старых версиях - на каком-то этапе установщики 1С их так запомнили. Как выкручиваться - новая регистрация программы не изменяет эти ветки...
11.07.2024 11:32, 1С Линия консультации пишет:
>
> Здравствуйте,
>
> >Какие команды использовать для этого
>
> Unregister Selected Files
>
> по всем местам, содержащим comcntr.dll (ветки реестра чистятся при этом)
>
>
> После данной операции в реестре не будет "старых" записей.
>
>
> >Можете уточнить сколько и каких должно быть веток реестра при нормальной регистрации?
>
> К сожалению, не могу дать однозначной информации.
>
> Вы можете отслеживать статус своего обращения перейдя по ссылке HL-852321
>
>
> С уважением, отдел тех. поддержки фирмы "1С"
>
>
> From :
> Sent : 11.07.2024 10:04:30
> To : '1С Линия консультации'
> Subject : Re: (#HL-852321) RE[5]: Проблемы регистрации comcntr.dll при переходе на новую версию платформы
>
> Здравствуйте!
> RegDllView я использую давно и контролирую процесс регистрации
>
> Поясните свою позицию - Вы говорите что разрегистрацию нужно делать используя данную утилиту (вместо regsvr32 с ключом /u)?
> Какие команды использовать для этого (скрин выпадающего меню прилагаю):
>
> - Unregister Selected Files
> - Delete All Entries For Selected Files
> Дело в том, что regsvr32 с ключом /u убирает из списка Dll данной утилиты comcntr.dll независимо от того какая Dll (из какой платформы) зарегистрирована. Т.е. выполняю regsvr32 с ключом /u - comcntr.dll из списка в RegDllView исчез, а часть веток, содержащих ссылки на comcntr.dll в реестре (список прилагал ранее в таблице Xls) осталась.
> Можете уточнить сколько и каких должно быть веток реестра при нормальной регистрации?
>
> 10.07.2024 15:29, 1С Линия консультации пишет:
>>
>> Здравствуйте,
>>
>> При возникновении подобных проблем рекомендую :
>>
>> 1. остановить службу, закрыть все клиентские приложения
>>
>> 2. запустить RegDllView от администратора, найти все записи comcntr.dll и выполнить отмену их регистрации
>>
>> 3. запустить командую строку от администратора, выполнить регистрацию regsv32 comcntr.dll
>>
>>
В итоге проблема решилась, но я даже не могу описать путь. Админ долго колдовал с пользователями и разрешениями, регистрировал-перерегистрировал, параллельно я скачал "Инструменты разработчика" (вот мощная штука, автор конечно человечище), там сначала все тоже не регистрировалось "недостаточно прав", но потом после какой-то очередной админской итерации все вдруг зарегистрировалось через эти ИР и заработало.
Странная история.
1с, судя по всему, &НаКлиенте запускает 32х ComConnector независимо от того, какая разрядность клиентского приложения. А на сервере 64х. Хотя в чем разница, если все крутится на одном сервере, непонятно.
Хочу очень поблагодарить всех принявших участие! проблема была очень большая...