|
Подключение внешней компоненты в 1с 8.3.6 и Win8 | ☑ | ||
---|---|---|---|---|
0
Ktyfa
08.10.15
✎
12:42
|
К самописной конфигурации надо подключить ВнешКомпоненту vk_rs232.dll. Вроде зарегистрировала через regsvr32.exe. "Вроде" потому, что получила сообщение что "компонента зарегистрирована, но чего-то там с брандмауэром". Понадеявшись на первую половину сообщения, пишу код в 1с
ПослеПодключения = Новый ОписаниеОповещения("ПослеПодключенияВК",ЭтаФорма); НачатьУстановкуВнешнейКомпоненты(,"C:\Controller\vk_rs232.dll"); НачатьПодключениеВнешнейКомпоненты(ПослеПодключения,"C:\Controller\vk_rs232.dll","ДЛЛ_Весы"); и получаю ошибку, что "Установка внешней компоненты не выполнена! Возможно отсутствует компонента для используемого клиентского приложения!". И теперь я не пойму: 1. Может все же компонента не зарегистрировалась в реестре - как ее там проверить? 2. Может ее "версия" не работает под Win8, хотя она у меня 32-бит. 3. Может сама 1с слишком новая, т.е. соответственно не может работать с этой dll-кой? 4. Ну и банальное - я пишу что-то не то. |
|||
1
Ktyfa
08.10.15
✎
15:31
|
причина была №4 - невнимательно читала. Все решилось файлом-манифестом.
<?xml version="1.0" encoding="utf-8"?> <bundle xmlns="http://v8.1c.ru/8.2/addin/bundle"> <component arch="i386" type="native" path="vk_rs232.dll" os="Windows"/> <component arch="x86_64" type="native" path="vk_rs232.dll" os="Windows"/> </bundle> Его и саму dll упаковала в архив в двоичными данными загрузила в ОбщийМакет. Ну а потом ПослеУстановки = Новый ОписаниеОповещения("ПослеУстановкиВК",ЭтаФорма); НачатьУстановкуВнешнейКомпоненты(ПослеУстановки,"ОбщийМакет.Макет"); |
|||
2
Ktyfa
08.10.15
✎
15:34
|
И все это привело меня в следующей проблеме. ВнешКомп Установлена, теперь ее надо Подключить. И тут оба варианта
ПодключитьВнешнююКомпоненту("C:\Controller\vk_rs232.dll","Весы") ПодключитьВнешнююКомпоненту("ОбщийМакет.Макет","Весы") выдают ЛОЖЬ!!! |
|||
3
Ktyfa
09.10.15
✎
08:39
|
Прикольно общаться с самой собой, но продолжу. В (2) причина была - незарегистрированность библиотеки. Все же пришлось внимательнее почитать, что за ошибку выдает и запустить cmd под админом. Теперь ПодключитьВнешнююКомпоненту выдает ИСТИНу, правда только при указании пути к физ.файлу - но и то хлеб.
Следующий вопрос - После всех этих плясок пытаюсь rs232_1 = Новый COMОбъект ("AddIn.vk_rs232"); rs232_1.ОткрытьПорт("СОМ4"); и получаю что "метод объектка не обнаружен" |
|||
4
Cyberhawk
09.10.15
✎
08:42
|
А документация к этой dll что говорит? Нет такого метода, видимо, в ней
|
|||
5
Cyberhawk
09.10.15
✎
08:44
|
Вот так попробуй:
rs232 = Новый ("AddIn.vk_rs232"); rs232.ОткрытьПорт("COM3"); |
|||
6
Ktyfa
09.10.15
✎
10:09
|
(4) нет, документации. В инете увидела что vk_rs232 - это прообраз ScanОpos - сейчас параллельно попробую разбираться с ней. (5) А так ругается, что "тип неопределен"
|
|||
7
Cyberhawk
09.10.15
✎
10:13
|
(6) "ругается, что "тип неопределен""
Покажи на картинке |
|||
8
Ktyfa
09.10.15
✎
10:15
|
Из отладчика пойдет?
|
|||
9
Cyberhawk
09.10.15
✎
10:15
|
Не знаю
|
|||
10
Ktyfa
09.10.15
✎
10:18
|
||||
11
Ktyfa
09.10.15
✎
10:18
|
||||
12
Cyberhawk
09.10.15
✎
10:19
|
Ну, сначала сама перейди по этой ссылке, потом уже выкладывай
|
|||
13
Ktyfa
09.10.15
✎
10:19
|
Извиняюсь
|
|||
14
Cyberhawk
09.10.15
✎
10:19
|
Не, из отладчика не пойдет, показывай ошибку-то во время исполнения кода
|
|||
15
Ktyfa
09.10.15
✎
10:24
|
||||
16
Cyberhawk
09.10.15
✎
10:27
|
Ну тогда вот так попробуй:
ПодключитьВнешнююКомпоненту("путькфайлудлл", "AAA", AddInType.COM)); КОМПорт = Новый ("AddIn.AAA.vk_rs232"); КОМПорт.ОткрытьПорт("COM3"); |
|||
17
Ktyfa
09.10.15
✎
10:34
|
Да, так (Новый ("AddIn.AAA.vk_rs232");) КОМПорт - это уже не просто СОМОбъект, а уже и свойства его видны.
А можно еще вопрос? Что такое "AddIn" как его обозвать в поисковике? И почему мы можем пропустить тип создаваемого объекта? |
|||
18
Ktyfa
09.10.15
✎
10:36
|
ну и на всякий случай: КОМПорт.ОткрытьПорт("COM3"); - выдает ошибку потому что у меня нет ком порта?
|
|||
19
Cyberhawk
09.10.15
✎
13:27
|
"Что такое "AddIn"" // это строка (требование 1С к именованию внешних компонент)
"как его обозвать в поисковике?" // без понятия, т.к. не понял, с чем связано возникновение вопроса "И почему мы можем пропустить тип создаваемого объекта?" // Мы не пропускаем, это просто второй вариант синтаксиса оператора Новый "выдает ошибку потому что у меня нет ком порта?" // Смотря какую ошибку, попробуй там COM1 - он почти у всех есть |
|||
20
Ktyfa
09.10.15
✎
14:07
|
//Смотря какую ошибку, попробуй там COM1 - он почти у всех есть
вот такую http://imglink.ru/show-image.php?id=1e74c62863bd4ba5854d54245ed5f95f |
|||
21
Cyberhawk
09.10.15
✎
17:04
|
Ну, надо попробовать на ПК, где в диспетчере устройств есть СОМ-порт. Возможно, имя порта не так пишешь. Попробуй "1" или 1 туда подсунуть
|
|||
22
nikolay_1c
06.11.15
✎
13:21
|
Столкнулся с такой же проблемой. Установить и подключить компоненту получилось, но на строке
КОМПорт = Новый ("AddIn.AAA.vk_rs232"); ругается что тип неопределен, уже пару часов бьюсь, никак не пойму что не так делаю. Кроме этого, при 1С после подключения компоненты конфа закрывается с крашем. |
|||
23
Cyberhawk
06.11.15
✎
13:33
|
"ругается что тип неопределен" // покажи на картинке:
1. Программный код 2. Ошибку |
|||
24
nikolay_1c
06.11.15
✎
14:49
|
ПослеПодключения = Новый ОписаниеОповещения("ПослеПодключенияВК",ЭтаФорма);
НачатьУстановкуВнешнейКомпоненты(,"ОбщийМакет.vk_rs232"); НачатьПодключениеВнешнейКомпоненты(ПослеПодключения,"D:\vk_rs232.dll", "AAA", AddInType.COM); КОМПорт = Новый ("AddIn.AAA.vk_rs232"); http://imglink.ru/show-image.php?id=c20e6273c532a112efcb1e63dbaed50c |
|||
25
nikolay_1c
06.11.15
✎
14:51
|
||||
26
nikolay_1c
06.11.15
✎
14:53
|
Никак не пойму как картинку корректно вставить :( Еще раз попробую
http://imglink.ru/show-image.php?id=c20e6273c532a112efcb1e63dbaed50c |
|||
27
Cyberhawk
06.11.15
✎
15:01
|
Так ты подключаешь компоненту, не дождавшись, пока отработает процедура "ПослеПодключения". Там и создавай свой КОМПорт...
|
|||
28
nikolay_1c
06.11.15
✎
15:06
|
Перенес
КОМПорт = Новый ("AddIn.AAA.vk_rs232"); в конец процедуры "ПослеПодключения". На этой строке 1С вылетает с крашем :( Сигнатура проблемы: Имя события проблемы: BEX Имя приложения: 1CV8C.exe Версия приложения: 8.3.6.2100 Отметка времени приложения: 558cf553 Имя модуля с ошибкой: StackHash_0a9e Версия модуля с ошибкой: 0.0.0.0 Отметка времени модуля с ошибкой: 00000000 Смещение исключения: 413f2e00 Код исключения: c0000005 Данные исключения: 00000008 Версия ОС: 6.1.7601.2.1.0.256.4 Код языка: 1049 Дополнительные сведения 1: 0a9e Дополнительные сведения 2: 0a9e372d3b4ad19135b953a78882e789 Дополнительные сведения 3: 0a9e Дополнительные сведения 4: 0a9e372d3b4ad19135b953a78882e789 |
|||
29
Cyberhawk
06.11.15
✎
15:09
|
Ну что ж, могу только посоветовать обновить компоненту или обновить платформу
|
|||
30
nikolay_1c
06.11.15
✎
15:19
|
Хм, на другом компьютере все нормально.
Буду ковырять дальше, спасибо за помощь |
|||
31
Cyberhawk
06.11.15
✎
15:30
|
Ну еще как бы НачатьПодключениеВнешнейКомпоненты надо вызывать только после выполнения НачатьУстановкуВнешнейКомпоненты, а у тебя там вообще процедура не задана
|
|||
32
Cyberhawk
06.11.15
✎
15:30
|
Соответственно, код выполняется как попало (авось - успеет, авось - не успеет), не соблюдая указанное требование
|
|||
33
nikolay_1c
06.11.15
✎
16:03
|
Сделал подключение после НачатьУстановкуВнешнейКомпоненты.
Все равно крашится. Другая платформа не помогла. |
|||
34
Кирпич
06.11.15
✎
16:20
|
(33) это ВК которая с мисты? да в ней баг есть. я исправлял уже. щас поищу на форуме.
|
|||
35
Кирпич
06.11.15
✎
16:23
|
нашел COM-порт и тонкий клиент
|
|||
36
Кирпич
06.11.15
✎
16:29
|
(33) выслал на почту
|
|||
37
nikolay_1c
06.11.15
✎
16:54
|
Спасибо, исправленная не крашится и код
КОМПорт = Новый ("AddIn.AAA.vk_rs232"); КОМПорт.ОткрытьПорт("COM3"); Выполнился. Но почему то Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные) не получает данные от КОМ порта, а если ставлю драйвер сканера, то получает как строку. А нужно в 16ричном формате. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |