|
Работа с внешней компонентой | ☑ | ||
---|---|---|---|---|
0
JastAMan
25.09.17
✎
09:12
|
Не доводилось работать с внешними компонентами. Сколько не гуглил - не смог понять принцип работы. По примеру попытался сделать так:
ЗагрузитьВнешнююКомпоненту("C:\1C\FprnM1C82.dll"); Компонента = Новый ("AddIn.FprnM1C82"); При выполнении сообщение о том что тип не определен: FprnM1C82 Как правильно? |
|||
1
Рэйв
25.09.17
✎
09:22
|
Правильно -Якнуть справа.
|
|||
2
JastAMan
25.09.17
✎
09:35
|
(1) Говорю, же гуглил.
Если знаешь, то подскажи, пожалуйста, почему не подключается компонента? Подключено = ПодключитьВнешнююКомпоненту("C:\1C\FprnM1C82.dll", "FprnM1C82", AddInType.Native); Если Подключено = Истина тогда Компонента = Новый ("AddIn.FprnM1C82"); КонецЕсли; |
|||
3
Мимохожий Однако
25.09.17
✎
09:37
|
Зарегистрируй для начала через командную строку с правами администратора эту несчастную компоненту
|
|||
4
JastAMan
25.09.17
✎
09:41
|
(3) Делал:
regsvr32 C:\1C\FprnM1C82.dll Сообщение windows Успешное выполнение DLLRegisterServer в C:\1C\FprnM1C82.dll |
|||
5
Мимохожий Однако
25.09.17
✎
09:42
|
Обрами в попытки и почитай ОписаниеОшибки()
|
|||
6
Мимохожий Однако
25.09.17
✎
09:45
|
Важно в какой среде используешь этот метод. Примечание из СП:
Внешние компоненты могут быть выполнены по технологии Native API или COM. Компоненты, выполненные по технологии COM, совместимы с компонентами 1С:Предприятия 7.7. Веб-клиент может работать только с компонентами в информационной базе, упакованными в архив. Тонкий клиент может работать с компонентами в информационной базе, упакованными в архив, и компонентами, расположенными в файловой системе. Толстый клиент может работать со всеми вариантами хранения компонентов. При этом, если компонент установлен методом УстановитьВнешнююКомпоненту, то используется установленный компонент, а если не установлен, то компонент будет получен в момент подключения. Сервер может работать со всеми компонентами. Компонент кэшируется на сеанс работы сервера |
|||
7
JastAMan
25.09.17
✎
09:54
|
Странно: переменная Подключено = ложь, а в исключение не заходит, соответственно нет описания ошибки.
Попытка Подключено = ПодключитьВнешнююКомпоненту("C:\1C\FprnM1C82.dll", "FprnM1C82", AddInType.Native); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; Если Подключено = Истина тогда Компонента = Новый ("AddIn.FprnM1C82"); КонецЕсли; |
|||
8
JastAMan
25.09.17
✎
13:06
|
Что делаю не так?
Компонента зарегистрирована, но не подключается. |
|||
9
Zyka
25.09.17
✎
14:11
|
Возможно я ошибаюсь, однако выглядит на попытку подружить 1С и ККМ АТОЛ.
Если так, то ставим драйвер, например "KKT_8_15_02_00". Она сама зарегистрирует DLL. Ну, про ручную регистрацию вам уже писали. Также обратите DLL к которой идёт обращение. - - - - - - - - - - - - Инициализация на стороне 1Сы: ОбъектДрайвера = Неопределено; ProgID = "AddIn.FPrnM8"; Попытка ПодключитьВнешнююКомпоненту(ProgID); ОбъектДрайвера = Новый(ProgID); Исключение КонецПопытки; Если ОбъектДрайвера = Неопределено Тогда Сообщить("ОШИБКА: " + Символы.ПС + "Внешняя компонента драйвера не найдена"); Возврат Неопределено; КонецЕсли; Также не забывайте вызывать неявный деструктор объекта драйвера: ОбъектДрайвера.DeviceEnabled = Ложь; ОбъектДрайвера = Неопределено; - - - - - - - - - - - - |
|||
10
JastAMan
25.09.17
✎
15:48
|
(9) Установил KKT_8_15_03_00_Full
Увидел FprnM1C.dll в списке зарегистрированных dll. ПодключитьВнешнююКомпоненту(ProgID) возвращает ложь. ОбъектДрайвера = Неопределено; ProgID = "AddIn.FprnM1C"; Попытка ПодключитьВнешнююКомпоненту(ProgID); ОбъектДрайвера = Новый(ProgID); Исключение КонецПопытки; |
|||
11
JastAMan
25.09.17
✎
15:48
|
Впечатление, что не находит компоненту
|
|||
12
Мимохожий Однако
25.09.17
✎
16:29
|
Положи поближе в BIN или System32
|
|||
13
JastAMan
25.09.17
✎
16:56
|
(12) Куда только не ложил.
Даже в общий макет. |
|||
14
H A D G E H O G s
25.09.17
✎
17:00
|
могу подключиться, глянуть
|
|||
15
dezss
25.09.17
✎
17:03
|
Если винда x64, то надо в SysWOW64 положить и там зарегать, если x86, то в system32.
Да и имя смущает AddIn.FprnM1C. Вообще сейчас пользуются, в том числе, FprnM1C82_54FZ, а это компонента AddIn.ATOL_KKM_1C82_54FZ. |
|||
16
piter3
25.09.17
✎
17:04
|
А в манифесте точно натив?
|
|||
17
dezss
25.09.17
✎
17:13
|
(16) com, там, скорей всего...
|
|||
18
Zyka
25.09.17
✎
22:52
|
(10) на всякий случай спрошу: вызов происходит там же где установлен драйвер?
То бишь обработка подключения внешней компоненты &НаКлиенте? Имел честь видеть людей вешающих подобные драйвера на сервер (удаленный) и подключаясь к компоненте с сервера недоумевали о недоступности локального com порта или ip (проброса там не было) |
|||
19
piter3
25.09.17
✎
22:57
|
(17) Угу,если автору нужно не на клиенте то добро пожаловать в 9 версию.
|
|||
20
piter3
25.09.17
✎
22:59
|
Хотя какой насервере в 7.7)))
|
|||
21
JastAMan
27.09.17
✎
11:13
|
Разобрался в предмете, посмотрел что, где зарегистрировано, ппонял, но теперь не определяется тип
ProgID = "AddIn.FprnM8"; // HKEY_CLASSES_ROOT\AddIn.FprnM8 Попытка ПодключитьВнешнююКомпоненту("FprnM1C.dll", "FprnM1C", ТипВнешнейКомпоненты.Native); // Зарегистрирована по адресу: C:\Program Files\ATOL\Drivers8\Bin_Free\FprnM1C.dll //Пробовал так: ПодключитьВнешнююКомпоненту("C:\Program Files\ATOL\Drivers8\Bin_Free\FprnM1C.dll", "FprnM1C", ТипВнешнейКомпоненты.Native); // так же вместо Native выбирал Com ОбъектДрайвера = Новый(ProgID); // при выполнении этой строки кода - "Тип не определен" Исключение КонецПопытки; |
|||
22
JastAMan
27.09.17
✎
14:31
|
Up
|
|||
23
piter3
27.09.17
✎
14:32
|
уже писали не FprnM1C.Открой архив уже и в манифесте будет явно написано
|
|||
24
piter3
27.09.17
✎
14:36
|
||||
25
JastAMan
27.09.17
✎
15:32
|
(23) Я 8.3 это делаю. Видимо ошибочно выбрал 7.7 в теме .
Открыл архив C:\Program Files\ATOL\Drivers8\1Cv82\FR-ATOL_54FZ.zip распаковал в: C:\Program Files\ATOL\Drivers8\1Cv82\FZ54 Зарегистрировал компоненту. Увидел в реестре соответствующие ключи. Из реестра скопировал RegID: "AddIn.ATOL_KKM_1C82_54FZ" Затем в обработке: ProgID = "AddIn.ATOL_KKM_1C82_54FZ"; Попытка//ПОДКЛЮЧАЕТСЯ НО НЕ СОЗДАЕТ ОБЪЕКТ ДРАЙВЕРА. ПодключитьВнешнююКомпоненту("C:\Program Files\ATOL\Drivers8\1Cv82\FZ54\FprnM1C82_54FZ.dll", "FprnM1C82_54FZ", ТипВнешнейКомпоненты.Native); ОбъектДрайвера = Новый(ProgID); Исключение КонецПопытки; Снова подключает, но Новый(ProgID) {(1)}: Тип не определен (AddIn.ATOL_KKM_1C82_54FZ) |
|||
26
JastAMan
27.09.17
✎
15:36
|
В манифесте Com, но и ним не работает.
После подключения компоненты 1С должна видеть тип данных ATOL_KKM_1C82_54FZ? |
|||
27
piter3
27.09.17
✎
15:39
|
(26) ну да
|
|||
28
JastAMan
27.09.17
✎
15:42
|
(27) В чем же может быть затык - где еще рыть?
|
|||
29
Йохохо
27.09.17
✎
15:45
|
(25) \Program Files\ - x64?
|
|||
30
JastAMan
27.09.17
✎
15:55
|
х32 однако
|
|||
31
JastAMan
27.09.17
✎
15:57
|
Расположение файлов не должно влиять. Какая разница, по какому адресу зарегистрирована dll
|
|||
32
piter3
28.09.17
✎
10:50
|
На клиенте делаешь?
|
|||
33
dezss
28.09.17
✎
11:07
|
(31) влияет еще как
Зарегай dll в SysWOW64, если винда х64 или в System32, если винда x86. После этого подключай компоненту и наслаждайся. |
|||
34
dezss
28.09.17
✎
11:08
|
(33) + подключай вот так
ProgID = "AddIn.ATOL_KKM_1C82_54FZ"; ПодключитьВнешнююКомпоненту(ProgID); ОбъектДрайвера = Новый (ProgID); |
|||
35
dezss
28.09.17
✎
11:10
|
И вообще, что тебе возвращает ПодключитьВнешнююКомпоненту?
|
|||
36
JastAMan
03.10.17
✎
16:33
|
(35) Истину, добрый молодец, возвращает.
|
|||
37
piter3
03.10.17
✎
16:38
|
Может на чистой машине попробовать?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |