👋 сейчас сканируем штрихкод в поле на форме, хотим получать события напрямую со сканера
готов к любому сотрудничеству в ЛС, ниже ПО/АО и цели.
Дано: - Платформа 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 пар-ра)
15.
user785225
2628.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 не работает (постоянно просит перезагрузиться после установки)
(1)
0) На тестовой базе с одним пользователем проверяем, тестируем.
1) Настраиваем Технологический журнал
2) смотрим Profiler ms sql
3) настраиваем Wireshark
(1) Что бы работали нативные компоненты нужно собрать свой мобильный клиент через сборщик.
Тогда зароботают интенты.
Если драйвера в мактах то сборка позволяет их запихнуть в апк файл и тогда все работает. У меня древняя база. Добавлено МБПО и собран на основе этого мобильный клиент. Все работает. Проблема только в нужных интентах. У разных производителей свои ньюансы.
Но мы взяли Sunmi ТСД. Там МБПО уже есть драйвер на них ( без прописівания интентов) .Пару кликов и все заработало
Я делал в мобильном приложении подключение сканера. Все работало. В компоненте есть метод получения параметров, для параметра "устройство" после подключения ВК нужно было указать "клавиатура" (может быть "порт" - не вспомню уже, но в списке параметров есть и список заполнения этих параметров - ХМЛ, так что разобраться не сложно).
Сейчас, как я понял, проблема в том, что компонента вообще не устанавливается и не подключается. Возможно все дело в волшебных настройках веб-сервера, а именно расширений и их МИМО-типов. Где-то об этом были чьи-то рассуждения - не вспомню, но оное было для IIS, а я на апаче все запускал - там проблем не было (имею ввиду проблемы с пересылкой файла компоненты so/zip с сервера на устройство),
в веб-сайте 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": "")
по окончании эпопеи отблагодарю вас в зависимости от того сколько еще предстоит сделать
(6) Компонента устанавливается и подключается, но не отрабатывает событие. Примечательно что в казалось бы новой 1С: УНФ 3.0.1.248 методы вообще не соответствуют описанным на https://its.1c.ru/db/metod8dev/content/5990/hdoc хотя драйвер той же версии 10
Напр. метод GetParameters() возвращает Истина, а куда список параметров сохраняется - одному богу Нуралиеву известно
meme типы нужны при сборке приложения, в мобильном клиенте они вроде не нужны
Там ничего сложного по сути, в ТСД должен быть встроенное приложение для сканирование, если он работает то и в 1С будет работать.
Настройки минимальные в 1С,
Указывается:
Устройство - Broadcast
Пользовательский intent Action - <Как в настройках ТСД> (Например: android.intent.ACTION_DATA)
Пользовательский intent Extra - <Как в настройках ТСД> (Например: barcode_string)
Я "клавиатура" указывал, в настройке сканера просто перенаправление в клавиатуру - все работало. С броадкастами не заморачивался - в те времена прилично обрабатывающих это ВК не было.
(10) Сейчас с этим всё проще, новые драйвера успешно с этим справляются)
Событие сразу попадает во "внешнее событие", как с обычными сканерами штрихкодов
(11) примечательно, что событие попадает в процедуру "ВнешнееСобытие" всех открытых форм, но не попадает в процедуру "ОбработкаВнешнегоСобытия" в модуле приложения, хотя по описанию из ИТС должно https://its.1c.ru/db/metod8dev/content/2691/hdoc
Процедура ОбработкаВнешнегоСобытия — предопределенная процедура обработки сообщений от внешних компонент.
Процедура может быть описана в модуле приложения. При получении сообщения будут вызваны обработчики внешнего события, определенные в модулях всех открытых на этот момент форм, включая цепочку всех открытых модально форм. После этого будет вызвана процедура ОбработкаВнешнегоСобытия, определенная в модуле приложения.
все так и сделал. Встроенное приложение скан ловит, но 1С - нет. Думаю во встроенном при тесте мб ввод по клавиатуре используется жестко, а не выбранный broadcast. В 1С драйвер и устанавливается, и подключается. Тест тоже успешный.
MIME типы вроде ошибку не вызывают, оставил.
При выборе Клавиатуры и последующем тесте виснет намертво. Все больше прихожу к выводу что никто и никогда на Мобильном клиенте 1С не использовал сканер ТСД с драйвером 1C Native сканер штрихкодов
(11) Понимаю что должно, но не попадает \_0_/ . Посмотрю отправляемый интент может в сканере дело.
15.
user785225
2628.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 не работает (постоянно просит перезагрузиться после установки)
(15) для истории: работающий в Мобильном автономном клиенте код
!!! общий макет должен быть типа ВнешняяКомпонента
УстановитьВнешнююКомпоненту("ОбщийМакет.Драйвер1СУстройстваВводаNative");
ПодключитьВнешнююКомпоненту("ОбщийМакет.Драйвер1СУстройстваВводаNative", "InputDevice", ТипВнешнейКомпоненты.Native);
ОбъектДрайвера = Новый ("AddIn.InputDevice.InputDevice");
ОбъектДрайвера.УстановитьПараметр("BluetoothDevice", "BROADCAST");
ОбъектДрайвера.УстановитьПараметр("Action", "com.android.scanner.broadcast");
ОбъектДрайвера.УстановитьПараметр("Extra", "scandata");
ОбъектДрайвера.Подключить("");
// Также чтобы драйвер не терялся его присваивают в глобальную клиентскую переменную
глТорговоеОборудование.ЗагруженныеДрайвера.Вставить("InputDevice", ОбъектДрайвера);
// Для вызова из Обработчика оповещения формы, а не Внешнего события его также добавляют в нее
// Где ТО - СправочникСсылка.ТорговоеОборудование, ПараметрыТО - Структура обязательным ключом
// МодульОбработчика = "ТорговоеОборудованиеСканер1СNativeAPI", ИмяСобытия = "Штрихкод"
// (В Обработке оповещения на форме оно будет = "ScanData", видимо, чтобы было интереснее)
локТорговоеОборудование.ПараметрыПодключения.Вставить(ТО, ПараметрыТО)