Имя: Пароль:
1C
1С v8
Проблема работы с COM объектом:-2147221164(0x80040154): Класс не зарегистрирован
0 DGorgoN
 
10.12.15
11:15
Для подключения 1с к весам поставщик дал свой ком компонент, зарегестрировал его как указанно в инструкции, ком объект не зарегестрировался толком, прописал вручную, но всё равно работать не хочет: http://firepic.org/?v=2.2015-12-10_jmqft48ui1ze.jpg

Код в 1с:

    МойОбъект = Новый COMОбъект("COMPtrLib.COMReceiver");
    Вес = МойОбъект.GetWeight("COM1");
    Сообщить(Вес);

Выдает сразу:

{Форма.Форма.Форма(5)}: Ошибка при вызове конструктора (COMОбъект)
    МойОбъект = Новый COMОбъект("COMPtrLib.COMReceiver");
по причине:
-2147221164(0x80040154): Класс не зарегистрирован
1 vde69
 
10.12.15
11:17
ну ты или давай конкретику (какая винда, какой драйвер) или иди на сайт техподдержки оборудованияч
2 su_mai
 
10.12.15
11:17
3 DGorgoN
 
10.12.15
11:17
(1) Думаю не привязанно это к винде. Винда серверная 2012*64
4 DGorgoN
 
10.12.15
11:21
regasm и gacutil делал. Прошло все без ошибок:

C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin> .\gacutil.exe /i "C:\Lib\COMPtrLib.dll"

PS C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin> cd "C:\Windows\WinSxS\amd64_regasm_b03f5f7f11d50a3a6.3.9600.16384
none_ea742672c514173d"
PS C:\Windows\WinSxS\amd64_regasm_b03f5f7f11d50a3a_6.3.9600.16384_none_ea742672c514173d> .\regasm /codebase /tlb "C:\Lib
\COMPtrLib.dll"
Microsoft (R) .NET Framework Assembly Registration Utility 2.0.50727.7905
Copyright (C) Microsoft Corporation 1998-2004.  All rights reserved.

Types registered successfully
Assembly exported to 'C:\Lib\COMPtrLib.tlb', and the type library was registered successfully
PS C:\Windows\WinSxS\amd64_regasm_b03f5f7f11d50a3a_6.3.9600.16384_none_ea742672c514173d>
5 Барматолог
 
10.12.15
11:23
(3) регал то как?
6 DGorgoN
 
10.12.15
11:26
(5) Сначала командами

gacutil.exe /i "C:\Lib\COMPtrLib.dll"
regasm /codebase /tlb "C:\Lib\COMPtrLib.dll"
7 DGorgoN
 
10.12.15
11:26
Потом уже ручками в ветках по скрину выше
8 DGorgoN
 
10.12.15
11:26
9 vde69
 
10.12.15
11:27
(3) это на 100% не относится к 1с, скорее всего компонента 32х а винда 64х
10 vde69
 
10.12.15
11:28
у 1с есть доступ к каталогу "C:\Lib\COMPtrLib.dll" ???

по дефолту на сервере его не будет...
11 DGorgoN
 
10.12.15
11:31
(10) 8.2 как бы
12 DGorgoN
 
10.12.15
11:31
формы обычные
13 Барматолог
 
10.12.15
11:31
(9) +0.5

(6) регай в Службе компонентов dcomcnfg
14 DGorgoN
 
10.12.15
11:32
(9) ммм, а разница? и как побороть?
15 DGorgoN
 
10.12.15
11:33
(13) Так вот я уже сам зарегил, см http://firepic.org/?v=2.2015-12-10_jmqft48ui1ze.jpg
16 Барматолог
 
10.12.15
11:33
сорри, не видел скрина (8)
17 DGorgoN
 
10.12.15
11:33
Может имя как то неправильно или шаг какой то неправильно сделал
18 Барматолог
 
10.12.15
11:33
(17) пользователь, вобщем, безопасность глянь еще
19 vde69
 
10.12.15
11:36
(14)32х компонента не будет работать в 64х ОС, по крайне мере я не знаю способа кроме виртуальной 32х машины и подключение через DCOM+
20 DGorgoN
 
10.12.15
11:36
(18) Прошу проконтролировать, а имя я правильно пишу? МойОбъект = Новый COMОбъект("COMPtrLib.COMReceiver");
21 Барматолог
 
10.12.15
11:37
(20) правильно
22 Барматолог
 
10.12.15
11:38
(19) пруфы?
23 DGorgoN
 
10.12.15
11:39
(19) Она вроде с помощью нета написана, серьезно работать не будет?
24 vde69
 
10.12.15
11:41
(22) пруфы на что? на несовместимость моделей адресации 32х и 64х ??? так это и ежу понятно, что короткий указатель не будет работать в адресном пространстве заточенном под длинные указатели.
25 Барматолог
 
10.12.15
11:42
(24) но пишет же на то, что класс не зарегистрирован.

На несовместимость должен же писать другое.
26 Барматолог
 
10.12.15
11:45
+(24) а как тогда работает COM для 1С 32 на 64 винде?
27 vde69
 
10.12.15
11:45
(25)>>>> зарегестрировал его как указанно в инструкции, ком объект не зарегестрировался толком

так может ты приведешь описание ошибки при штатной регистрации ???
28 vde69
 
10.12.15
11:46
(26) на 64х винде все библиотеки кома пересобраны на 64х
29 DGorgoN
 
10.12.15
11:48
(27) Никаких ошибок не было. Написал что все ок, а в dcomcnfg не появился
30 ЧеловекДуши
 
10.12.15
11:48
(26) Через одно место "ЖПУ". Большинство попросту не работает. Так что чудес не бывает :)
31 DGorgoN
 
10.12.15
11:48
PS C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin> .\gacutil.exe /i "C:\Lib\COMPtrLib.dll"
Microsoft (R) .NET Global Assembly Cache Utility.  Version 3.5.30729.1
Copyright (c) Microsoft Corporation.  All rights reserved.

Assembly successfully added to the cache
32 DGorgoN
 
10.12.15
11:49
PS C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin> cd "C:\Windows\WinSxS\amd64_regasm_b03f5f7f11d50a3a_6.3.9600.16384
none_ea742672c514173d"
PS C:\Windows\WinSxS\amd64_regasm_b03f5f7f11d50a3a_6.3.9600.16384_none_ea742672c514173d> .\regasm /codebase /tlb "C:\Li
\COMPtrLib.dll"
Microsoft (R) .NET Framework Assembly Registration Utility 2.0.50727.7905
Copyright (C) Microsoft Corporation 1998-2004.  All rights reserved.

Types registered successfully
Assembly exported to 'C:\Lib\COMPtrLib.tlb', and the type library was registered successfully
33 ЧеловекДуши
 
10.12.15
11:49
+(26) Не путай Клиентскую часть с Сервером 1С.
Клиент 1С, запускается под х32, т.к. у 1С нет приложения на х64.

А вот сервер есть на х64 :)
34 vde69
 
10.12.15
11:50
ну не знаю...
35 Барматолог
 
10.12.15
11:50
(28) не совсем понял

Установили 1С 32 битную на 64 битную винду.
1) Регаем comcntr.dll
2) Через службы компонентов (dcomcnfg) создаем компонеент
36 DGorgoN
 
10.12.15
11:52
(35) Ну я фактически через dcomcnfg и зарегал
37 Барматолог
 
10.12.15
11:53
(36) с каким пользователем?
38 DGorgoN
 
10.12.15
11:55
опа, теперь помутил, другое писать начал:
{Форма.Форма.Форма(5)}: Ошибка при вызове конструктора (COMОбъект)
    МойОбъект = Новый COMОбъект("COMPtrLib.COMReceiver");
по причине:
-2147221005(0x800401F3): Недопустимая строка с указанием класса
39 ЧеловекДуши
 
10.12.15
11:55
(35) Регаем на сервер 1С. На клиентской стороне твой ком-ок будет работать и без танцев бубном :)
40 ЧеловекДуши
 
10.12.15
11:56
(38) Ты надеюсь это шаманство делаешь на Виртуальке, типо Виртуале Боксе, тестовой? :)
41 DGorgoN
 
10.12.15
11:57
(40) Неа, только хардкор )
42 Барматолог
 
10.12.15
11:58
(39) я спрашивал совершенно иное.
43 DGorgoN
 
10.12.15
11:59
Опа, заработало
44 DGorgoN
 
10.12.15
12:00
Какими то шаманскими действиями, сам не понял как. Удалил, заново пересобрал, заработало. Удивительно!
45 Барматолог
 
10.12.15
12:00
vde69 пишет

>> (14) 32х компонента не будет работать в 64х ОС, по крайне мере я не знаю способа кроме виртуальной 32х машины и подключение через DCOM+

Я в (35), как тупой адинэсник, привожу пример работы 32 битной компоненты под 64 битным сервером
46 DGorgoN
 
10.12.15
12:02
(45) Всё, как то само заработало. Причем в службе компонентов этот элемент не отобразился. Но работает. Как? не знаю. Но работает. Удивительно. Накачу сегодня за здоровье БиллаГейтса и СтиваБалмера
47 Барматолог
 
10.12.15
12:07
(46) т.е. ты просто зарегал через resvr?
48 Барматолог
 
10.12.15
12:08
* regsvr
49 Барматолог
 
10.12.15
12:18
все, пошел накатывать?
50 DGorgoN
 
10.12.15
12:32
(47) Пытался до этого но не канало. Сейчас просто ещё 1 раз выполнил все команды и заработало