Имя: Пароль:
1C
1С v8
Подключение внешней компоненты в 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
36 Кирпич
 
06.11.15
16:29
(33) выслал на почту
37 nikolay_1c
 
06.11.15
16:54
Спасибо, исправленная не крашится и код
КОМПорт = Новый ("AddIn.AAA.vk_rs232");
КОМПорт.ОткрытьПорт("COM3");

Выполнился.

Но почему то Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные) не получает данные от КОМ порта, а если ставлю драйвер сканера, то получает как строку. А нужно в 16ричном формате.
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший