Имя: Пароль:
1C
1С v8
Внешняя компоНента (пишу сам).
, ,
0 St17
 
11.09.14
13:45
Добрый день.
С переходом с штрих-м "Розница" на 1с 8.2 "Розница" перестал корректно работать картридер.
Все возможные драйвера атола и штрих м не пашут.
Картридер специфический идет в комплексе в другим оборудование и замена его повлечет большие расходы. Что не интересно компании.
Задался целью написать dll свою по работе с картридером (Клавиатурный) так как подобный опыт уже был.
Взял VS  и написал dll на С#. В 1с подключил и запустил функцию при открытии формы.
Далее проводим карточку через картридер идет запись в буфер.
По нажатию кнопки в 1с идет получение данных.
Не тот результат который хочу получить (Лишние действия и время). Стремлюсь к получению данных в 1с в процедуру "ВнешнееСобытие (ExternalEvent)" по завершению события (Получению суффикса) в открытой форме обработки 1с.
Не могу понять как инициировать отправку данных в процедуру "ВнешнееСобытие (ExternalEvent)" из dll.

Кто решал такие задачи подскажите куда копать и если можно суть отправки сообщения.
1 Fragster
 
гуру
11.09.14
13:49
в блокнот кардридер что с карты передает? 90% на то,Э что криво настроено оборудование
2 St17
 
11.09.14
14:19
(1)код карты передает
3 DGorgoN
 
11.09.14
14:20
(2) А может его сделать в режиме эмуляции ком. порта? Или не позволяет сам карт-ридер?
4 Apokalipsec
 
11.09.14
14:22
(3) Это не кард ридер не позволяет, это автор его в разрыв клавиатуры пихнул и ждет внешнее событие.
5 St17
 
11.09.14
14:53
(1) там всего 8 переключателей

   1 режим клавиатуры
   2 возврат каретки (Enter)
   3 включение отключения суффикса и префикса.
   4 XT\AT
   5,6,7,8 региональные стандарты (типы раскладки)


(2) пока не получилось. Подключение идет через ps\2.

(3) Вы уверены что у я пихнул картридер в разрыв клавиатуры?
6 Fragster
 
гуру
11.09.14
15:25
(2) а всякие служебные символы типа ;:???
7 Fragster
 
гуру
11.09.14
15:26
(5) включи суффиксы и префиксы, настрой в торговом оборудовании обработку обслуживания под эти суффиксы и префиксы для режима клавиатуры
8 Ёпрст
 
11.09.14
15:28
(5) я уверен, раз ты данные в блокноте видишь
9 Ёпрст
 
11.09.14
15:28
(4) +1

нужно всего лишь заставить картридер работать в эмуляции работы компорта и всё.
10 Ёпрст
 
11.09.14
15:29
и не писать свои вк
11 Ёпрст
 
11.09.14
15:29
(7) как-то все устройства в разрыв клавиатуры.. не айс, имхо
12 Ёпрст
 
11.09.14
15:30
даже с префиксами и суфиксами
13 Fragster
 
гуру
11.09.14
15:39
(11)  айс-айс. нет проблем с дисконнектом по терминалу. работает сразу в нескольких 1сках, просто отлаживаются и т.п.
14 St17
 
11.09.14
15:46
Попробую ответить на ваши вопросы.
Com port это идеальный вариант.
пробовал физически сделать (переходник ком порта).
Дешевые не пошли. Работают дорогие , но они выходят чуть ли не половину стоимости нового комовского картридера.Не вижу смысла.

Эмуляторы пробовал 3-4 шт.Создается виртуальный порт но в 1с -ке тишина. Настройки много раз проверял. Порт слушали доп. по данные идут.
Писали свою прослушку порта. Данные есть остается передать данные в 1с, тут вопрос не знаю как передать данные в внешнее событие 1с.  Какой корявый вариант (эмулятор пишет данные на компорт + слушать его отдельной программой и совать в 1с, много узлов).

Мне просто нуно понять как послать данные в процедуру внешнеесобытие в открытой обработке. Дальше dll на пишем любую.
И честно говоря уже дело принципа как послать сообщение в 1с-ку. Не могу успокоится пока не разберусь.
Знаю что на ИТС-ке лежит исходник на с++. Но доступ получу только в понедельник.
15 Ёпрст
 
11.09.14
15:53
(14) а чего в 1с-ке тишина то ?
События с ком порта приходят ?
В 1с-ине тест проходит ?
16 Ёпрст
 
11.09.14
15:53
если проброс компорта на сервер через рдп, то в свойствах рдп разрешен маппинг компорта ?
17 Ёпрст
 
11.09.14
15:55
(13) дык при восстановлении соединения ком порт не отваливается жешь..
Ну и на вкус и свет, не знаю, мне проще ловить в одном событии, где я точно знаю, откуда и откого прилетело событие и что в нём
18 Fragster
 
гуру
11.09.14
15:56
(17) у нас фискальники нормально отваливаются :) с клавиатурными СШК и СМК проблем нету :)
19 St17
 
11.09.14
16:09
нет rdp-ки. кассовый узел.
тест не проходит. При прослушки порта другим ПО идут данные.
ХЗ что не так , мб эмулятор.
Не суть откуда идет, отловим данные с любого порта, разрыва клавиатуры и.т.д.

У менять только одна проблема не могу понять как отправить данные в 1с. Это вопрос текущей темы темы на форуме!
20 DmitrO
 
11.09.14
16:29
(14)(19) и как же ты пишешь без документации-то..

Интерфейс "1С:Предприятия"

При инициализации объекта компоненты ему передается указатель на интерфейс "1С:Предприятия 8", с помощью которого можно вызывать нижеперечисленные методы. Следует помнить, что эти методы не будут работать на сервере приложений.

ExternalEvent

Описание:

Помещает событие в очередь, записывая источник события, наименование и параметры события. При обработке события эти данные передаются процедуре ОбработкаВнешнегоСобытия(). При вызове метода ExternalEvent() дальнейшая обработка события происходит следующим образом: событие записывается в очередь событий (если очередь полностью занята, событие теряется), затем при отсутствии системных событий из очереди берется первое событие (если очередь не пуста) и запускается процесс обработки внешних событий. Этот процесс повторяется для всех объектов внешних компонент. Таким образом, обработка внешних событий синхронизируется с обработкой системных событий.

Синтаксис:

bool _stdcall ExternalEvent(WCHAR_T* wsSource, WCHAR_T* wsMessage, WCHAR_T* wsData);

Параметры:

wsSource

Тип: WCHAR_T*. Строка с наименованием источника сообщения.

wsMessage

Тип: WCHAR_T*. Строка с наименованием сообщения.

wsData

Тип: WCHAR_T*. Строка c параметрами сообщения.

Возвращаемое значение:

true – событие помещено в очередь;
false – очередь переполнена, обработка событий недоступна или неизвестная ошибка.
21 St17
 
11.09.14
17:35
(20) как видите никак не пишу.
Спасибо за информацию. Мне понятнее стало как реализовать.
Думаю дальше сам разберусь.
Нашел пару примеров на infostart как работать с интерфейсом.
22 Serginio1
 
11.09.14
22:05
Можно обойтись и без ВК используя события
Посмотри
1c 7.7 и ASP.NET
23 Garykom
 
гуру
11.09.14
22:36
(0) Ды вы батенька извращенец для клавиатурного картридера - т.е. который в буфер клавиатуры значения засовывает писать на C# драйвер вместо того чтоб тока средствами 1С обойтись ))

ЗЫ
или я неправильно понял и он в буфер не все пишет или не пишет совсем?
24 ArchLord
 
12.09.14
04:39
(23) Скорее всего под буфером, имеется ввиду некая область памяти, в которой хранятся данные с КР, к буферу обмена он отношения не имеет :)
25 DrZombi
 
гуру
12.09.14
06:28
Автор все сетует на стоимость оборудования.
Но ни разу не видел его собственную стоимость затраченную на эту работу :)
26 St17
 
12.09.14
20:47
(25) Ошибаетесь. Прошу вас не судите меня не зная объемы!

(22) проверим!
27 Garykom
 
гуру
12.09.14
20:50
(26) лучше скажи в блокнот то что он сканирует?
когда режим клавиатуры и префикс/суффикс включены?

просто не понял зачем так сложно все...
28 NS
 
12.09.14
20:54
(18) Если всё правильно сделано - он не может отвалиться.
Ты же в коде можешь его заново подключить, а физически подключение к ком порту отвалиться не может.
29 Serginio1
 
12.09.14
21:06
(26) Посмотри иам кстати есть пример ком порта (правда я его не проверял, но у меня работает на вк )
30 borozavr
 
12.09.14
22:39
Попробуй последний драйвер от Штрих-М версии 8.1, у меня ридеры корректно работают только на нем.
Программист всегда исправляет последнюю ошибку.