Имя: Пароль:
1C
 
После "1cv8.exe /RegServer -CurrentUser" создание V83.Application не видит изменений
0 TormozIT
 
29.07.23
10:42
Хочу динамически регистрировать нужную версию платформы 1С для COM класса V83.Application из своего приложения.
Для этого я выполняю команду ОС "1cv8.exe /RegServer -CurrentUser" и сразу же создаю новый COM объект класса V83.Application. Но он создается от старой версии платформы, которая была до свежей регистрации.
Такая регистрация выполняется в ветку реестра HKEY_CURRENT_USER\Software\Classes.
Если я перезапускаю свое приложение, то оно уже видит изменения в COM классе V83.Application и потому объект создается уже правильной версии платформы, т.е. той которая была регистрирована на предыдущем шаге.

Можно ли как то провести эту регистрацию, чтобы она сразу стала видна в приложении без его перезапуска?
1 TormozIT
 
29.07.23
11:40
Мое приложение 64-разрядное, а платформа 32-разрядная.
2 Смотрящий
 
29.07.23
12:03
Среду надо обновить
Вот тут что то есть https://russianblogs.com/article/5498948437/
3 TormozIT
 
29.07.23
12:30
Вот тут описано как сливаются вместе ветки HKLM и HKCU для создания единого списка классов.
Провел тест из клиентского приложения 1С 32-разрядного

ЗапуститьПриложение("""" + ИмяИсполняемогоФайла + """ /RegServer -CurrentUser",, Истина);
ИР = Новый COMОбъект("V83.Application");
УспехПодключения = ИР.Connect(СтрокаСоединенияИнформационнойБазы() + "Usr=""1"";Pwd="""";");

В таком случае объект создается сразу из новой версии платформы.
4 TormozIT
 
29.07.23
12:30
5 TormozIT
 
29.07.23
15:38
Для диагностики проблемы добавил функцию https://www.hostedredmine.com/issues/966868