|   |   | 
| 
 | Работа с внешней компонентой | ☑ | ||
|---|---|---|---|---|
| 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 | 
        Может на чистой машине попробовать?     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |