Подключение Native компоненты сканера штрихкода на ТСД в Мобильном клиенте на android

1. user785225 26 23.09.24 12:15 Сейчас в теме
👋 сейчас сканируем штрихкод в поле на форме, хотим получать события напрямую со сканера
готов к любому сотрудничеству в ЛС, ниже ПО/АО и цели.

Дано:
- Платформа 8.3.22.2143, режим совместимости 8.3.15
- Старая конфигурация 1С Далион: ТРЕНД 3.0.2.3, опубликованная на IIS 10, адаптированная в части документов для работы на Мобильном клиенте, в т.ч. разрешение на установку пакетов
- ТСД Mindeo M50, Мобильная платформа 8.3.22.57, Android 11. Выдал все разрешения, в т.ч. специальный доступ на а) все файлы б) установку приложений из неизвестных источников
- БСП 2.4.6.172, есть зачатки БПО но как таковой нет - список драйверов предопределен в макете справочника ТорговоеОборудование и не дополняется из 1С (см. рис СП.png)
- Драйвер1СУстройстваВводаNative 10.1.8.6 (см. файл Драйвер1СУстройстваВводаNative.zip; взял из УНФ 3.0.1.248, т.к. в Далионе он был версии 8 и не содержал нативной компоненты для Android)

Цель:
- минимум: получать информацию в Мобильном клиенте на ус-ве ТСД об отсканированном ШК через процедуру ВнешнееСобытие используя для этого любое ПО
- максимум: получать тот же ШК средствами Драйвера в Мобильном клиенте с автономным режимом (тумблер "Автономный режим" в настройках базы в списке)

Затык:
- встроенная установке находится в скрытом модуле, неизвестно что происходит, но при Подключении из типового кода Успех = Ложь (см. рис. ...Подключить.png)
- при Подключении вручную результат подключения = Ложь (см рис. Затык.png; пробовал разные вариации 2 пар-ра)
Прикрепленные файлы:
Драйвер1СУстройстваВводаNative.zip
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
5. user5300 1063 23.09.24 16:36 Сейчас в теме +3 $m
Установите мобильный клиент 32
1cem-client-x86.apk
либо (1cem-client-arm.apk)
user785225; +1 Ответить
15. user785225 26 28.09.24 18:44 Сейчас в теме +12 $m
Удалось завести ДрайверСканер1СNativeAPI только версии 10.4.2.6 (перепробовал 3 разных, взял из УНФ 3.0.6.171) на Мобильном клиенте 8.3.22.57 32 разрядности на ТСД Mindeo M50 в старой базе 1С Далион: ТРЕНД

т.е. основная причина - кривой драйвер. Нужно подбирать из свежих + адаптировать БПО под него, что и было сделано.
х32 приложение обязательно, на 64 не работает (постоянно просит перезагрузиться после установки)
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user-z99999 71 23.09.24 13:00 Сейчас в теме
(1)
0) На тестовой базе с одним пользователем проверяем, тестируем.
1) Настраиваем Технологический журнал
2) смотрим Profiler ms sql
3) настраиваем Wireshark

И любой закрытый модуль станет открытым для вас.

мне пожалуйста Спасибо стратманями.
14. user1376549 27.09.24 17:55 Сейчас в теме
(1) Что бы работали нативные компоненты нужно собрать свой мобильный клиент через сборщик.
Тогда зароботают интенты.
Если драйвера в мактах то сборка позволяет их запихнуть в апк файл и тогда все работает. У меня древняя база. Добавлено МБПО и собран на основе этого мобильный клиент. Все работает. Проблема только в нужных интентах. У разных производителей свои ньюансы.
Но мы взяли Sunmi ТСД. Там МБПО уже есть драйвер на них ( без прописівания интентов) .Пару кликов и все заработало
17. user785225 26 28.09.24 18:53 Сейчас в теме
(14) скачивал мобильный клиент с releases.1c.ru
дал доступ в 1С и android на "все файлы" и "установку приложений"
также заработал драйвер
3. user5300 1063 23.09.24 15:56 Сейчас в теме
Разрядность мобильного приложения какая? 32 ?
4. user785225 26 23.09.24 16:19 Сейчас в теме
(2) ТЖ залазил, но не смог найти полезного. Попробую 2), 3). Спасибо ☺

(3) 64, проц arm64 на ТСД
5. user5300 1063 23.09.24 16:36 Сейчас в теме +3 $m
Установите мобильный клиент 32
1cem-client-x86.apk
либо (1cem-client-arm.apk)
user785225; +1 Ответить
6. starik-2005 3087 23.09.24 17:08 Сейчас в теме
Я делал в мобильном приложении подключение сканера. Все работало. В компоненте есть метод получения параметров, для параметра "устройство" после подключения ВК нужно было указать "клавиатура" (может быть "порт" - не вспомню уже, но в списке параметров есть и список заполнения этих параметров - ХМЛ, так что разобраться не сложно).

Сейчас, как я понял, проблема в том, что компонента вообще не устанавливается и не подключается. Возможно все дело в волшебных настройках веб-сервера, а именно расширений и их МИМО-типов. Где-то об этом были чьи-то рассуждения - не вспомню, но оное было для IIS, а я на апаче все запускал - там проблем не было (имею ввиду проблемы с пересылкой файла компоненты so/zip с сервера на устройство),
7. user785225 26 25.09.24 22:40 Сейчас в теме
в веб-сайте IIS указал
apk, so: application/octet-stream

(5) Установив мобильный клиент 32 в ДТ 3.0.2.3 получаю постоянную ошибку a-la перезагрузитесь для обновления. Ошибка исчезает если из драйвера удалить .apk (тогда подключается и успешно проходит тест)

в УНФ 3.0.1.248 без удаления .apk файла подключается и успешно проходит тест, однако не прослушивает события с указанными в ПО сканера "user intent" и "user extra" (остальные параметры установил NONE, "user category": "")
по окончании эпопеи отблагодарю вас в зависимости от того сколько еще предстоит сделать

сейчас учусь прослушивать broadcast intent чтобы убедиться, что приложение ТСД их отправляет

(6) Компонента устанавливается и подключается, но не отрабатывает событие. Примечательно что в казалось бы новой 1С: УНФ 3.0.1.248 методы вообще не соответствуют описанным на https://its.1c.ru/db/metod8dev/content/5990/hdoc хотя драйвер той же версии 10
Напр. метод GetParameters() возвращает Истина, а куда список параметров сохраняется - одному богу Нуралиеву известно
8. user5300 1063 26.09.24 08:42 Сейчас в теме
(7)
apk, so: application/octet-stream
meme типы нужны при сборке приложения, в мобильном клиенте они вроде не нужны

Там ничего сложного по сути, в ТСД должен быть встроенное приложение для сканирование, если он работает то и в 1С будет работать.
Настройки минимальные в 1С,
Указывается:
Устройство - Broadcast
Пользовательский intent Action - <Как в настройках ТСД> (Например: android.intent.ACTION_DATA)
Пользовательский intent Extra - <Как в настройках ТСД> (Например: barcode_string)
10. starik-2005 3087 26.09.24 10:36 Сейчас в теме
(8)
Указывается:
Я "клавиатура" указывал, в настройке сканера просто перенаправление в клавиатуру - все работало. С броадкастами не заморачивался - в те времена прилично обрабатывающих это ВК не было.
11. user5300 1063 26.09.24 10:39 Сейчас в теме
(10) Сейчас с этим всё проще, новые драйвера успешно с этим справляются)
Событие сразу попадает во "внешнее событие", как с обычными сканерами штрихкодов
16. user785225 26 28.09.24 18:46 Сейчас в теме
(11) примечательно, что событие попадает в процедуру "ВнешнееСобытие" всех открытых форм, но не попадает в процедуру "ОбработкаВнешнегоСобытия" в модуле приложения, хотя по описанию из ИТС должно https://its.1c.ru/db/metod8dev/content/2691/hdoc
Процедура ОбработкаВнешнегоСобытия — предопределенная процедура обработки сообщений от внешних компонент.

Процедура может быть описана в модуле приложения. При получении сообщения будут вызваны обработчики внешнего события, определенные в модулях всех открытых на этот момент форм, включая цепочку всех открытых модально форм. После этого будет вызвана процедура ОбработкаВнешнегоСобытия, определенная в модуле приложения.
18. user785225 26 28.09.24 19:18 Сейчас в теме
(16) up
в том что выше ошибся, все ок
9. starik-2005 3087 26.09.24 10:34 Сейчас в теме +1 $m
(7)
метод GetParameters() возвращает Истина
Типа того.
(7)
а куда список параметров сохраняется
В аргумент метода.
user785225; +1 Ответить
12. user785225 26 26.09.24 11:49 Сейчас в теме
благодарю за ответы 🤗

(8)
Пользовательский intent Action - (Например: android.intent.ACTION_DATA)
Пользовательский intent Extra - (Например: barcode_string)

все так и сделал. Встроенное приложение скан ловит, но 1С - нет. Думаю во встроенном при тесте мб ввод по клавиатуре используется жестко, а не выбранный broadcast. В 1С драйвер и устанавливается, и подключается. Тест тоже успешный.

MIME типы вроде ошибку не вызывают, оставил.

При выборе Клавиатуры и последующем тесте виснет намертво. Все больше прихожу к выводу что никто и никогда на Мобильном клиенте 1С не использовал сканер ТСД с драйвером 1C Native сканер штрихкодов


(11) Понимаю что должно, но не попадает \_0_/ . Посмотрю отправляемый интент может в сканере дело.

(9) Действительно, спасибо.
13. starik-2005 3087 26.09.24 14:20 Сейчас в теме
(12)
Все больше прихожу к выводу что никто и никогда на Мобильном клиенте 1С не использовал сканер ТСД с драйвером 1C Native сканер штрихкодов
В мобильном клиенте я действительно не юзал, а в мобильном приложении - пользовался.
15. user785225 26 28.09.24 18:44 Сейчас в теме +12 $m
Удалось завести ДрайверСканер1СNativeAPI только версии 10.4.2.6 (перепробовал 3 разных, взял из УНФ 3.0.6.171) на Мобильном клиенте 8.3.22.57 32 разрядности на ТСД Mindeo M50 в старой базе 1С Далион: ТРЕНД

т.е. основная причина - кривой драйвер. Нужно подбирать из свежих + адаптировать БПО под него, что и было сделано.
х32 приложение обязательно, на 64 не работает (постоянно просит перезагрузиться после установки)
19. user785225 26 01.10.24 02:31 Сейчас в теме
(15) для истории: работающий в Мобильном автономном клиенте код
!!! общий макет должен быть типа ВнешняяКомпонента

УстановитьВнешнююКомпоненту("ОбщийМакет.Драйвер1СУстройстваВводаNative"); 
   
ПодключитьВнешнююКомпоненту("ОбщийМакет.Драйвер1СУстройстваВводаNative", "InputDevice", ТипВнешнейКомпоненты.Native);
ОбъектДрайвера = Новый ("AddIn.InputDevice.InputDevice");  
      
ОбъектДрайвера.УстановитьПараметр("BluetoothDevice", "BROADCAST");
ОбъектДрайвера.УстановитьПараметр("Action", "com.android.scanner.broadcast");
ОбъектДрайвера.УстановитьПараметр("Extra",  "scandata");  
   
ОбъектДрайвера.Подключить("");

// Также чтобы драйвер не терялся его присваивают в глобальную клиентскую переменную
глТорговоеОборудование.ЗагруженныеДрайвера.Вставить("InputDevice", ОбъектДрайвера);

// Для вызова из Обработчика оповещения формы, а не Внешнего события его также добавляют в нее
// Где ТО - СправочникСсылка.ТорговоеОборудование, ПараметрыТО - Структура обязательным ключом 
// МодульОбработчика = "ТорговоеОборудованиеСканер1СNativeAPI", ИмяСобытия = "Штрихкод" 
// (В Обработке оповещения на форме оно будет = "ScanData", видимо, чтобы было интереснее)
локТорговоеОборудование.ПараметрыПодключения.Вставить(ТО, ПараметрыТО)
Показать
Оставьте свое сообщение

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