Перехват сканирования Android Native API
Разработка - Разработка внешних компонент
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Здравствуйте, коллеги.
В 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 и выше, насколько я понял.
Сегодня хочу предоставить вам в помощь ту компоненту, которая у меня получилась, она подходит под ряд тсд :
- honeywell scanpal eda50k( таких у нас 2)
- mobilebase ds5 (основной тсд для работы )
- CipherLab 9700(таких 2 , на них очень хороший сканер шк для сканирования на 5 и более метра ) точную версию не помню в документации к тсд написано 97XX
- 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")
Вступайте в нашу телеграмм-группу Инфостарт
См. также
Мобильная разработка Сканер штрих-кода Терминал сбора данных 1С:Предприятие 8 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)
Сбор заказов, инвентаризация, проверка ценников, просмотр полной информации об остатках и ценах со смартфона Онлайн - все это содержит в себе решение 1С "Штрихкод-информер" (штрих-код чекер). Отправка данных со смартфона выполняется либо напрямую в открытую форму документа, отсканировав QR-код, либо в общую корзину учетной системы, не подходя к компьютеру. Кассир или оператор сможет просмотреть список присланных данных и загрузить в любую форму, поддерживающую работу с ТСД. Для работы с мобильным приложением требуется опубликовать HTTP-сервис из поставляемого расширения.
3050 руб.
03.12.2018 72927 250 108
Сканер штрих-кода Терминал сбора данных Мобильная разработка Монитор заказов Оптовая торговля Розничная торговля Ценообразование, анализ цен Разработчик Пользователь 1С:Предприятие 8 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. Полнофункциональный демо-доступ для своей конфигурации можно запросить в настройках мобильного приложения - все необходимое придет на почту автоматически. Решение предназначено для считывания штрихкодов, а не для их создания и печати.
3050 руб.
22.04.2019 124924 739 207
Сканер штрих-кода Оптовая торговля Розничная торговля Логистика, склад и ТМЦ Терминал сбора данных Мобильная разработка Разработчик Пользователь 1С:Предприятие 8 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Розница 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Управленческий учет Платные (руб)
Android смартфон как беспроводной сканер штрих-кодов, QR-кодов (2D), терминал сбора данных (ТСД), подписка на штрих-код Комбайн
2196 руб.
18.01.2017 152664 235 237
Разработка внешних компонент Телефония, SIP Разработчик 1С:Предприятие 8 1C:Бухгалтерия Россия Платные (руб)
Внешняя компонента выполнена по технологии Native API для 1С 8.х, обеспечивает доступ к программным АТС Asterisk (FreePBX, Elastix) через AMI интерфейс. Через него можно управлять многими функциями Asterisk (определение номеров, перевод звонков, набор телефона и т. д.)
5246 руб.
04.05.2018 52186 128 68
Разработка внешних компонент Разработчик 1С:Предприятие 8 1C:Бухгалтерия 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 Платные (руб)
Внешняя компонента позволяет работать c TWAIN-совместимым оборудованием (сканерами, камерами) . Полностью совместима со стандартной TWAIN-компонентой из БСП и может применяться как ее замена без изменения вызовов, при этом может работать с 64-разрядной платформой, а так же имеет расширенную функциональность, например, сохранение результата непосредственно в PDF без использования сторонних утилит. Прекрасно работает на сервере, тонком клиенте и веб-клиенте (проверена работа в браузерах Google Chrome, Mozilla Firefox и Microsoft Internet Explorer).
5084 руб.
12.05.2020 34941 147 100
Мобильная разработка 1С:Предприятие 8 1С:Управление торговлей 11 Оптовая торговля, дистрибуция, логистика Россия Платные (руб)
"МРМ:Маркировка" для работы с конфигурациями 1С - готовое решение, позволяющее быстро автоматизировать работу учетной системы 1С на ордерном и безордерном складе при работе как с товарами, подлежащими обязательной маркировке, так и с товарами, учет которых построен на базе линейных штрих-кодов. Решение поддерживает большинство распространенных складских документов, необходимых для работы кладовщику на терминале сбора данных. Для начинающих пользователей имеется подробная инструкция по работе с приложением в разрезе видов документов.
19000 руб.
24.06.2025 4088 26 0
Разработка внешних компонент Системный администратор Разработчик Стажер Бесплатно (free)
Библиотека для работы с базами SQLite из 1С на основе внешней компоненты. Для Linux и Windows, бесплатно и с открытым исходным кодом!
14.01.2025 8217 bayselonarrend 17
Разработка внешних компонент Разработчик 1С:Предприятие 8 Россия Бесплатно (free)
В статье описывается приложение-конструктор внешних компонент (native API). Конструктор упрощает процесс разработки за счет удобного добавления всех нужных функций и процедур в графическом режиме, с указанием их параметров и типов параметров. На выходе приложение генерирует готовый код на С++ и Rust и позволяет сразу приступить к реализации, без настройки API компоненты вручную.
04.12.2024 13794 kovalevdmv 29
Почему остановились на C++, а не Java?
При установке внешней компоненты на андроиде, файлы внешней компоненты передаются вебсервером и в этот момент возникает затык.
Если их добавить в MIME типы сервера, то начинает работать.
глНативКомпонента = Новый("AddIn.rumalutilities.MALutilities");
Что не так? И возможно ли выложить исходники на c++?
Возникает точно такая же ошибка, как у автора в пункте 16
Загрузил тестовую конфигурацию при запуске приложения ошибка {МодульУправляемогоПриложения(6)}: Тип не определен (AddIn.rumalutilities.MALutilities)
глНативКомпонента = Новый("AddIn.rumalutilities.MALutilities"); ?
CallAndWorkJava - Android
MyDllForJava.rar
или
application/octet-stream
или это в зависимости от того, как добавлен общий макет - как двоичные данные или компонента?
Да, в текущей версии драйвера, сканер при подключении перехватывает все клавиатурные события и ожидает нажатия клавиши Enter для завершения ввода и передачи данных внешним событием в 1С. Это может приводить к подобным затруднениям, поскольку изначально текущая версия сканера разрабатывалась в расчете на сканеры подключаемые как bluetooth-клавиатура, software-клавиатура, очевидно, так же передает данные в приложение другим способом, поэтому, случай с встроенной клавиатурой не попал в текущую реализацию сканера. Поддержка такого режима работы потребует реализации механизма подобного на механизм используемый в Windows, когда необходимо определять пришло ли сообщение от автоматического оборудования (сканера) или от живого пользователя. В настоящей редакции драйвера это не может быть реализовано. Но мы можем записать это как пожелание и реализовать в следующей редакции (10-ой) драйвера.
распоковал опубликовал(подключился через веб сервис) добавил драйвер подкючился с тсд но ничего не заработало
Или просто засунули компоненту в макет и ждете, что что-то заработает? Читайте документацию.
Подскажите пожалуйста,с IIS у вас была какая проблема? Просто не могло подключить внешнюю компоненту?
Вообще, у меня на телефоне так и не заработала эта компонента, а на атоловском ТСД работает без проблем.
Ну я использую Java для реализации функционала андроид , а C ++ как средство передачи данных в 1с . Первый вариант компоненты был простой - чисто на Java , до версии платформы 8.3.12 1с-ка на прямую могла принимать броадкаст. Для платформы 8.3.12 и выше, как вариант разработчики 1с предложили Native компоненту .
Если у вас есть какое либо предложение как напряму с Java связаться с 1с, я был бы рад услышать , меньше кода меньше проблем))))
Пользовался неоднократно на разных сканерах.
Кстати, сама платформа тоже может получать широковещательные сообщения без каких либо компонент, достаточно отредактировать permissions.xml. Подробнее
Однако недавно я наткнулся на ПО, которое выложили за 5 дней до моего , и похоже оно работает так же, однако более универсально , т.к события и поля которые отлавливаются можно передать из 1с. ( Но к сожалению на момент начала разработки , я ничего найти подобного не смог((( .
Если знаете как править манифест для мобильной платформы без сборки готового решения в апк, я был бы признателен если вы поделитесь со мной знаниями.
За ссылку отдельное спасибо. Жаль что её не было полгода назад. Реализовал точно также)))
ПодключитьВнешнююКомпоненту("ОбщийМакет.AddIn", "LibData", ТипВнешнейКомпоненты.Native);
Компонента = Новый("AddIn.LibData.AddInNativeBEN");
Компонента.StartMyGetScan("scan.rcv.message","data");
Компонента.StartGetKeyEvent();и все работало
Почитайте статью ниже слов : 02.07.2020 наконец то добрался до модернизации компоненты, как обещал сделал ее более универсальной -
Как прописать перехват нажатия кнопки в этом случае?
Нужно чтобы встроенный сканер работал в нескольких документах, для примера возьму "ПриобретениеТоваровУслуг".
Установил apk из архива, но не могу внешнее событие отловить...
ReservScanTSD.apk его еще включить необходимо в спец. возможностях , и он отлавливает нажатие только физической клавиатуры , а не программной .
если тсд шлёт интенты , то и нет необходимости перехватывать нажатие кнопки, а необходимо перехватить получение самого шк, правд для этого надо настроить сам тсд на его отправку.
Компонента.StartMyGetScan("com.android.server.scannerservice.broadcast","m3scannerdata")
сам action прописан в программе ScanEmul, а вот второго поля в документации нигде нет...
проверено на рабочем терминале - работает - сам долго искал решение, всю голову сломал.
Может автор внесет в список поддерживаемых терминалов этой компонентой.
Компонента.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 шаманить?
Настраивал сканирование в драйвере 1с:Сканер штрихкода (NativeApi)
Настройки справочник подключаемое оборудование. Вдруг кому пригодится. |
|---|
| Общие
Устройство: Broadcast Префикс: <NONE> Суффикс: auto CRLF Тип выходных данных: Строка BroadCast Standard android.intent.action: NONE Standard android.intent.category: NONE Standard Intent Extra: NONE Пользовательский Intent Extra: m3scannerdata Тип данных: Sting Пользовательское Intent Action: com.android.server.scannerservice.broadcast Пользовательская Intent Category: |
ПодключитьВнешнююКомпоненту("AddIn", "LibData", ТипВнешнейКомпоненты.Native) - Истина
Компонента = Новый("AddIn.LibData.AddInNativeBEN") - Новый("AddIn.LibData.AddInNativeBEN") {(1)}: Тип не определен (AddIn.LibData.AddInNativeBEN)
В чем может быть проблема?
Все делается согласно инструкции
Но работать не будет нужно просто включить встроенное приложение
scanwedge(может кому то и поможет)
Хочу опубликовать приложение на Google Play (распространять обновленный apk среди работников склада, а потом пытаться с ними его установить - то еще удовольствие), а там требуется в обязательном порядке платформа ARM64. И она-то как раз по умолчанию и устанавливается на все мои ТСД. В результате приложение работает, а компонента сканирования - нет.
Как вариант - поделитесь исходниками - буду осваивать разработку под Android )))
А когда обратно вернул, все опять заработало
Что может быть?
Скачал вашу компоненту (Новая версия), но не могу запустить, а нам катастрофически это необходимо :(
Дано:
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) Давненько я писал эту компоненту. Возможно вы не правильно добавили архив в мобильную конфигурацию, либо используете веб сервер iis где нужны танцы с бубнами, что бы макеты с двоичными данными попали на тсд. Есть конечно 3 вариант - это изменения механизма платформы на 8.3.17 т.к последний раз тестировал на 16 версии.
Веб сервер Apache последней версии на текущий день.
Макеты у нас уже работали на ТСД, был CipherLab и точно таким же образом устанавливали компоненту от производителя.
Т.е., мне стоит попробовать установить 8.3.16?
Результат везде одинаковый "Тип макета не определён".
Архив ZIP вытащил из RAR архива (скачал "Перехват сканирования Android Native API: Новая версия").
В ZIP архиве 2 SO файла, 1 APK, 1 манифест.
Всё работает! Неправильно загружал компоненту, как двоичные данные.
Тестировали 5 рабочих дней компоненту при постоянной нагрузке - проблем обнаружено не было.
Можете добавить в список поддерживаемых устройств M3 SL20.
В утилите ScanEmul в профиле default ничего не добавлял, там и так прописана строка "com.android.server.scannerservice.broadcast" в intent Action.
Пробовал и StartMyGetScan("scan.rcv.message","data"). При таком запуске Флаг IsEnabled = False. Перепробовал уже сотни параметров. Никак.
На самом ТСД Настроен интент "scan.rcv.message". А вот data - писать некуда.
На фотках = настройки на ТСД. Подскажите что не так?
база с версией БПО: не менее 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 Данные: штрихкод
проверяешь событие и обрабатываешь ШК, идеально.
куда смотреть что не так, подскажите пожалуйста?
У меня вот такая ошибка:
ПодключитьВнешнююКомпоненту("AddIn", "LibData", ТипВнешнейКомпоненты.Native) - Истина
Компонента = Новый("AddIn.LibData.AddInNativeBEN") - Новый("AddIn.LibData.AddInNativeBEN") {(1)}: Тип не определен (AddIn.LibData.AddInNativeBEN)
В чем может быть проблема?
Подключил правильно как внешнюю компоненту, zip внутри 4 файла. На подключение не ругается.
Грешу на то что андроид 11, там какие то проблемы с этим есть. Есть ли какое то решение?
Воспользовался предоставленной компонентой. Инициализация проходит без каких либо ошибок.
При этом в 1С обработка внешнего события не возникает.
В настройках DataWedge:
Intent output - Enabled output via intent
Intent action - scan.rcv.message
Пробовал в коде (и одновременно в настройках) менять FilterName (и в настройках Intent action) на "DATA_SCAN" . Результата нет.
Не подскажите , в чем может быть проблема?
Код подключения в обработке :
Попытка
УстановитьВнешнююКомпоненту("ОбщийМакет.AddIn");
Исключение
Сообщить("Ошибка установки внешней компоненты AddIn.");
КонецПопытки;
Если ПодключитьВнешнююКомпоненту("ОбщийМакет.AddIn","LibData",ТипВнешнейКомпоненты.Native) Тогда
Попытка
КомпонентаОповещений = Новый("AddIn.LibData.AddInNativeBEN");
Исключение
Сообщить("Ошибка создания класса AddInNativeBEN.");
Возврат Ложь;
Конецпопытки;
Попытка
//КомпонентаОповещений.StartMyGetScan("DATA_SCAN","com.symbol.datawedge.data_string");
КомпонентаОповещений.StartMyGetScan("scan.rcv.message","com.symbol.datawedge.data_string");
//КомпонентаОповещений.StartGetKeyEvent();
Сообщить("Все подключено");
Исключение
Сообщить("Ошибка запуска получения сканирования!!!");
КонецПопытки;
Иначе
Сообщить("Ошибка подключения компоненты AddIn.");
Возврат Ложь;
КонецЕсли;
ПоказатьВы можете заказать платную консультацию или разработку у автора. Будет создан приватный заказ на «Бирже заказов» для автора.
№ 1230245
Создание 29.04.20 13:30
Обновление 10.11.20 10:07
Просмотры 29135
Загрузки 141
Рейтинг
21
Комментарии 101
Код открыт Да
Рубрики Разработка внешних компонент Мобильная разработка
Кому Разработчик
Тип файла Архив с данными
Платформа 1С:Предприятие 8
Конфигурация Универсальные
Операционная система Android
Страна Не имеет значения
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Абонемент ($m)