Имя: Пароль:
1C
1С v8
магия регистрации внешней компоненты
0 vasbur
 
17.04.14
09:56
Есть внешняя COM-компонента, которая используется в обработке 1С, которую мы отдаем клиентам. Периодически у некоторых клиентов возникают проблемы с ее регистрацие, один из таких случаев удалось вопроизвести в лабораторых условиях, и я сейчас пытаюсь разобратьчся в нем.

так, дано: Windows Server 2008, 32bit, UAC включен.
1С 8.2, толстый клиент.
При запуске выполняется следующий код:

ЗагрузитьВнешнююКомпоненту(ИмяФайла);
АПИObject_ = Новый("AddIn.DiadocInvoiceAPI");
АПИObject = АПИObject_.CreateObject();
АПИObject.TestConnection()

Первые три строчки отрабатываются, а на четвертой возникает ошибка.
При этом, АПИObject  имеет тип OLE-Объекта

После этого берем и регистрируем компоненту через regsvr32. После этого все работает.

Анализ отличий в реестре показал, что при регистрации компоненты через 1С не добавляются записи в HKEY_CURRENT_USER/Software/Classes/Interface. А при регистрации через regsrv32 - добавляются
1 vasbur
 
17.04.14
09:57
вопрос - как сделать так, чтобы встроенная регистрация компоненты работала правильно, и где, вообще, копать
2 hhhh
 
17.04.14
10:05
(0) а где тут в 1с вы ее регистрируете?
3 vasbur
 
17.04.14
10:07
(2) метод "ЗагрузитьВнешнююКомпоненту" регистрирует компоненту.
В 99% случаяъ это так, но вот итогда - это не совсем так.
4 PLUT
 
17.04.14
10:14
(3) наверно UAC это остальные 47% случаев
5 Torquader
 
17.04.14
10:17
(4) Ну да, для понимания нужно запустить 1С из под администратора и посмотреть, что изменится в реестре.
Как вариант, вставить строку на проверку наличия записи в реестре и, если её нет, то попросить пользователя запустить файл регистрации от администратора.
6 vasbur
 
17.04.14
10:21
(4) все равно странно - получается, что при UAC компоненту 1С регистрирует, но криво. Настолько криво, что если потом UAC отключить, то повторная заргузка компоненты средставми 1С не спасает
7 vasbur
 
17.04.14
10:22
(5) в реестре смотреть - это костыльно как-то.
8 Мыш
 
17.04.14
10:47
Запустить 1С от имени администратора
9 vasbur
 
17.04.14
11:43
(8) невозможно же залезть в голову каждого пользователя.
Пользователи делают тоЮ что им хочется. задача разработчика - сделать повежение программы понятным
10 YF
 
17.04.14
11:44
(9) Отключить UAC
11 vasbur
 
17.04.14
11:52
(10) Я понимаю, если бы компонента при включенном UAC выдавала ошибку при регистрации - тогда эту ситуацию можно было бы обрабатывать интерфейсно.
Ко компонента загружается, только косячно
12 vasbur
 
18.04.14
10:58
Орефков и Чебуратор, как я понимаю, в отпуске :)
13 vasbur
 
21.04.14
13:58
Эксперименты показали, что UAC не при чем.
Даже при отключенном UAC и запуске из под админа - внутренними средствами 1с компонента нормально не загружается.
При этом, после resvr32  - все становится работоспособным