Имя: Пароль:
1C
 
Подключение внешней компоненты
0 myr4ik07
 
10.06.16
12:49
Привет. Есть .dll для считывания магнитных карт от производителя.
Как сделать так, что бы в самописной конфигурации при открытии документа срабатывало события считывания значения из СМК, а потом уже я смог бы обработать это значение?
1 mikecool
 
10.06.16
12:50
(0) надо знать описание интерфейса и его методы
2 Timon1405
 
10.06.16
12:50
3 myr4ik07
 
10.06.16
12:52
(1) ну что то типа ZP_Port_Open() того есть у меня файлик описания
4 myr4ik07
 
10.06.16
12:52
(2) нет доступа у меня туда
5 myr4ik07
 
10.06.16
14:18
ПодключитьВнешнююКомпоненту("c:\ZR1C.dll", "Comp", ТипВнешнейКомпоненты.Native);
    
    ДемоКомп = Новый("AddIn.Comp.ZR1CExtension");
    ДемоКомп.Порт = "Com3";            
    DevID = Неопределено;
    ДемоКомп.Подключить(DevID);    

подключил внешнюю компоненту при ПриОткрытии() формы, а как теперь отловить событие что, что то считано?
6 lEvGl
 
гуру
10.06.16
14:30
для работы по такой схеме длл должна выкидывать данные во ВнешнееСобытие формы 1с. Устройство скорее всего работает как сканер или весы - выливает информацию в порт при считывании, если так, то проще сделать свою длл, которая будет отлавливать появление данных в СОМе и передавать их во внешнее событие. Serginiol тему освещал и делал "универсальную" библиотеку, но можно и свою организовать для конкретной задачи
7 lEvGl
 
гуру
10.06.16
14:32
8 myr4ik07
 
10.06.16
14:45
(6) та не думаю что разрабы сделали для 1с, но почему то не сделали вывод в 1с
9 lEvGl
 
гуру
10.06.16
14:59
интересное заключение ) добавляет отсутствие запятой, ну а так можно попробовать считать то что есть в буфере, может там чего и остается, не событие считывания, конечно, но хоть что то. в описании должен быть метод.
10 myr4ik07
 
10.06.16
15:13
(9) информацию о разных методах, методы отдають номер порта, версии и т.д. показывает, а вот как получить значения так и не понял
11 myr4ik07
 
10.06.16
15:15
интересно описано что должно срабатывать

"Пример для 1С
Код 1С:
    Перем ДемоКомп;
    Перем DevId;
    ПодключитьВнешнююКомпоненту("c:\ZR1C.dll", "Comp", ТипВнешнейКомпоненты.Native);
    ДемоКомп = Новый("AddIn.Comp.ZR1CExtension");
    //ДемоКомп.ОчиститьЛог();
    //ДемоКомп.ЗагрузитьНастройки();
    //ДемоКомп.ОчиститьФорматы();
    //ДемоКомп.ВставитьФормат(0, "GuardSaaS", "%.3u,%.5u", "b2 w01", 0, 0);
    ДемоКомп.Порт = "Com4";            // Задаём имя порта считывателя
    ДемоКомп.Подключить(DevId);        // Подключаемся к считывателю, в DevId получаем имя порта

где
"c:\ZR1C.dll" - путь к файлу компоненты;
"Com4" - com-порт для подключения к считывателю;
"%.3u,%.5u" и "b2 w01" - шаблон и параметры (как в PlaceCard) для форматирования и передачи номера от считывателя в 1С, этот формат автоматически добавляется при загрузке компоненты (его не нужно добавлять в коде 1С).
Свойство Порт и методы ОчиститьФорматы, ВставитьФормат настраивают порт считывателя и формат номера ключа, эти настройки можно сохранить с помощью метода СохранитьНастройки, и затем загрузить методом ЗагрузитьНастройки.

Форматированный номер передается через событие "ВнешнееСобытие" в 1С.

Настройки компоненты также можно изменять с помощью программы "ConfigZR1C.exe".
"
12 lEvGl
 
гуру
10.06.16
16:10
"Форматированный номер передается через событие "ВнешнееСобытие" в 1С."

а шо еще надо О_о
13 lEvGl
 
гуру
10.06.16
16:12
внешнеесобытие еще есть в глобальном модуле
14 myr4ik07
 
13.06.16
10:35
(12) на этих события (внешних событиях формы и модуля управляемого приложения) точка останова не срабатывает
15 Cyberhawk
 
13.06.16
10:54
(14) Это не баг, это фича.
Код выполняется.
16 myr4ik07
 
13.06.16
11:02
(15) это очень хорошо, но как мне значение получить, что отсканировано?
17 Cyberhawk
 
13.06.16
11:03
(16) Пиши в ЖР или выводи на экран
18 myr4ik07
 
13.06.16
11:14
(17) когда писать или показывать? у внешнем событии?
19 myr4ik07
 
13.06.16
11:16
(17) где ошибка ? http://paste1c.ru/o4W , ничего не выводит
20 Cyberhawk
 
13.06.16
11:27
(19) Я не вижу, чтобы вторая процедура была связана с обработчиком формы...
21 myr4ik07
 
13.06.16
11:28
(20) не понял
22 myr4ik07
 
13.06.16
11:29
(20) если http://paste1c.ru/2OX то тоже никакого результата
23 myr4ik07
 
13.06.16
11:31
(20) &НаКлиенте
Процедура ВнешнееСобытие(Источник, Событие, Данные)

это ж событие формы, или еще какое то событие должно быть?
24 Cyberhawk
 
13.06.16
11:45
25 myr4ik07
 
13.06.16
11:47
(24) http://prntscr.com/bfr2rv а что у меня не так?
26 Cyberhawk
 
13.06.16
11:56
(25) Вроде все так.
Что возвращает метод ПодключитьВнешнююКомпоненту?
27 myr4ik07
 
13.06.16
11:57
(26) истина
28 myr4ik07
 
13.06.16
11:57
(26) а при создании объекта получаю объект, так как и положено
29 myr4ik07
 
13.06.16
11:57
8.3 платформа, УФ
30 myr4ik07
 
13.06.16
11:58
(29) 8.2 аналогично
31 myr4ik07
 
13.06.16
11:59
конфа пустая, обработка с одним реквизитом
32 Cyberhawk
 
13.06.16
12:01
Проверь на типовой УТ 10
33 myr4ik07
 
13.06.16
12:03
(32) утп работает
34 Pistol
 
13.06.16
12:03
(19) А тебя не смущает, что перед одной процедурой написано &НаСервере, а перед другой - &НаКлиенте ?
35 myr4ik07
 
13.06.16
12:04
(34) ок изменю, напишу сейчас
36 myr4ik07
 
13.06.16
12:06
(34) если бы было все так элементарно
http://paste1c.ru/PNp
наши смущения до одного места
37 myr4ik07
 
13.06.16
12:07
если переставлю НаСервере все, аналогично, нет события
38 Pistol
 
13.06.16
12:08
(36) ДемоКомп это что?
39 myr4ik07
 
13.06.16
12:08
(38) внешняя компонента (по нативе), ддл-лка
40 Pistol
 
13.06.16
12:09
Где у тебя эта переменная описана?
41 myr4ik07
 
13.06.16
12:10
(40)
    ПодключитьВнешнююКомпоненту("c:\ZR1C.dll", "Comp", ТипВнешнейКомпоненты.Native);
    
    ДемоКомп = Новый("AddIn.Comp.ZR1CExtension");
42 Pistol
 
13.06.16
12:11
(41) Что происходит с локальной переменной при окончании процедуры?
43 myr4ik07
 
13.06.16
12:13
(42) как и положено, создается объект http://prntscr.com/bfrbsx
44 Pistol
 
13.06.16
12:16
(43) При. Окончании. Процедуры.
После. Выхода. Из. Нее?
45 myr4ik07
 
13.06.16
12:20
(44) до конца процедуры есть объект внутри этой переменной, а после нет
46 Pistol
 
13.06.16
12:22
(45) Правильно. А это приводит к выгрузке твоей компоненты по потере последней ссылки на нее. И внешнее событие возбуждать уже некому.
47 myr4ik07
 
13.06.16
12:29
(46) логично, очень надеюсь, что это из за этого, пробую переделать
48 myr4ik07
 
13.06.16
12:39
(46) аналогично http://paste1c.ru/bVd
49 myr4ik07
 
13.06.16
12:40
(48) ставлю точку вот здесь
а = 1;
получаю
ДемоКомп переменную заполненную объектом
50 myr4ik07
 
13.06.16
12:40
(46) а событие молчит
51 Pistol
 
13.06.16
12:47
Бляяяя. Извините

ВнешнееСобытие - клиентский обработчик. Об этом, между прочим, в СП написано.
52 myr4ik07
 
13.06.16
12:51
(51) идей других нету как выйти с данной ситуации?
53 Pistol
 
13.06.16
13:11
(52) Ну, по предварительным прикидкам по комбинаторике, через четыре новых темы, учитывая предыдущие
Проверить считыватель магнитных карт
Подключить считыватель магнитных карт
Подключить считыватель магнитных карт
Ты методом тыка получишь рабочий вариант тупо за счет брутфорса фрагментов кода.
54 myr4ik07
 
13.06.16
13:12
(53) тебе в не в лом было понтоваться и искать сколько я тем создал?
55 Pistol
 
13.06.16
13:12
(54) Неа. В радость.
56 myr4ik07
 
13.06.16
13:13
(53) подсказку бы дал, а не показовал бы свое мастерство сыщика
57 myr4ik07
 
13.06.16
13:13
(55) понимаю, есть и такой тип людей
58 Pistol
 
13.06.16
13:20
(57) Это хорошо, что у тебя с пониманием все в порядк!. Значит и с ридером справишься!
59 myr4ik07
 
13.06.16
14:48
Обычные формы и если значения присвоения пихаю в Реквизит объекта с типом Произвольные, а потом когда вызываю внешнее событие СМК то событие срабатывает, а вот на управляемых формах ни в какую
60 Cyberhawk
 
13.06.16
15:15
(59) В толстом клиенте проверь, будет ли работать...
61 myr4ik07
 
13.06.16
15:23
Может кому то пригодиться,
толстый уф
http://paste1c.ru/XDj
толстый об формы
http://paste1c.ru/J87
предварительно создав Реквизит объекта с типом произвольный