Подключение сканера Honeywell в разрыв клавиатуры к обычным формам

1. nicolaj2 6 21.09.21 07:15 Сейчас в теме
В конфигурациях на управляемых формах (УТ 11, Розница и т.п.) есть возможность подключения сканера настроенного в режиме "в разрыв клавиатуры" как на картинке во вложении (1С:Сканеры штрихкода (NativeApi)). Мне удалось так так подключить и в формах программы (например, список номенклатуры, все корректно работает.) . Как перенести этот механизм или что-то подобное в самописную конфигурацию 8.3 написанную на обычных формах полностью с нуля без использования БСП и т.п.. Желательно, подробно по шагам, за это и вознаграждение. Или ссылки где подобное реализовано. Нужно не так как в УТ 10.3 через COM порт. Заранее извиняюсь если что-то коряво написал, мало работал с торговым оборудованием.
Прикрепленные файлы:
Вознаграждение за ответ
Показать полностью
Найденные решения
16. nicolaj2 6 27.09.21 16:20 Сейчас в теме +1 $m
Нашел в интернете такой пример и на его основе написал. Всем спасибо за участие.


Процедура ПриНачалеРаботыСистемы()    
    ПутьКДрайверу = "C:\Program Files (x86)\1C\1C Barcode scanner\8_0_17_3\ScanOPOS.dll";
    Порт = 0; // 0 - в том случае, если сканер подключается в разрезе клавиатуры, иначе необходимо указать номер используемого com-порта
    БитДанных = 8; // возможные значения от 1 до 8 (должно соответствовать настройкам сканера)
    Скорость = 9600; // возможные значения: 110, 300, 600, 1200, 2400, 4800, 9600, 14400, 19200,
                    //38400, 56000, 57600, 115200, 128000, 256000 (должно соответствовать настройкам сканера)
    Суффикс = "13"; // должно соответствовать настройкам сканера
    Попытка
        ЗагрузитьВнешнююКомпоненту(ПутьКДрайверу);
        ОбъектДрайвера = Новый("AddIn.Scanner");
        ОбъектДрайвера.Открыть(1);
        ОбъектДрайвера.ИмяСобытия = "BarCodeValue";
        ОбъектДрайвера.ОчиститьВход();
        ОбъектДрайвера.ОчиститьВыход();
        ОбъектДрайвера.АвтоВыключение = 0;
        ОбъектДрайвера.ПосылкаДанных = 1;
        ОбъектДрайвера.УстройствоВключено = 1;
        ОбъектДрайвера.ЗапрещениеСобытий = 0;
        ОбъектДрайвера.Порт = Порт;
        ОбъектДрайвера.СуффиксСтрока = Суффикс;
        ОбъектДрайвера.СтопСимвол = 13;
        ОбъектДрайвера.БитДанных = БитДанных;
        ОбъектДрайвера.Скорость = Скорость;
        Попытка
            Результат = (ОбъектДрайвера.Занять(1) = 0);
        Исключение
            Результат = Ложь;
        КонецПопытки;
        Если Результат Тогда
            ОбъектДрайвера.УстройствоВключено = 1;
            ОбъектДрайвера.ПосылкаДанных = 1;
            ОбъектДрайвера.ОчиститьВход();
            ОбъектДрайвера.ОчиститьВыход();
        КонецЕсли;    
    Исключение
        Сообщить("Ошибка подключения сканера!");
    КонецПопытки;
КонецПроцедуры
Теперь, при каждом сканировании будет происходить обработка внешнего события, и в процедуре "ОбработкаВнешнегоСобытия" получаем отсканированный штрих код и далее обрабатываем его уже по своему усмотрению.

Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные)
    Если Событие = "BarCodeValue" Тогда
        ШтрихКод = Данные;    
    КонецЕсли;
КонецПроцедуры
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. PhoenixAOD 62 21.09.21 07:25 Сейчас в теме
(1)ну для начала тебе придется написать свою обработку по подключению оборудования, потом снюхать драйвер Ханивел со своей базой, потом запилить поиск по ШК, потом пробовать подключить сей девайс и уже на финише тебе нужно внедрить поиск по ШК во все документы где тебе это потребуется (Реализация, ЧекККМ, Поступление это как минимум).
4. user5300 1010 21.09.21 08:04 Сейчас в теме
Подключаешь сканер как клавиатуру, добавляешь префикс (F7 например)
На форме добавляешь команду (Поиск по штрих коду), задаешь сочетание клавиш (F7)
5. nicolaj2 6 21.09.21 08:30 Сейчас в теме
(2)Я в УТ 11 никаких драйверов конкретно для Ханивел не устанавливал, только воткнeл его в USB, 1С все сама установила, как на картинке. После подключения в формах УТ 11 стало возникать внешнее событие при считывании штрихкода. Мне надо, чтобы в моей самописной конфигурации тоже возникало внешнее событие, дальше я знаю что делать. Варианты с наведением на какое то поле и считывание (F7 и т.п.) или COM порт оставляю на крайний случай.
(4)
6. PhoenixAOD 62 21.09.21 08:32 Сейчас в теме
(5)я тебе про твою нетленку и говорил, по сути найди любую конфу УТ 10.3 и посмотри как там все это реализовано и под себя подгони
7. nicolaj2 6 21.09.21 08:43 Сейчас в теме
Я не хочу переводить сканер в режим com порта (как в УТ 10.3). Интересует именно подключение как в УТ 11(во вложении к теме).Нужен пример кода или ссылки на подобные разработки. Или объяснение почему это невозможно на обычных формах. За это и назначено вознаграждение.
8. anykey_vrn 21.09.21 09:05 Сейчас в теме
(5)Вроде в УТ 10 не обязательно подключать через COM он и в разрыв работает, обычно используется компонента ScanOpos: https://releases.1c.ru/project/ScanOpos

Методы для подключения и использования оборудования можно посмотреть вот в этой теме:
https://its.1c.ru/db/metod8dev#content:4829:hdoc:chapter237
9. nicolaj2 6 21.09.21 10:32 Сейчас в теме
(8) В ScanOpos в УТ 10.3 не нашел в разрыв клавиатуры, там только COM. В Атолле есть, но там драйвер платный.
11. anykey_vrn 21.09.21 10:52 Сейчас в теме
(9)Странно, посмотрел, действительно нет. Но есть ощущение что что то упускаю, так как припоминаю что подключал к 10 сканер в разрыв.
12. anykey_vrn 21.09.21 10:56 Сейчас в теме
(9)Как вариант использовать Атоловский драйвер, если ничего не путаю ДТО 6 версии бесплатные.
14. Xershi 1484 21.09.21 18:23 Сейчас в теме
(1) эта штука что делает, копирует на ПК клиент драйвер (ВК) и затем в формах обертка с работой компоненты.
С нуля работы будет много!
3. Andrekaa 21.09.21 07:57 Сейчас в теме
берешь РТ1 и оттуда выковыриваешь работу с сканером (это через com).
10. nicolaj2 6 21.09.21 10:37 Сейчас в теме
13. starik-2005 3036 21.09.21 16:10 Сейчас в теме
(1)
1. Копипастите из любой конфы на БСП общий макет с ВК для сканера (Native).
2. В модуле приложения (или какой там модуль запускается в неуправляемых формых при начале работы системы) прописываете глобальную переменную для ВК, подключаете ВК из макета.
3. В формах, в которых должны обрабатываться ШК, указываете обработчик внешнего события, в который будут лететь ШК.
4. Для пущей красоты форму с параметрами сделайте, в которую то, что компонента возвращает.

ВК в части работы с клавиатурой в общем-то проста - задается устройство, список устройств в ХМЛ, вываливающейся по какой-то функции этой ВК. Накатываете параметры, потом ВК.Подключить() - все.
15. nicolaj2 6 23.09.21 05:27 Сейчас в теме
Буду пробовать по этому пути, как получится выложу код.
16. nicolaj2 6 27.09.21 16:20 Сейчас в теме +1 $m
Нашел в интернете такой пример и на его основе написал. Всем спасибо за участие.


Процедура ПриНачалеРаботыСистемы()    
    ПутьКДрайверу = "C:\Program Files (x86)\1C\1C Barcode scanner\8_0_17_3\ScanOPOS.dll";
    Порт = 0; // 0 - в том случае, если сканер подключается в разрезе клавиатуры, иначе необходимо указать номер используемого com-порта
    БитДанных = 8; // возможные значения от 1 до 8 (должно соответствовать настройкам сканера)
    Скорость = 9600; // возможные значения: 110, 300, 600, 1200, 2400, 4800, 9600, 14400, 19200,
                    //38400, 56000, 57600, 115200, 128000, 256000 (должно соответствовать настройкам сканера)
    Суффикс = "13"; // должно соответствовать настройкам сканера
    Попытка
        ЗагрузитьВнешнююКомпоненту(ПутьКДрайверу);
        ОбъектДрайвера = Новый("AddIn.Scanner");
        ОбъектДрайвера.Открыть(1);
        ОбъектДрайвера.ИмяСобытия = "BarCodeValue";
        ОбъектДрайвера.ОчиститьВход();
        ОбъектДрайвера.ОчиститьВыход();
        ОбъектДрайвера.АвтоВыключение = 0;
        ОбъектДрайвера.ПосылкаДанных = 1;
        ОбъектДрайвера.УстройствоВключено = 1;
        ОбъектДрайвера.ЗапрещениеСобытий = 0;
        ОбъектДрайвера.Порт = Порт;
        ОбъектДрайвера.СуффиксСтрока = Суффикс;
        ОбъектДрайвера.СтопСимвол = 13;
        ОбъектДрайвера.БитДанных = БитДанных;
        ОбъектДрайвера.Скорость = Скорость;
        Попытка
            Результат = (ОбъектДрайвера.Занять(1) = 0);
        Исключение
            Результат = Ложь;
        КонецПопытки;
        Если Результат Тогда
            ОбъектДрайвера.УстройствоВключено = 1;
            ОбъектДрайвера.ПосылкаДанных = 1;
            ОбъектДрайвера.ОчиститьВход();
            ОбъектДрайвера.ОчиститьВыход();
        КонецЕсли;    
    Исключение
        Сообщить("Ошибка подключения сканера!");
    КонецПопытки;
КонецПроцедуры
Теперь, при каждом сканировании будет происходить обработка внешнего события, и в процедуре "ОбработкаВнешнегоСобытия" получаем отсканированный штрих код и далее обрабатываем его уже по своему усмотрению.

Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные)
    Если Событие = "BarCodeValue" Тогда
        ШтрихКод = Данные;    
    КонецЕсли;
КонецПроцедуры
Показать
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот