Перехват сканирования Android Native API

10.11.20

Разработка - Разработка внешних компонент

Native компонента для перехвата сканирования шк и передачу в мобильную 1С.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование SM По подписке [?] Купить один файл
Перехват сканирования Android Native API: Новая версия
.rar 3,31Mb
101
101
1 SM
Скачать Купить за 1 850 руб.
Перехват сканирование Android Native API:
.zip 2,15Mb
18
18
1 SM
Скачать Купить за 1 850 руб.

Здравствуйте, коллеги.

В 2017 году столкнулся с задачей передачи данных сканирования со сканера ТСД в мобильную платформу 1С. Пришлось начать изучать java  программирование под андроид и благодаря теме //infostart.ru/public/587908/ (в этой теме пример готовой компоненты, но под мое по не подошло) и ее предшественнице смог реализовать свою компоненту, ссылку на которую можете найти в комментариях к этой (//infostart.ru/public/587908) теме (работает до версии мобильной платформы 8.3.11). Однако стабильность работы старых мобильных платформ 1с оставляла желать лучшего  и на нашем производстве уже достаточно большой функционал перекочевал на ТСД ,а частые ошибки о крушении мобильной базы стали доставать ... К сожалению, на конференцию Инфостарт 2018 я не поехал, подумал, что там будет  как на других IT конференциях - кучу информации обо всем кроме программирования, но я ошибался ... Где то с полгода назад я наткнулся на тему //infostart.ru/public/987286/ в которой описывался путь создания  Native  компоненты под мобильную платформу и уже тогда я начал задуматься о изучении данной технологии, но руки так и не доходили. Данная технология позволяет работать с мобильной платформой с 8.3.8 и выше, насколько я понял.

Сегодня хочу предоставить вам в помощь ту компоненту, которая у меня получилась, она подходит  под ряд тсд :

  1. honeywell scanpal eda50k( таких у нас 2)
  2. mobilebase ds5 (основной тсд для работы )
  3. CipherLab 9700(таких 2 , на них очень хороший сканер шк для сканирования на 5 и более метра ) точную версию не помню в документации к тсд написано 97XX 
  4. AТОЛ Smart.Droid (таких нет) -пользователь с Инфостарта просил добавить в старую версию компоненты , как работает на 100% не знаю, но вроде не жаловался. 

Теперь перечислю интенты и поля со строковыми данными, которые отлавливает компонента:

  • Интент : scan.rcv.message  Поле:data - это под honeywell scanpal eda50k, но на нем нужно настроить такие интенты 
  • Интент : com.cipherlab.barcodebaseapi.GET_DATA  Поле:BarcodeData - это чиперлаб по моему это по умолчанию событие и в поле BarcodeData не строка, а байты, которые я разбирал с помощью драйвера и инструкции по чиперлабам, превращая их в строку 
  • Интент : app.dsic.barcodetray.BARCODE_BR_DECODING_DATA  Поле:EXTRA_BARCODE_DECODED_DATA это под DS5
  • Интент : DATA_SCAN  Поле:com.hht.emdk.datawedge.data_string это под AТОЛ Smart.Droid.

Все интенты вшиты гвоздями статически)))
Извините за такой подход, писал для себя. 

Теперь кратко пробежимся по работе компоненты.

Компонента состоит из .so файлов - библиотека на C++ для работы с платформами 1с и apk файл, в котором вшита логика работы с андроид. 

Вся эта прелесть находится в zip архиве в таком варианте и должна попасть в мобильную конфигурацию 1с. 

Имя подключения компоненты :
AddInNativeBEN.

Свойства компоненты:
IsEnabled(Включен)(bool)-показывает подключено ли событие отлова сканирования шк . 

Методы компоненты:

  • StartGetScan(НачатьПолучатьСканирование)(void)-начать получать данные со сканера ТСД. Вызывает внешнее событие при получении данных. 
  • StopGetScan(ОстановитьПолучениеСканирования)(void)-остановить получение данных со сканера ТСД .
  • GetDataTSD(ПолучитьДанныеОТСД)(String)-получает данных о серийном номере устройства модели и версии андроида работает как функция 
  • GetDataTSDevent(ПолучитьДанныеОТСДсобытие)-получает данных о серийном номере устройства модели и версии андроида. Вызывает внешнее событие
  • GetDataTSD и GetDataTSDevent возвращает строку вида СерийныйНомер$Модель$ВерсияАдроидаEndDescription.

Данные внешнего события , которое инициализирует платформа:
Источник: ru.MyDLLForJava.CallAndWorkJava       Событие:BarcodeDecodeData                Данные: штрихкод

Источник: ru.MyDLLForJava.CallAndWorkJava       Событие:DataTSD                Данные: СерийныйНомер$Модель$ВерсияАдроидаEndDescription

Хочу заметить, что сам я конечно не проверял , но по описанию Native  компонента живет только на клиенте.

Приведу пример кода из 1с :

Код формы рабочей области . т.е той формы, которая живет все время работы приложения.

&НаКлиенте
Перем Компонента;
&НаКлиенте
Процедура ПриОткрытии(Отказ)
    Попытка
        ПодключитьВнешнююКомпоненту("ОбщийМакет.AddIn", "LibData", ТипВнешнейКомпоненты.Native);
        Компонента = Новый("AddIn.LibData.AddInNativeBEN");
        Компонента.StartGetScan();
    Исключение
        Сообщить("драйвер сканирования не смог создать подключения-- сканирование на текущем устройстве работать не будет");
    КонецПопытки;
    //28.04.2020  устаревший метод заменен на работу Native  компоненты
    //ПодключитьОбработчикОжидания("УстановкаДрайверов",0.1,Истина);
    //
    УстановкаПервоначальныхДанныхОТСД();
КонецПроцедуры

Далее подписаться на внешнее событие можно где угодно, но я подписался в модуле приложения:

Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные)
    МодульМобильныхДивайсовКлиент.ОбработчикВнешнихСобытийМобильнойКомпоненты(Источник, Событие, Данные);
КонецПроцедуры

Код в модуле мобильный девайсов:

&НаКлиенте
Процедура  ОбработчикВнешнихСобытийМобильнойКомпоненты(Источник, Событие, Данные)Экспорт 
    Если Событие="BarcodeDecodeData" тогда 
            ШК=Данные;
            Оповестить("ОбработчикШтрихКода",ШК,"ОбработчикШтрихКода");
    КонецЕсли;
КонецПроцедуры

В принципе можно было сделать во всех формах подписку на внешнее событие и не использовать оповещения, но механизм оповещения был написан для старой версии компоненты , и что бы не переписывать всю мобильную конфигурацию , я воспользовался таким методом .

Прошу обратить внимание на этот код.

&НаКлиенте
Перем Компонента;

Мы объявляем компоненту  как глобальную переменную в форме , что бы сборщик мусора видел, что на нее есть указатель ,пока форма открыта нам будут приходить сообщения, но как только форма закроется указатель на нее исчезнет и сборщик мусора удалит компоненту из памяти, автоматические отработает метод StopGetScan(); и события перестанут приходить. 

Сборщик мусора - понятие из таких языков как С++,С# и т.д если интересно почитайте. 

Если я что-то написал неправильно - пишите, рад быть  просвещенным. 

Данная компонента протестирована на мобильной платформе 8.3.10.84, а так же 8.3.15.105 версия андроида 4.4.

Примечание: на  8.3.10.84 при первом запуске есть ошибка связанная скорее всего с неправильной последовательность записи и запуска компоненты. После получения ошибки запускаю еще раз и все отлично работает, даже после перезапуска базы. 

 

 

 

02.07.2020 наконец то добрался до модернизации компоненты, как обещал  сделал ее более универсальной -

появился новый метод StartMyGetScan("ИмяСобытия","ИмяПолеСоСтроковымиДаннымиШтрихКода").

StartMyGetScan останавливается тем же методом что и  StartGetScan -StopGetScan.

Пример использования:

ПодключитьВнешнююКомпоненту("ОбщийМакет.AddIn", "LibData", ТипВнешнейКомпоненты.Native);
Компонента = Новый("AddIn.LibData.AddInNativeBEN");
Компонента.StartMyGetScan("app.dsic.barcodetray.BARCODE_BR_DECODING_DATA","EXTRA_BARCODE_DECODED_DATA");
//Компонента.StartGetScan();
Компонента.StartGetKeyEvent();

Если кто то обратил внимание, так же появился один не описанный новый метод StartGetKeyEvent() - этот метод начинает отлавливать сообщения нажатия физической клавиатуры на ТСД, если она имеется, но он не работает без установки апк из нового архива.

Конечно к этому методу идет второй в паре StopGetKeyEvent()- он останавливает передачу нажатия клавиатуры в 1с.

Событие которое вызывается в 1с после нажатия клавиатуры "KeyEventAndroid" источник тот же что и у события штрих-кода.

Если кому то все таки понадобится отлавливать события нажатия клавиш , то замечу, что после установки апк из архива на ТСД , в специальных возможностях его необходимо включить после установки он носит имя "getKeyboard".

Источник идеи перехвата клавиатуры : //infostart.ru/public/1039819/

 

10.11.2020

Для тех  у кого ТСД M3 Mobile SL10, SL10К - один из пользователей , попросил добавить информацию в статью:

Событие ШК-com.android.server.scannerservice.broadcast;

Поле с данным ШК-m3scannerdata;

Компонента.StartMyGetScan("com.android.server.scannerservice.broadcast","m3scannerdata")

 

Native API сканирование мобильная платформа внешнее событие

См. также

Мобильная разработка Сканер штрих-кода Терминал сбора данных Управляемые формы Мобильная платформа 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Сбор заказов, инвентаризация, проверка ценников, просмотр полной информации об остатках и ценах со смартфона Онлайн - все это содержит в себе решение 1С "Штрихкод-информер" (штрих-код чекер). Отправка данных со смартфона выполняется либо напрямую в открытую форму документа, отсканировав QR-код, либо в общую корзину учетной системы, не подходя к компьютеру. Кассир или оператор сможет просмотреть список присланных данных и загрузить в любую форму, поддерживающую работу с ТСД. Для работы с мобильным приложением требуется опубликовать HTTP-сервис из поставляемого расширения.

2880 руб.

03.12.2018    56957    179    103    

169

SALE! 25%

Мобильная разработка Мессенджеры и боты Платформа 1С v8.3 1С:Конвертация данных Платные (руб)

Теперь создать telegram-бота - элементарно. Достаточно просто нарисовать блок-схему телеграм-бота, и он сразу заработает. Это возможно при использовании Графического конструктора телеграм-ботов. Это единственный конструктор ботов для telegram, чье качество и функционал подтверждены фирмой 1С, есть сертификат 1С:Совместимо. Расширение в интерактивном режиме, с помощью блок-схем, позволяет с минимальными трудозатратами создать телеграм-ботов в любой конфигурации, работающей на платформе «1С:Предприятие 8.3».

13200 9900 руб.

27.12.2021    35647    94    161    

190

1С-программирование Мобильная разработка Программист Стажер Платные (руб)

Данный онлайн-курс предусматривает изучение базовых принципов создания приложений для операционной системы Android, работающих на мобильной платформе “1С:Предприятие”. Курс предназначен для тех, кто уже имеет определенные навыки конфигурирования и программирования в системе “1С:Предприятие” при разработке прикладных решений для “обычных” компьютеров, но пока ещё не занимался разработкой 1С-приложений, предназначенных для работы на мобильных устройствах.

12900 руб.

08.06.2023    7541    4    0    

49

Сканер штрих-кода Терминал сбора данных Мобильная разработка Монитор заказов Оптовая торговля Розничная торговля Ценообразование, анализ цен Программист Пользователь Платформа 1С v8.3 Мобильная платформа 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)

Простой мобильный ТСД (терминал сбора данных) сканер для 1С для смартфонов на iOS и Android, не требующий сложных настроек и установки дополнительных программ. Обмен между Вашей 1С и мобильным приложением осуществляется через облачный сервис и расширение конфигурации. Работает с конфигурациями УТ 11, ERP, КА2, Розница 2, Розница 3, УНФ 1.6, УНФ 3.0. Полнофункциональный демо-доступ для своей конфигурации можно запросить в настройках мобильного приложения - все необходимое придет на почту автоматически.

2000 руб.

22.04.2019    94169    545    187    

311

Разработка внешних компонент POS терминал Рабочее место Розничная торговля Программист Пользователь Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Рестораны, кафе и фаст-фуд Реклама, PR и маркетинг Управленческий учет Платные (руб)

Медиадисплей покупателя может отображать текущую покупку на кассовом месте, показывать видеорекламу, баннеры, во время простоя разворачивать рекламу на весь экран. Экран можно использовать в качестве графического меню-борда в кафе и видеовывески. В качестве устройства отображения можно использовать Android-планшеты, смарт-телевизоры с Android, мониторы или проекторы под управлением Windows или Linux-компьютера. Linux-версия успешно запускается на одноплатных компьютерах Raspberri Pi и Orange Pi. Настраивается ЛЮБОЙ ДИЗАЙН экрана при помощи встроенного графического редактора! Решение можно масштабировать от одного экрана до тысяч экранов с централизованным управлением.

15000 руб.

30.05.2017    52897    7    69    

43

Разработка внешних компонент Программист Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Внешняя компонента в виде библиотеки (.dll файл), позволяющая посылать команды и получать ответы по протоколу WebSocket из 1С. Компонента работает только на стороне "клиента".

4440 руб.

22.06.2020    17360    16    33    

21

Разработка внешних компонент Программист Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 Платные (руб)

Внешняя компонента позволяет работать c TWAIN-совместимым оборудованием (сканерами, камерами) . Полностью совместима со стандартной TWAIN-компонентой из БСП и может применяться как ее замена без изменения вызовов, при этом может работать с 64-разрядной платформой, а так же имеет расширенную функциональность, например, сохранение результата непосредственно в PDF без использования сторонних утилит. Прекрасно работает на сервере, тонком клиенте и веб-клиенте (проверена работа в браузерах Google Chrome, Mozilla Firefox и Microsoft Internet Explorer).

3000 руб.

12.05.2020    27094    135    98    

87
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. CyberCerber 864 29.04.20 15:54 Сейчас в теме
Круто, жалко, что работает только с определенными моделями. Когда уже сделают либо универсальную компоненту, либо что-то на уровне платформы, например, принятие броадкастов...
Почему остановились на C++, а не Java?
2. starik-2005 3060 29.04.20 16:05 Сейчас в теме
(1)
Когда уже сделают либо универсальную компоненту, либо что-то на уровне платформы, например, принятие броадкастов...
Так есть же БПО для мобильных - там полно компонент. Правда у меня на 8.3.15.1830 с IIS не завелось, а вот с Apache отлично взлетело - на ТСД сканер просто в настройках прописал на keyboard event (или как-то так - нет под рукой).
3. CyberCerber 864 29.04.20 16:06 Сейчас в теме
(2) Хм, в первый раз слышу, спасибо, надо будет посмотреть.
4. starik-2005 3060 29.04.20 16:08 Сейчас в теме
(3) посмотрите. В любой типовой на базе БСП современной конфигурации есть компонента InputDevice, которая запилена для всех платформ (сохраните общий макет в zip и посмотрите, что там внутри).
8. evgeny43 32 30.04.20 00:15 Сейчас в теме
(4)Хм, я давно в БСП не лазил, в 2017 году наверное еще не было реализовано , т.к я не нашел . Спасибо посмотрю.
5. KAV2 156 29.04.20 17:42 Сейчас в теме
(2) Как одна из причин по чему может не работать: под IIS по дефолту не настроены MIME типы для линуксовых\андроидных файлов типа *.so и *.apk.

При установке внешней компоненты на андроиде, файлы внешней компоненты передаются вебсервером и в этот момент возникает затык.

Если их добавить в MIME типы сервера, то начинает работать.
6. starik-2005 3060 29.04.20 18:10 Сейчас в теме
(5)
Если их добавить в MIME типы сервера, то начинает работать.
Вполне может быть. Избалован вендой, хочу, чтобы все автоматически работало )))
16. Const885 12.06.20 19:09 Сейчас в теме
Загрузил тестовую конфигурацию при запуске приложения ошибка {МодульУправляемогоПриложения(6)}: Тип не определен (AddIn.rumalutilities.MALutilities)
глНативКомпонента = Новый("AddIn.rumalutilities.MALutilities");
Что не так? И возможно ли выложить исходники на c++?
17. unreal123 31.07.20 12:28 Сейчас в теме
(16)
Возникает точно такая же ошибка, как у автора в пункте 16
Загрузил тестовую конфигурацию при запуске приложения ошибка {МодульУправляемогоПриложения(6)}: Тип не определен (AddIn.rumalutilities.MALutilities)
глНативКомпонента = Новый("AddIn.rumalutilities.MALutilities"); ?
13. CaesarKR 45 05.05.20 14:24 Сейчас в теме
(2) При использовании компоненты 1С столкнулись со следующей проблемой при подключении компоненты сканера штрихкодов от 1С мобильная платформа не реагирует на нажатие аппаратной клавиатуры ТСД. Обращался по этому вопросу на партнерский форум. Ниже ответ представителя 1С

Добрый день.

Да, в текущей версии драйвера, сканер при подключении перехватывает все клавиатурные события и ожидает нажатия клавиши Enter для завершения ввода и передачи данных внешним событием в 1С. Это может приводить к подобным затруднениям, поскольку изначально текущая версия сканера разрабатывалась в расчете на сканеры подключаемые как bluetooth-клавиатура, software-клавиатура, очевидно, так же передает данные в приложение другим способом, поэтому, случай с встроенной клавиатурой не попал в текущую реализацию сканера. Поддержка такого режима работы потребует реализации механизма подобного на механизм используемый в Windows, когда необходимо определять пришло ли сообщение от автоматического оборудования (сканера) или от живого пользователя. В настоящей редакции драйвера это не может быть реализовано. Но мы можем записать это как пожелание и реализовать в следующей редакции (10-ой) драйвера.
33. Greek26rusa 2 20.11.20 12:43 Сейчас в теме
(2)там нет кучи(и ничего не заработало(
34. starik-2005 3060 20.11.20 15:43 Сейчас в теме
(33) и на сколько новая БПО? Она во всех торговых приложениях с гуглмаркета на базе платформы 1С есть. На старых девайсах работает (у меня атоловский терминал - даже RFID-палку подтыкал через эту компоненту), на новом телефоне - не работало, ругалось на имя компоненты, но есть мнение, что это можно только через сборщик apk засунуть по-человечески в приложение, ибо все приложения из магазина работают с этой компонентой (и не только) и на моем телефоне (ту же палке, подключенную по BT пробовали - все ловит).
35. Greek26rusa 2 20.11.20 15:49 Сейчас в теме
(34)Может я что то не так сделаk? я скачал 1С:Библиотека подключаемого оборудования для мобильных приложений
распоковал опубликовал(подключился через веб сервис) добавил драйвер подкючился с тсд но ничего не заработало
36. starik-2005 3060 20.11.20 19:42 Сейчас в теме
(35)
добавил драйвер подкючился с тсд но ничего не заработало
Установили ВК методом платформы? Подключили ВК методом платформы? Передали параметры и инициализировали ВК соответствующим методом?

Или просто засунули компоненту в макет и ждете, что что-то заработает? Читайте документацию.
37. Greek26rusa 2 22.11.20 11:40 Сейчас в теме
(36)Ну поделитесь тогда как сделать или дайте ссылку на документацию.Говорить все могут.Как дела доходит подсказать или показать.Смотрим с высока
43. user817897 2 01.02.21 18:29 Сейчас в теме
(2)
Правда у меня на 8.3.15.1830 с IIS не завелось, а вот с Apache отлично взлетело

Подскажите пожалуйста,с IIS у вас была какая проблема? Просто не могло подключить внешнюю компоненту?
44. starik-2005 3060 01.02.21 22:41 Сейчас в теме
(43) в иисе нужно прописать MIME-тип, есть где-то на просторах.

Вообще, у меня на телефоне так и не заработала эта компонента, а на атоловском ТСД работает без проблем.
45. user817897 2 01.02.21 23:18 Сейчас в теме
(44) очень странно... я все типы прописал,их там штук 6. Так и не вылетело.
46. user817897 2 01.02.21 23:18 Сейчас в теме
(44)может есть ещё какие варианты?
7. evgeny43 32 30.04.20 00:11 Сейчас в теме
(1)Попозже сделаю более универсальной , просто другой работы полно, уже время поджимало, достаточно добавить передачу 2 укх строковых параметров - наименование интента и поля со строковыми данными шк . Однако под чипер лаб такое б не прокатило , т.к для него я вшивал его драйвер в проект апк.
Ну я использую Java для реализации функционала андроид , а C ++ как средство передачи данных в 1с . Первый вариант компоненты был простой - чисто на Java , до версии платформы 8.3.12 1с-ка на прямую могла принимать броадкаст. Для платформы 8.3.12 и выше, как вариант разработчики 1с предложили Native компоненту .
Если у вас есть какое либо предложение как напряму с Java связаться с 1с, я был бы рад услышать , меньше кода меньше проблем))))
9. CyberCerber 864 30.04.20 11:04 Сейчас в теме
(7) Да нет, это мое незнание вопроса ВК для МП. Когда читал, видел, что для Android можно использовать Java. Думал, полностью. Сейчас еще раз изучил, только C++ и Java сразу. Жалко, конечно.
12. CaesarKR 45 05.05.20 14:18 Сейчас в теме
(1) такая компонента давно есть.
Внешняя компонента для широковещательных сообщений (broadcasts) и буфера обмена (clipboard) в ОС Андроид
Пользовался неоднократно на разных сканерах.
Кстати, сама платформа тоже может получать широковещательные сообщения без каких либо компонент, достаточно отредактировать permissions.xml. Подробнее тут
14. evgeny43 32 06.05.20 10:11 Сейчас в теме
(12)Действительно есть, но проблема в том, что мы не используем готовое апк приложение , т.к интернета нет у тсд , только локальная сеть и обновлять приложение становиться проблематично, поэтому пользуемся платформой + загружаемое в нее мобильное приложение , очень удобно для быстрых обновлений . Следовательно править манифест не представляется возможным.
Однако недавно я наткнулся на ПО, которое выложили за 5 дней до моего , и похоже оно работает так же, однако более универсально , т.к события и поля которые отлавливаются можно передать из 1с. (https://infostart.ru/public/1224310/) Но к сожалению на момент начала разработки , я ничего найти подобного не смог((( .
Если знаете как править манифест для мобильной платформы без сборки готового решения в апк, я был бы признателен если вы поделитесь со мной знаниями.
15. CaesarKR 45 11.05.20 18:27 Сейчас в теме
(14) как редактировать манифест собранного приложения не знаю. У нас тоже ТСД без доступа к интернет. Собранные приложения размещаю на локальном веб-сервере, откуда они и загружаются на ТСД.
За ссылку отдельное спасибо. Жаль что её не было полгода назад. Реализовал точно также)))
10. amrec 29 02.05.20 09:26 Сейчас в теме
Вы не могли бы пояснить как настроить Интент на примере eda50k? Включил в настройках dataIntent. action прописал scan.rcv.message, но не работает...
11. amrec 29 02.05.20 10:47 Сейчас в теме
Вы не могли бы пояснить как настроить Интент на примере eda50k? Включил в настройках dataIntent. action прописал scan.rcv.message, но не работает...

(10)

Разобрался, нужно было только action заполнять и все
56. Greek26rusa 2 22.11.21 07:08 Сейчас в теме
(11)Можете показать как заполняли? в action=scan.rcv.message:? больше ничего не настраивали?
18. Дейл 9 02.09.20 14:19 Сейчас в теме
Спасибо тебе умный человек за данное произведение искусства.
Honeywell EDA51-1 Android 8.1.0 Компонента просто взлетела и начала правильно работать так как надо.
19. evgeny43 32 02.09.20 14:29 Сейчас в теме
39. Greek26rusa 2 22.11.20 11:49 Сейчас в теме
(18)Можешь подсказать как сделал? я пробовал не получилось(
54. Greek26rusa 2 04.06.21 00:50 Сейчас в теме
(18)Подскажите делали ли вы дополнительные настройки самого тсд? или просто прописали
ПодключитьВнешнююКомпоненту("ОбщийМакет.AddIn", "LibData", ТипВнешнейКомпоненты.Native);
		Компонента = Новый("AddIn.LibData.AddInNativeBEN");
	
   		Компонента.StartMyGetScan("scan.rcv.message","data");

		Компонента.StartGetKeyEvent();


и все работало
57. evgeny43 32 27.11.21 08:25 Сейчас в теме
(54) нет, этого не достаточно . Нужно настроить сам тсд в начале . поставить посылать интенты вместо разрыва клавиатуры , а потом узнать в настройках какой интент приходит и в каком поле шк .
20. user905361 22.09.20 12:40 Сейчас в теме
Установил на Atol Smart Touch работает несколько месяцев уже.
21. evgeny43 32 22.09.20 15:04 Сейчас в теме
(20)Ограничений по времени нет
38. Greek26rusa 2 22.11.20 11:48 Сейчас в теме
(20)Подскажи как сделал? я пробовал( не получилось
22. vikt_soulfly@mail.ru 14.10.20 15:00 Сейчас в теме
Добрый день, подскажите пожалуйста, у нас есть ТСД urovo DT30, взлетит ли ваша компонента, если на ТСД настроить интент или в компоненте как-то жестко указан перечень считывателей, с которыми она работает?
23. evgeny43 32 14.10.20 15:14 Сейчас в теме
(22)Последняя версия компоненты должна взлететь, если только в вашем тсд ни как в чиперлабе , считать шк можно только их драйвером, в текущей компоненте работа с чиперлабом реализована , но другие подобные тсд не поддерживаются, с другой стороны, все тсд которые поддерживают передачу строки через интент должны работать.
Почитайте статью ниже слов : 02.07.2020 наконец то добрался до модернизации компоненты, как обещал сделал ее более универсальной -
24. user1397605 02.11.20 09:20 Сейчас в теме
Здравствуйте, скачал вашу компоненту. Есть опубликованная на веб-сервере база, в расширении думаю прописать обращение к компоненте, но вот как ее подключить к мобильному клиенту?
25. evgeny43 32 02.11.20 10:52 Сейчас в теме
(24)Не до конца понял вопроса. Я создал в решение общий макет типа "Внешняя компонента" , а потом просто методом "ПодключитьВнешнююКомпоненту" подключаю ее. (в макет я запихнул zip архив )
26. user1397605 02.11.20 17:11 Сейчас в теме
(25)Я имею ввиду, что у нас не мобильная конфигурация, а мы подключаемся к базе через мобильный клиент.
Как прописать перехват нажатия кнопки в этом случае?
27. evgeny43 32 02.11.20 17:52 Сейчас в теме
(26)Не пробовал работать с мобильным клиентом, однако думаю его клиентская часть все равно находиться на мобильном устройстве, если общий макет не канает , попробуйте передать двоичные данные в исполняемую процедуру на клиенте и подключить ее там. Если это не работает, то скорее всего мобильный клиент просто не поддерживает внешние события .
28. user1397605 03.11.20 14:04 Сейчас в теме
(27)Компонента на ТСД через попытку подключается, но я ума не могу дать как перехватить нажатие кнопки для сканирования. Может сможешь помочь? А то в мобильных платформах я 0, а техподдержка 1С на вопрос сканирования в мобильном клиенте вообще не ответила.
Нужно чтобы встроенный сканер работал в нескольких документах, для примера возьму "ПриобретениеТоваровУслуг".
Установил apk из архива, но не могу внешнее событие отловить...
29. evgeny43 32 03.11.20 14:40 Сейчас в теме
(28)Какой ТСД?
ReservScanTSD.apk его еще включить необходимо в спец. возможностях , и он отлавливает нажатие только физической клавиатуры , а не программной .
если тсд шлёт интенты , то и нет необходимости перехватывать нажатие кнопки, а необходимо перехватить получение самого шк, правд для этого надо настроить сам тсд на его отправку.
30. babybu 29 05.11.20 16:18 Сейчас в теме
Внесу свою лепту - думаю, кому-нибудь пригодится - настройки для M3 Mobile SL10, SL10К на Android для данной компоненты:
Компонента.StartMyGetScan("com.android.server.scannerservice.broadcast","m3scannerdata")
сам action прописан в программе ScanEmul, а вот второго поля в документации нигде нет...
проверено на рабочем терминале - работает - сам долго искал решение, всю голову сломал.
Может автор внесет в список поддерживаемых терминалов этой компонентой.
user1150141; Topmuk; Larkin; +3 Ответить
42. Larkin 396 13.01.21 01:05 Сейчас в теме
(30) Люто плюсую!!!
Спас проект!!!
59. Topmuk 2 01.06.22 14:08 Сейчас в теме
(30)
ому-нибудь пригодится - настройки для M3 Mobile SL10, SL10К на Android для данной компоненты:
Компонента.StartMyGetScan("com.android.ser


модель ТСД: m3 mobile us20w

В приложении ScanEmul
intent Action, такой же "com.android.server.scannerservice.broadcast"
intent Extra Data "m3scannerdata"

У меня Компонента.IsEnabled выдает ложь,
и обработчик ВнешнееСобытие формы не срабатывает при считывании ШтрихКода
Результат = ПодключитьВнешнююКомпоненту("ОбщийМакет.AddIn", "LibData");
Компонента = Новый("AddIn.LibData.AddInNativeBEN");
Компонента.StartMyGetScan("com.android.server.scannerservice.broadcast", "m3scannerdata");


Компонента.IsEnabled = Истина, если подключаю так:
и обработчик ВнешнееСобытие формы так же не срабатывает при считывании ШтрихКода
Результат = ПодключитьВнешнююКомпоненту("ОбщийМакет.AddIn", "LibData");
Компонента = Новый("AddIn.LibData.AddInNativeBEN");
Компонента.StartGetScan();



(в текстовое поле все читается, но событие не поймать)
Подскажите, может надо в настройках ScanEmul шаманить?
73. user1150141 29.11.22 15:53 Сейчас в теме
(30) Спасибо! Выручил! m3scannerdata вот что я искал для моего ТСД.

Настраивал сканирование в драйвере 1с:Сканер штрихкода (NativeApi)
Настройки справочник подключаемое оборудование. Вдруг кому пригодится.
31. user1397605 10.11.20 17:14 Сейчас в теме
Продолжил работу с внешней компонентой.
ПодключитьВнешнююКомпоненту("AddIn", "LibData", ТипВнешнейКомпоненты.Native) - Истина
Компонента = Новый("AddIn.LibData.AddInNativeBEN") - Новый("AddIn.LibData.AddInNativeBEN") {(1)}: Тип не определен (AddIn.LibData.AddInNativeBEN)
В чем может быть проблема?
32. evgeny43 32 10.11.20 17:47 Сейчас в теме
(31) не видит класс, проверьте правильно ли вы добавили внешнюю компоненту в конфигурацию - это должен быть zip архив с so файлами ,apk, манифеста
41. Greek26rusa 2 11.12.20 21:26 Сейчас в теме
AТОЛ Smart.Droid
Все делается согласно инструкции
Но работать не будет нужно просто включить встроенное приложение
scanwedge(может кому то и поможет)
47. amyd 94 18.03.21 15:17 Сейчас в теме
TSD Symbol (Zebra) модель MC92NO - полет нормальный!!
48. lion-killer 23 21.05.21 10:56 Сейчас в теме
Возможно ли собрать компоненту под ARM64?
49. evgeny43 32 21.05.21 12:19 Сейчас в теме
(48)Возможно , надо смотреть. сейчас пока нет времени
50. lion-killer 23 21.05.21 12:58 Сейчас в теме
Ок, буду ждать вашего ответа.
Хочу опубликовать приложение на Google Play (распространять обновленный apk среди работников склада, а потом пытаться с ними его установить - то еще удовольствие), а там требуется в обязательном порядке платформа ARM64. И она-то как раз по умолчанию и устанавливается на все мои ТСД. В результате приложение работает, а компонента сканирования - нет.
Как вариант - поделитесь исходниками - буду осваивать разработку под Android )))
51. evgeny43 32 21.05.21 13:38 Сейчас в теме
(50)там 2 языка программирования java + C/C++ ; скорее всего проблемы возникнут именно с часть на С .
52. evgeny43 32 21.05.21 13:39 Сейчас в теме
53. evgeny43 32 21.05.21 13:45 Сейчас в теме
(50)попозже мб на гит свои наработки выложу , когда найду)
55. user1028258 19.10.21 12:58 Сейчас в теме
(53)Автор! Здравствуйте Honeywell EDA51. Чего то не понимаю, вроде все по инструкции сделал, а на подключение ругается =\. На неизвестный модуль ругается
58. MikeI 73 29.05.22 23:13 Сейчас в теме
(55) А круто , а у меня на EDA51 взлетела.
только 12 символов на EAN13
67. 3dice 24 20.06.22 14:52 Сейчас в теме
(58) Попробуйте в настройках Scan settings -> Symbology settings -> EAN13 поставить галку "Send check digit".
60. Global__IT 287 03.06.22 01:10 Сейчас в теме
(53) ещё один момент по Eda51. Сделал мобильную конфигурацию. Когда конфигурация была прописана к серверу на моем компьютере, то все было норм. А как только я этот терминал переключил к другому серверу то компонента перестала работать. В чем может быть проблема?
61. evgeny43 32 06.06.22 12:21 Сейчас в теме
(60)Компонента работает исключительно на самом тсд, не должно быть проблем при смене источника данных. проблема может быть только при передаче ее на тсд. смотрите тему передачи двоичных данных с разными веб серверами Апач и т.д
62. Global__IT 287 06.06.22 13:53 Сейчас в теме
(61) Дык и я думал так же. И надеялся что при смене истоника обновления конфигурации неизмениться. Ан нет.
А когда обратно вернул, все опять заработало
63. Global__IT 287 16.06.22 15:00 Сейчас в теме
при просыпании после спящего режима зависает приложение. Проблема именно в компоненте. Потому как в других формах, где нет вызова компоненты все норм.
Что может быть?
64. evgeny43 32 16.06.22 19:07 Сейчас в теме
(63)Проблема может быть в стандартных методах андроида, которые использовались при написании данной компоненты, либо методах C++ . На моих устройствах такой проблемы замечено не было, но на разных версиях андроида разные проблемы . хотя писалось под 4.4 не все методы в андроиде имеют идеальную обратную совместимость. Ну и конечно не стоит исключать саму мобильную платформу и ее багов при подключении внешних компонент. т.к зависания при переходе в спящий режим я не замечал , попробуйте 8.3.16 мобильную платформу.
65. Global__IT 287 16.06.22 19:26 Сейчас в теме
(64)проблема не в компоненте, а в самой конфигурации мобильной
66. 3dice 24 20.06.22 14:48 Сейчас в теме
Евгений, здравствуйте. Скачал вашу компоненту. На EDA50 работает прекрасно. Спасибо большое. Попробовал на Zebra MC3300, событие перехватывается, но в поле "Данные" - пустая строка. Подскажите, можно ли как то доработать компоненту для работы с этой моделью?
68. evgeny43 32 20.06.22 15:26 Сейчас в теме
(66)Я на текущий момент не занимаюсь автоматизацией склада, но у нас были зебры когда я уходил, там нужна настройка интента и все должно работать. Зебры были как раз из серии MC33. Помню , что там была чуть посложнее настройка самого тсд, что бы перехватывать нужное поле с данными . Возможно поле было преопределенное в документации к ТСД и я перехватывал его методом StartMyGetScan.
69. 3dice 24 21.06.22 11:09 Сейчас в теме
(68) Да, получилось, спасибо. Действительно, порыл документацию и нашел:

Компонента.StartMyGetScan("scan.rcv.message", "com.symbol.datawedge.data_string");

Вот так работает и возвращает штрихкод строкой.
70. 3dice 24 21.06.22 11:12 Сейчас в теме
(68) И кстати, настройка такая же. Просто включил опцию Enable output via intent и в Intent action прописал scan.rcv.message
71. alex_shah 20.09.22 10:24 Сейчас в теме
А для варианта с 1с web клиентом компонента сработает? Или необходимо исключительно мобильное приложение? ТСД honeywell 51
72. evgeny43 32 20.09.22 19:35 Сейчас в теме
(71)Не пробовал, но теоретически должно если подключать на клиенте.
74. user949769 19.01.23 10:35 Сейчас в теме
Добрый день!
Скачал вашу компоненту (Новая версия), но не могу запустить, а нам катастрофически это необходимо :(

Дано:
1. ТСД M3 SL20;
2. Android 11;
3. Мобильная платформа 8.3.17.87, скачанная с портала ITS;
4. ZIP архив их скачанного отсюда Rar архива.

Выполнено:
1. В приложении ScanEmul отключена эмуляция клавиатуры и включены следующие параметры со значениями:
intent Action: "com.android.server.scannerservice.broadcast"
intent Extra Data: "m3scannerdata"
2. ZIP архив добавлен в общий макет AddIn;
3. В процедуре ПриНачалеРаботыСистемы() прописан следующий код:

#Если МобильноеПриложениеКлиент Тогда
УстановитьВнешнююКомпоненту("ОбщийМакет.AddIn");
ПодключитьВнешнююКомпоненту("ОбщийМакет.AddIn", "LibData", ТипВнешнейКомпоненты.Native);
Компонента = Новый("AddIn.LibData.AddInNativeBEN");
Компонента.StartMyGetScan("com.android.server.scannerservice.broadcast","m3scannerdata");
//Компонента.StartGetScan();
//Компонента.StartGetKeyEvent(); - отлавливать сообщения нажатия физической клавиатуры на ТСД
#КонецЕсли

Ошибка: Тип не определен (AddIn.LibData.AddInNativeBEN) на строке "Компонента = Новый("AddIn.LibData.AddInNativeBEN");"

Пробовал добавлять код в процедуру на клиенте в модуле формы одной из обработок, которая открывается на ТСД, результат такой-же.

Выше в чате видел, что с устройствами M3 вроде как всё заработало у некоторых участников форума.
Подскажите пожалуйста в чем может быть ошибка.
75. user949769 19.01.23 11:08 Сейчас в теме
(74) - точнее ошибка возникает на строке "УстановитьВнешнююКомпоненту("ОбщийМакет.AddIn");"
76. evgeny43 32 20.01.23 10:27 Сейчас в теме
(
(75) Давненько я писал эту компоненту. Возможно вы не правильно добавили архив в мобильную конфигурацию, либо используете веб сервер iis где нужны танцы с бубнами, что бы макеты с двоичными данными попали на тсд. Есть конечно 3 вариант - это изменения механизма платформы на 8.3.17 т.к последний раз тестировал на 16 версии.
77. user949769 23.01.23 10:25 Сейчас в теме
(76) , Здравствуйте)

Веб сервер Apache последней версии на текущий день.
Макеты у нас уже работали на ТСД, был CipherLab и точно таким же образом устанавливали компоненту от производителя.
Т.е., мне стоит попробовать установить 8.3.16?
78. user949769 23.01.23 12:18 Сейчас в теме
Попробовали все 2 версии 8.3.16 на ТСД.
Результат везде одинаковый "Тип макета не определён".
Архив ZIP вытащил из RAR архива (скачал "Перехват сканирования Android Native API: Новая версия").
В ZIP архиве 2 SO файла, 1 APK, 1 манифест.
79. evgeny43 32 23.01.23 15:47 Сейчас в теме
(78) да все верно. Попробуйте побольше разрешений дать 1с ке на тсд. У меня так же есть подозрения по поводу передачи zip архива в тсд.
80. user949769 31.01.23 11:59 Сейчас в теме
Евгений, спасибо за компоненту!

Всё работает! Неправильно загружал компоненту, как двоичные данные.
Тестировали 5 рабочих дней компоненту при постоянной нагрузке - проблем обнаружено не было.
Можете добавить в список поддерживаемых устройств M3 SL20.
В утилите ScanEmul в профиле default ничего не добавлял, там и так прописана строка "com.android.server.scannerservice.broadcast" в intent Action.
81. demientut 26 06.02.23 13:22 Сейчас в теме
honeywell EDA61K. Получилось у кого нибудь настроить? Подключается хорошо. Ошибок нет. StartGetScan() отрабатывает. Флаг IsEnabled = True говорит, но сканирование не отрабатывает. При выполнении GetDataTSDevent() приходит и оповещение и внешнее событие, так что с этим все в порядке, а вот от сканера не идет.
Пробовал и StartMyGetScan("scan.rcv.message","data"). При таком запуске Флаг IsEnabled = False. Перепробовал уже сотни параметров. Никак.
На самом ТСД Настроен интент "scan.rcv.message". А вот data - писать некуда.
На фотках = настройки на ТСД. Подскажите что не так?
Прикрепленные файлы:
82. demientut 26 07.02.23 09:41 Сейчас в теме
Заработал honeywell EDA61K с настройками как на скрине в (81). По итогу оказалось что установленный ранее софт datamobile блокировал работу сканера из других приложений. Удалил datamobile, перегрузил девайс и все заработало. Использую StartGetScan(). Работает замечательно. Ловит и Внешние события и оповещения.
83. lDenisZl 27.04.23 22:50 Сейчас в теме
Автору спасибо за компоненту.

база с версией БПО: не менее 2.11.0.0 (1.9.11)

ТСД M3 SL20 заработал.

Вдруг кому пригодится, последовательность шагов следующая:
1. Ставим apk getKeyboard включаем его в настройках- Специальные возможности.
2. В конфигурации добавляем макет, как написал автор выше, в общий макет AddIn . предварительно zip архив назвал AddIn.zip, подключил как компоненту, не двоичные данные.

3. В форме которая прописана в рабочей области начальной страницы, добавил переменную модуля
&НаКлиенте
Перем Компонента;


И в методе ПриОткрытии добавил код прослушивания штрихкода с проверкой NCL? так как везде подключено БПО для поддерживаемых устройств.

#Если МобильноеПриложениеКлиент Тогда
	УстановитьВнешнююКомпоненту("ОбщийМакет.AddIn");
	ПодключитьВнешнююКомпоненту("ОбщийМакет.AddIn", "LibData", ТипВнешнейКомпоненты.Native);
	Компонента = Новый("AddIn.LibData.AddInNativeBEN");
	Если  Найти(Компонента.GetDataTSD(),"M3") > 0 Тогда
		Компонента.StartMyGetScan("com.android.server.scannerservice.broadcast","m3scannerdata");
	КонецЕсли;
	#КонецЕсли


И все, далее все перехватывается через БПО, в ОбработкаОповещения(ИмяСобытия, Параметр, Источник)

Источник: ПодключаемоеОборудование ИмяСобытия:BarcodeDecodeData Данные: штрихкод

проверяешь событие и обрабатываешь ШК, идеально.
84. lettitbit 106 01.06.23 02:41 Сейчас в теме
Добрый день, спасибо Вам за разработку, сэкономили кучу времени с honeywell eda50k!
85. slonba 24 06.07.23 16:56 Сейчас в теме
добрый день. ТСД Атол Смарт слим, скачал Перехват сканирования Android Native API: Новая версия остальное тоже сделал как написано, компонента подключается. но в ОбработкаОповещения ничего не приходит.
куда смотреть что не так, подскажите пожалуйста?
86. evgeny43 32 06.07.23 18:09 Сейчас в теме
(85)
Добрый день.
Настройки отправки интента на тсд (где они находятся на данном тсд не знаю. Там может быть отключена отправка интента, а включена работа в разрыв клавиатуры). Наименование отлавливаемого интента в 1с.
87. slonba 24 07.07.23 10:20 Сейчас в теме
а где в 1с указать Наименование отлавливаемого интента? и чем их заполнить?
88. evgeny43 32 07.07.23 17:41 Сейчас в теме
(87)StartMyGetScan("ИмяСобытия","ИмяПолеСоСтроковымиДаннымиШтрихКода"). В статье есть. имя события и есть имя интента.
89. vladnet 366 04.10.23 11:33 Сейчас в теме
Здравствуйте!

У меня вот такая ошибка:

ПодключитьВнешнююКомпоненту("AddIn", "LibData", ТипВнешнейКомпоненты.Native) - Истина
Компонента = Новый("AddIn.LibData.AddInNativeBEN") - Новый("AddIn.LibData.AddInNativeBEN") {(1)}: Тип не определен (AddIn.LibData.AddInNativeBEN)
В чем может быть проблема?

Подключил правильно как внешнюю компоненту, zip внутри 4 файла. На подключение не ругается.
Грешу на то что андроид 11, там какие то проблемы с этим есть. Есть ли какое то решение?
90. ybatiaev 59 13.04.24 12:02 Сейчас в теме
(89) Доброго Вам дня! Решили проблему? У нас сейчас тоже назрело, вот хочу скачать
91. evgeny43 32 18.04.24 10:16 Сейчас в теме
Не сталкивался с такой проблемой. Ничего сказать не могу, нет тсд на 11 андроиде.
Оставьте свое сообщение