Создаю мобильное приложение под Андроид и пытаюсь прикрутить сканер ШК который соединяется по bluetooth с КПК через HID (эмуляция клавиатуры).
Все хорошо и замечательно работает кроме одного... крайне неудобно и сводит к нулю практическую пользу от приложения тот факт, что необходимо чтобы поле ввода было активировано вручную т.е. на нем стоял курсор и иначе штрих-код сканируется в некуда...Все попытки, что то сделать не увенчались успехом. Но случайно наткнулся на приложение "Монитор ERP" в котором при переходе в раздел "Партнеры" чудесным (совсем не понятно каким) поле ввода для поиска партнера активизируется само. Как в мониторе ERP это получается разобраться не смог, может это глюк обращенный во благо. Подскажите если кто сталкивался.
Активизировать элемент формы при ее открытии можно, установив свойство Активизировать по умолчанию. Это поможет избавить пользователя от лишних действий по переходу на нужный элемент формы и обратит его внимание на самый важный (с точки зрения работы приложения) элемент.
У нас такое сценарий работает через ТекущийЭлемент. При открытии формы мы позиционируемся на поле ввода. А потом после каждой обработке введенного штрих-кода обратно возвращаем ТекущийЭлемент на это поле ввода.
можно конечно голову поломать и что нибудь придумать с 8.3.5.52 с его новым объектом ЗапускПриложенияМобильногоУстройства. например такой изврат будет в 1с инициируем запуск внешнего приложения. вне.прилож читает все что идет со сканера и возвращает данные в 1с. минус только то что нужен синхронный режим работы. получили данные со сканера, отправили в 1с, 1с возвращает ответ чтобы отобразить на экране.
(14) flyer, (31) Широкий, есть ли уже примеры использования этой новой возможности: ЗапускПриложенияМобильногоУстройства, хотелось бы глянуть на пример кода...
Можно ли как-нибудь совсем обойтись без поля ввода? Можно ли отлавливать внешнее событие, или еще как-нибудь? Неужели сканер можно использовать только в режиме клавиатуры?
Идеальный конечно вариант это ВнешнееСобытие и чтобы из этого внешнего можно было получить данные от сканера подключенного через bluetoth в режиме Slave. По моему мнению сделать такое разработчикам мобильной платформы не составит большого труда (по крайней мере для андроида, как дела с ios не знаю) т.к. и API есть и скачивал для пробы маленькие софтинки для андроида в которых данные полученные через bluetoth в режиме slave выводились как в консоль, причем в таком режиме (не через разрыв клавиатуры) скорость получения значения ШК естественно заметно в разы выше. Ну хотя бы вернули ТекущийЭлемент !!! (может производители дорогущих терминалов сбора данных просили 1с этого не делать ?)
(17) dablack, проблему с установкой Текущего элемента при открытии формы я решал через подключение обработчика ожидания, не знаю насколько это актуально для последних релизов 8.3
Не совсем. Если нет клавы - нет и курсора, но поле является активным.
Т.е. если "пальцем" открыть клавиатуру и переключать активность полей по методике в (18) все работает как надо.
(19) flyer, фокусировка насколько я помню работала нормально, был глюк при котором фокусировка не устанавливалась при открытии формы документа, как я писал выше это решалось через "ПодключитьОбработчикОжидания"
одно из моих приложений тоже раньше через обработчик ожидания получал все данные с блютуз сканера штрих кодов. как только это убрали пришлось пользователям самим вручную пальцем поле ввода активировать.беда
Мужики, хелп! Замучился уже.
Сейчас ни в одной из версий моб. платформы нельзя вызвать программно клавиатуру андроида, а без неё не работает ввод данных в поле ввода со сканера ШК через блютуз. Данные не попадают в поле, даже если в нем фокус, пока не тапнешь пальцем по полю.
Решения пока нет?
Сделал бы какой нить умелец приложение, которое могло бы клаву открывать/скрывать.
"ЗапускПриложенияМобильногоУстройства" - добавили, можно было бы через него выкрутитться
(32) Широкий, под активацией вы понимаете что курсор попадает в поле?
клавиатуру нет смысла вызывать например если к устройству подключено блютус сканер. клава при этом сама уходит. сканер становится клавой.
саму клаву можно на форму нарисовать.
Судя по методам и свойствам этого объекта (ЗапускПриложенияМобильногоУстройства) - здесь должен быть не только "запуск файлика"))
ЗапускПриложенияМобильногоУстройства (MobileDeviceApplicationRun)
Свойства:
Данные (Data)
Действие (Action)
ДополнительныеДанные (AdditionalData)
ИмяКласса (ClassName)
Категория (Category)
Приложение (Package)
Тип (Type)
Методы:
Запустить (Run)
Описание:
Предназначен для запуска внешних приложений.
В отличие от метода ЗапуститьПриложение позволяет передать в приложение параметры.
Доступен только на устройствах под управлением операционной системы Android.
Доступность:
Мобильное приложение(клиент).
(38) ferre, с помощью этого метода вы сможете запускать доступные команды внешнего приложения и при этом передавать данные. далее можно получить ответ о результатах.
Та же ерунда, на 8.3.4 Текущий элемент работал, а в 8.3.5 - нет.
И даже в синтаксис помошнике теперь пишет:
Доступность:
Тонкий клиент, веб-клиент, толстый клиент.
Обработчик ожидания без Текущего элемента тоже не поможет
(50) ulterior, я смирился с этим и логику программы изменил. Как правило после сканирования хочется вводить количество, так вот я сделал реквизит с количеством заданным по умолчанию 1 и после сканирования беру информацию из него. В этом случае фокус остается. После сканирования не стоит обращаться к элементам формы, так как это тоже переключит фокус. Т.о. если нужно ввести количество, то сначала вводим количество, а потом сканируем. В моем случае количество редко нужно вводить, поэтому фокус теряем не часто.
Недавно обновлял на андройде мобильную платформу 8.3.5.112, так вот она запросила разрешение на использование блютуз, чтобы это могло означать? Может быть как-то можно установить связь со сканером?
(58) ni032mas,
Не обратил внимание.
А так вроде на хабре 1с анонсировала, что то вроде внешних компонент, но под мобильную платформу. Правда не скоро наверное, но работы ведутся.
Сегодня немного поковырял Мобильную кассу. В ней в макетах зашиты apk файлы Драйвер1СУстройствоВвода и ДрайверСканкодСканерШтрихкодаChipherlab. Суть такова, 1С устанавливает эти приложения на Android, приложения считывают информацию со сканера и как-то передают в 1С. Как все реализовано до конца не разобрался, но одно ясно, что сделано через интенты и ЗапускПриложенияМобильногоУстройства. Непонятно как приложение оповещает 1С о сканировании штрихкода. Декомпилил Драйвер1СУстройствоВвода в манифесте прописаны интенты, которые вызывает 1С, в частности open. Буду дальше разбираться.
Подключили к устройству через OTG сканер штрихкодов - все отлично работает, но после перехода на 8.3.7, может и раньше такое было, но не проверял, штрихкод стал "редактироваться" самостоятельно (И это до события ПриИзменении, событие же ИзменениеТекстаРедактирования при вводе со сканера не обрабатывается). Видно как вводятся все 13 символов, а затем часть из них пропадают (в конце), не всегда и часто разное количество, но все равно пользователей раздражает. Вернулись на 8.3.5.112, там такого глюка нет. Никто не сталкивался с таким? Может это что-то в такси?
Upd Сканирование в другие приложения, к примеру в поле поиска браузера себя ведет нормально.
Устройства разные, от отечественных ImPad 2114, 2414, до Lenovo и ZenPad от Asus, даже проверяли на телефоне Meizu M2 Mini. Сканер пробовали китайский Afanda Alanda из безпроводных и Metrologic (модель не вспомню) проводной.
Все подключалось через OTG и определялось планшетом как аппаратная клавиатура, никаких программ прокладок не использовали. Единственный недостаток - нагрузка на батарею.
(64) У меня та же ситуация. Сканер китайский, прошит в эмуляцию клавиатуры (пробовал несколько разных моделей сканеров). В поле ввода штрихкод попадает весь, при считывании сканером, но потом сам сокращается на произвольное количество символов. Появилось это именно в платформе 8.3.7. На платформе 8.3.6 работает, но не срабатывают процедуры ОкончаниеВводаТекста и ПриИзменении. У кого-нибудь получилось решить это?
Добрый день! Кто-нибудь смог решить текущий вопрос? Интересует, как обойтись желательно без интентов, но на крайний случай, можно и с ними. Нужно, чтобы при открытии формы мой ТСД(на андройде) мог сразу считанный ШК вставлять в активное поле. Ну и желательно без лишних касаний сразу его обрабатывать
с выходом 8.3.9 можем использовать активизацию поля ввода.
используйте НачатьРедактированиеЭлемента(); и ПодключитьОбработчикОжидания
для активного использования трудно использовать
(69)
НачатьРедактированиеЭлемента() замечательно отрабатывает, но мешает отрываемая по-умолчанию клава
при этом если клаву закрыть, то фокус на элементе все равно остается. у кого-нибудь получалось закрыть клаву программно?
НачатьРедактированиеЭлемента() замечательно отрабатывает, но мешает отрываемая по-умолчанию клава
при этом если клаву закрыть, то фокус на элементе все равно остается. у кого-нибудь получалось закрыть клаву программно?
Не прошло и 3 года как заработало) Я уже нативно под андроид научился писать и все началось из-за этой проблемы)))
(75) Честно говоря в разработку мобильных устройств на платформе 1С уже давно не погружался, незачем и нет желания.
Если сама 1С не может скрыть клаву, а я думаю не может, то можно попробовать написать нативное приложение которое сможет это сделать и через 1С его выполнить. Ниже код на Java который скрывает клавиатуру.
Но это все в теории, нужно проверять...
В целом подключать сканер как HID устройство не есть хорошо, нужно подключать в режиме SPP и как-то ловить интенты от сканера в 1С. Тогда не будет проблем, ни с клавиатурой, ни с фокусом.
Я использую сканеры generalscan, они могут подключаться в режиме SPP. Когда во всё это начинаешь погружаться, то понимаешь что проще написать на нативном андроид.
(75)А еще есть модели смартфонов у которых можно скрыть клавиатуру в настройках при подключении сканера в режиме HID. Т.е. тапаешь в поле для сканирования, а клава не появляется.
(77)
Это не сканер, а терминал сбора данных. Он работает без присоединения к компу. Подключается к нему только для передачи собранной информации.
В данный момент сканирует, пополняет собственную базу, после чего формирует XML файл, который при соединении с компом обрабатывается уже далее.
(78)Как я понял, у ТСД сканер подключен в режиме HID? Возможно его можно подключить в режиме SPP и наверняка есть софт для ТСД который делает интенты(намерения) при сканировании, а интент уже содержит штрихкод. Так вот задача стоит в том, чтобы отловить эти интенты с помощью 1С. Тогда, повторюсь, не будет никакого геморроя с клавиатурой и с полем ввода.
(82)
Да.
Щелкаю в поле - вылазит клавиатура.
Заканчиваю ввод текста - выполняю нужные действия.
Программно очищаю поле.
Устанавливаю ТекущийЭлемент - клава скрывается.
(83)А в каком событии отлавливаете окончание ввода текста? И какую кнопку там выставляете? готово, найти или еще какую?
Чет у меня не выходит.
Событие НаименованиеОкончаниеВводаТекста.
В обработчике:
(84)Сделайте форму с двумя полями ввода. На первое повесьте событие приизменении, в нем установите текущим элементом второе поле ввода. Если не получится - набросаю пример. (мобильная платформа 8.3.10)
Александр, подскажите как проверить в каком режиме подключен сканер в ТСД? У меня модель LPT82. Работает под андроидом. В настройках (в том числе и в пункте "для разработчиков") нигде это не указано.