Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Работа с внешней компонентой

Работа с внешней компонентой
Я
   JastAMan
 
25.09.17 - 09:12
Не доводилось работать с внешними компонентами. Сколько не гуглил - не смог понять принцип работы. По примеру попытался сделать так:

ЗагрузитьВнешнююКомпоненту("C:\1C\FprnM1C82.dll");
     
Компонента = Новый ("AddIn.FprnM1C82");    


При выполнении сообщение о том что тип не определен: FprnM1C82

Как правильно?
 
 
   Рэйв
 
1 - 25.09.17 - 09:22
Правильно -Якнуть справа.
   JastAMan
 
2 - 25.09.17 - 09:35
(1) Говорю, же гуглил.
Если знаешь, то подскажи, пожалуйста, почему не подключается компонента?

Подключено = ПодключитьВнешнююКомпоненту("C:\1C\FprnM1C82.dll", "FprnM1C82", AddInType.Native);
    Если Подключено = Истина тогда 
        Компонента = Новый ("AddIn.FprnM1C82");
    КонецЕсли;
   МимохожийОднако
 
3 - 25.09.17 - 09:37
Зарегистрируй для начала через командную строку с правами администратора эту несчастную компоненту
   JastAMan
 
4 - 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.
Веб-клиент может работать только с компонентами в информационной базе, упакованными в архив.
Тонкий клиент может работать с компонентами в информационной базе, упакованными в архив, и компонентами, расположенными в файловой системе.
Толстый клиент может работать со всеми вариантами хранения компонентов. При этом, если компонент установлен методом УстановитьВнешнююКомпоненту, то используется установленный компонент, а если не установлен, то компонент будет получен в момент подключения.
Сервер может работать со всеми компонентами. Компонент кэшируется на сеанс работы сервера
   JastAMan
 
7 - 25.09.17 - 09:54
Странно: переменная Подключено = ложь, а в исключение не заходит, соответственно нет описания ошибки.
    
Попытка
Подключено = ПодключитьВнешнююКомпоненту("C:\1C\FprnM1C82.dll", "FprnM1C82", AddInType.Native);
    Исключение
        Сообщить(ОписаниеОшибки());
    КонецПопытки;
    Если Подключено = Истина тогда 
        Компонента = Новый ("AddIn.FprnM1C82");
    КонецЕсли;
   JastAMan
 
8 - 25.09.17 - 13:06
Что делаю не так?
Компонента зарегистрирована, но не подключается.
   Zyka
 
9 - 25.09.17 - 14:11
Возможно я ошибаюсь, однако выглядит на попытку подружить 1С и ККМ АТОЛ.

Если так, то ставим драйвер, например "KKT_8_15_02_00". Она сама зарегистрирует DLL.
Ну, про ручную регистрацию вам уже писали.

Также обратите DLL к которой идёт обращение.

- - - - - - - - - - - -

Инициализация на стороне 1Сы:

ОбъектДрайвера = Неопределено;
ProgID = "AddIn.FPrnM8";

Попытка
    ПодключитьВнешнююКомпоненту(ProgID);
    ОбъектДрайвера = Новый(ProgID);
Исключение
КонецПопытки;

Если ОбъектДрайвера = Неопределено Тогда
    Сообщить("ОШИБКА: " + Символы.ПС + "Внешняя компонента драйвера не найдена");
    Возврат Неопределено;
КонецЕсли;

Также не забывайте вызывать неявный деструктор объекта драйвера:
ОбъектДрайвера.DeviceEnabled = Ложь;
ОбъектДрайвера = Неопределено;

- - - - - - - - - - - -
   JastAMan
 
10 - 25.09.17 - 15:48
(9) Установил KKT_8_15_03_00_Full
Увидел FprnM1C.dll в списке зарегистрированных dll.
ПодключитьВнешнююКомпоненту(ProgID) возвращает ложь.

ОбъектДрайвера = Неопределено;
ProgID = "AddIn.FprnM1C";
Попытка
    ПодключитьВнешнююКомпоненту(ProgID);
    ОбъектДрайвера = Новый(ProgID);
Исключение
    
КонецПопытки;
 
 Рекламное место пустует
   JastAMan
 
11 - 25.09.17 - 15:48
Впечатление, что не находит компоненту
   МимохожийОднако
 
12 - 25.09.17 - 16:29
Положи поближе в BIN или System32
   JastAMan
 
13 - 25.09.17 - 16:56
(12) Куда только не ложил.
Даже в общий макет.
   H A D G E H O G s
 
14 - 25.09.17 - 17:00
могу подключиться, глянуть
   dezss
 
15 - 25.09.17 - 17:03
Если винда x64, то надо в SysWOW64 положить и там зарегать, если x86, то в system32.
Да и имя смущает AddIn.FprnM1C. Вообще сейчас пользуются, в том числе, FprnM1C82_54FZ, а это компонента AddIn.ATOL_KKM_1C82_54FZ.
   piter3
 
16 - 25.09.17 - 17:04
А в манифесте точно натив?
   dezss
 
17 - 25.09.17 - 17:13
(16) com, там, скорей всего...
   Zyka
 
18 - 25.09.17 - 22:52
(10) на всякий случай спрошу: вызов происходит там же где установлен драйвер?
То бишь обработка подключения внешней компоненты &НаКлиенте?

Имел честь видеть людей вешающих подобные драйвера на сервер (удаленный) и подключаясь к компоненте с сервера недоумевали о недоступности локального com порта или ip (проброса там не было)
   piter3
 
19 - 25.09.17 - 22:57
(17) Угу,если автору нужно не на клиенте то добро пожаловать в 9 версию.
   piter3
 
20 - 25.09.17 - 22:59
Хотя какой насервере в 7.7)))
   JastAMan
 
21 - 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);// при выполнении этой строки кода - "Тип не определен"


Исключение

КонецПопытки;
   JastAMan
 
22 - 27.09.17 - 14:31
Up
   piter3
 
23 - 27.09.17 - 14:32
уже писали не FprnM1C.Открой архив уже и в манифесте будет явно написано
   piter3
 
24 - 27.09.17 - 14:36
   JastAMan
 
25 - 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)
   JastAMan
 
26 - 27.09.17 - 15:36
В манифесте Com, но и ним не работает.
После подключения компоненты 1С должна видеть тип данных ATOL_KKM_1C82_54FZ?
   piter3
 
27 - 27.09.17 - 15:39
(26) ну да
   JastAMan
 
28 - 27.09.17 - 15:42
(27) В чем же может быть затык - где еще рыть?
   Йохохо
 
29 - 27.09.17 - 15:45
(25) \Program Files\ - x64?
   JastAMan
 
30 - 27.09.17 - 15:55
х32 однако
   JastAMan
 
31 - 27.09.17 - 15:57
Расположение файлов не должно влиять. Какая разница, по какому адресу зарегистрирована dll
   piter3
 
32 - 28.09.17 - 10:50
На клиенте делаешь?
   dezss
 
33 - 28.09.17 - 11:07
(31) влияет еще как
Зарегай dll в SysWOW64, если винда х64 или в System32, если винда x86.
После этого подключай компоненту и наслаждайся.
 
 
   dezss
 
34 - 28.09.17 - 11:08
(33) + подключай вот так
ProgID = "AddIn.ATOL_KKM_1C82_54FZ";
ПодключитьВнешнююКомпоненту(ProgID);
ОбъектДрайвера = Новый (ProgID);
   dezss
 
35 - 28.09.17 - 11:10
И вообще, что тебе возвращает ПодключитьВнешнююКомпоненту?
   JastAMan
 
36 - 03.10.17 - 16:33
(35) Истину, добрый молодец, возвращает.
   piter3
 
37 - 03.10.17 - 16:38
Может на чистой машине попробовать?


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует