Мобильная платформа, как активизирвать поле ввода для получения штрих-кода
Создаю мобильное приложение под Андроид и пытаюсь прикрутить сканер ШК который соединяется по bluetooth с КПК через HID (эмуляция клавиатуры).
Все хорошо и замечательно работает кроме одного... крайне неудобно и сводит к нулю практическую пользу от приложения тот факт, что необходимо чтобы поле ввода было активировано вручную т.е. на нем стоял курсор и иначе штрих-код сканируется в некуда...Все попытки, что то сделать не увенчались успехом. Но случайно наткнулся на приложение "Монитор ERP" в котором при переходе в раздел "Партнеры" чудесным (совсем не понятно каким) поле ввода для поиска партнера активизируется само. Как в мониторе ERP это получается разобраться не смог, может это глюк обращенный во благо. Подскажите если кто сталкивался.
Все хорошо и замечательно работает кроме одного... крайне неудобно и сводит к нулю практическую пользу от приложения тот факт, что необходимо чтобы поле ввода было активировано вручную т.е. на нем стоял курсор и иначе штрих-код сканируется в некуда...Все попытки, что то сделать не увенчались успехом. Но случайно наткнулся на приложение "Монитор ERP" в котором при переходе в раздел "Партнеры" чудесным (совсем не понятно каким) поле ввода для поиска партнера активизируется само. Как в мониторе ERP это получается разобраться не смог, может это глюк обращенный во благо. Подскажите если кто сталкивался.
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Активизировать элемент формы при ее открытии можно, установив свойство Активизировать по умолчанию. Это поможет избавить пользователя от лишних действий по переходу на нужный элемент формы и обратит его внимание на самый важный (с точки зрения работы приложения) элемент.
9.
degtyarev85
04.12.13 13:14
Сейчас в теме
ДД! Столкнулся с такой же проблемой. ТекущийЭлементы в мобильном приложение не отрабатывает. Решили ли вы как-нибудь данную проблему?
можно конечно голову поломать и что нибудь придумать с 8.3.5.52 с его новым объектом ЗапускПриложенияМобильногоУстройства. например такой изврат будет в 1с инициируем запуск внешнего приложения. вне.прилож читает все что идет со сканера и возвращает данные в 1с. минус только то что нужен синхронный режим работы. получили данные со сканера, отправили в 1с, 1с возвращает ответ чтобы отобразить на экране.
Идеальный конечно вариант это ВнешнееСобытие и чтобы из этого внешнего можно было получить данные от сканера подключенного через bluetoth в режиме Slave. По моему мнению сделать такое разработчикам мобильной платформы не составит большого труда (по крайней мере для андроида, как дела с ios не знаю) т.к. и API есть и скачивал для пробы маленькие софтинки для андроида в которых данные полученные через bluetoth в режиме slave выводились как в консоль, причем в таком режиме (не через разрыв клавиатуры) скорость получения значения ШК естественно заметно в разы выше. Ну хотя бы вернули ТекущийЭлемент !!! (может производители дорогущих терминалов сбора данных просили 1с этого не делать ?)
18.
degtyarev85
03.07.14 07:15
Сейчас в теме
(17) dablack, проблему с установкой Текущего элемента при открытии формы я решал через подключение обработчика ожидания, не знаю насколько это актуально для последних релизов 8.3
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ПодключитьОбработчикОжидания("АктивироватьПолеШК", 1, Истина);
КонецПроцедуры
&НаКлиенте
Процедура АктивироватьПолеШК()
ТекущийЭлемент = Элементы.ШтрихКод;
Объект.ШтрихКод = "";
КонецПроцедуры
Показать
20.
degtyarev85
04.07.14 12:12
Сейчас в теме
(19) flyer, фокусировка насколько я помню работала нормально, был глюк при котором фокусировка не устанавливалась при открытии формы документа, как я писал выше это решалось через "ПодключитьОбработчикОжидания"
Мужики, хелп! Замучился уже.
Сейчас ни в одной из версий моб. платформы нельзя вызвать программно клавиатуру андроида, а без неё не работает ввод данных в поле ввода со сканера ШК через блютуз. Данные не попадают в поле, даже если в нем фокус, пока не тапнешь пальцем по полю.
Решения пока нет?
Сейчас ни в одной из версий моб. платформы нельзя вызвать программно клавиатуру андроида, а без неё не работает ввод данных в поле ввода со сканера ШК через блютуз. Данные не попадают в поле, даже если в нем фокус, пока не тапнешь пальцем по полю.
Решения пока нет?
(32) Широкий, под активацией вы понимаете что курсор попадает в поле?
клавиатуру нет смысла вызывать например если к устройству подключено блютус сканер. клава при этом сама уходит. сканер становится клавой.
саму клаву можно на форму нарисовать.
клавиатуру нет смысла вызывать например если к устройству подключено блютус сканер. клава при этом сама уходит. сканер становится клавой.
саму клаву можно на форму нарисовать.
Судя по методам и свойствам этого объекта (ЗапускПриложенияМобильногоУстройства) - здесь должен быть не только "запуск файлика"))
ЗапускПриложенияМобильногоУстройства (MobileDeviceApplicationRun)
Свойства:
Данные (Data)
Действие (Action)
ДополнительныеДанные (AdditionalData)
ИмяКласса (ClassName)
Категория (Category)
Приложение (Package)
Тип (Type)
Методы:
Запустить (Run)
Описание:
Предназначен для запуска внешних приложений.
В отличие от метода ЗапуститьПриложение позволяет передать в приложение параметры.
Доступен только на устройствах под управлением операционной системы Android.
Доступность:
Мобильное приложение(клиент).
ЗапускПриложенияМобильногоУстройства (MobileDeviceApplicationRun)
Свойства:
Данные (Data)
Действие (Action)
ДополнительныеДанные (AdditionalData)
ИмяКласса (ClassName)
Категория (Category)
Приложение (Package)
Тип (Type)
Методы:
Запустить (Run)
Описание:
Предназначен для запуска внешних приложений.
В отличие от метода ЗапуститьПриложение позволяет передать в приложение параметры.
Доступен только на устройствах под управлением операционной системы Android.
Доступность:
Мобильное приложение(клиент).
(50) ulterior, я смирился с этим и логику программы изменил. Как правило после сканирования хочется вводить количество, так вот я сделал реквизит с количеством заданным по умолчанию 1 и после сканирования беру информацию из него. В этом случае фокус остается. После сканирования не стоит обращаться к элементам формы, так как это тоже переключит фокус. Т.о. если нужно ввести количество, то сначала вводим количество, а потом сканируем. В моем случае количество редко нужно вводить, поэтому фокус теряем не часто.
Сегодня немного поковырял Мобильную кассу. В ней в макетах зашиты apk файлы Драйвер1СУстройствоВвода и ДрайверСканкодСканерШтрихкодаChipherlab. Суть такова, 1С устанавливает эти приложения на Android, приложения считывают информацию со сканера и как-то передают в 1С. Как все реализовано до конца не разобрался, но одно ясно, что сделано через интенты и ЗапускПриложенияМобильногоУстройства. Непонятно как приложение оповещает 1С о сканировании штрихкода. Декомпилил Драйвер1СУстройствоВвода в манифесте прописаны интенты, которые вызывает 1С, в частности open. Буду дальше разбираться.
Подключили к устройству через OTG сканер штрихкодов - все отлично работает, но после перехода на 8.3.7, может и раньше такое было, но не проверял, штрихкод стал "редактироваться" самостоятельно (И это до события ПриИзменении, событие же ИзменениеТекстаРедактирования при вводе со сканера не обрабатывается). Видно как вводятся все 13 символов, а затем часть из них пропадают (в конце), не всегда и часто разное количество, но все равно пользователей раздражает. Вернулись на 8.3.5.112, там такого глюка нет. Никто не сталкивался с таким? Может это что-то в такси?
Upd Сканирование в другие приложения, к примеру в поле поиска браузера себя ведет нормально.
Upd Сканирование в другие приложения, к примеру в поле поиска браузера себя ведет нормально.
Устройства разные, от отечественных ImPad 2114, 2414, до Lenovo и ZenPad от Asus, даже проверяли на телефоне Meizu M2 Mini. Сканер пробовали китайский Afanda Alanda из безпроводных и Metrologic (модель не вспомню) проводной.
Все подключалось через OTG и определялось планшетом как аппаратная клавиатура, никаких программ прокладок не использовали. Единственный недостаток - нагрузка на батарею.
Все подключалось через OTG и определялось планшетом как аппаратная клавиатура, никаких программ прокладок не использовали. Единственный недостаток - нагрузка на батарею.
(64) У меня та же ситуация. Сканер китайский, прошит в эмуляцию клавиатуры (пробовал несколько разных моделей сканеров). В поле ввода штрихкод попадает весь, при считывании сканером, но потом сам сокращается на произвольное количество символов. Появилось это именно в платформе 8.3.7. На платформе 8.3.6 работает, но не срабатывают процедуры ОкончаниеВводаТекста и ПриИзменении. У кого-нибудь получилось решить это?
Добрый день! Кто-нибудь смог решить текущий вопрос? Интересует, как обойтись желательно без интентов, но на крайний случай, можно и с ними. Нужно, чтобы при открытии формы мой ТСД(на андройде) мог сразу считанный ШК вставлять в активное поле. Ну и желательно без лишних касаний сразу его обрабатывать
с выходом 8.3.9 можем использовать активизацию поля ввода.
используйте НачатьРедактированиеЭлемента(); и ПодключитьОбработчикОжидания
для активного использования трудно использовать
используйте НачатьРедактированиеЭлемента(); и ПодключитьОбработчикОжидания
для активного использования трудно использовать
70.
elephant_x
155
23.11.16 16:10
Сейчас в теме
(69) Да, вчера сам уже нашел это решение, сегодня уже принимал товар на складе)
73.
odinassdeveloper
24.05.17 14:50
Сейчас в теме
(69)
НачатьРедактированиеЭлемента() замечательно отрабатывает, но мешает отрываемая по-умолчанию клава
при этом если клаву закрыть, то фокус на элементе все равно остается. у кого-нибудь получалось закрыть клаву программно?
НачатьРедактированиеЭлемента() замечательно отрабатывает, но мешает отрываемая по-умолчанию клава
при этом если клаву закрыть, то фокус на элементе все равно остается. у кого-нибудь получалось закрыть клаву программно?
(69)
Не прошло и 3 года как заработало) Я уже нативно под андроид научился писать и все началось из-за этой проблемы)))
НачатьРедактированиеЭлемента() замечательно отрабатывает, но мешает отрываемая по-умолчанию клава
при этом если клаву закрыть, то фокус на элементе все равно остается. у кого-нибудь получалось закрыть клаву программно?
при этом если клаву закрыть, то фокус на элементе все равно остается. у кого-нибудь получалось закрыть клаву программно?
Не прошло и 3 года как заработало) Я уже нативно под андроид научился писать и все началось из-за этой проблемы)))
(75) Честно говоря в разработку мобильных устройств на платформе 1С уже давно не погружался, незачем и нет желания.
Если сама 1С не может скрыть клаву, а я думаю не может, то можно попробовать написать нативное приложение которое сможет это сделать и через 1С его выполнить. Ниже код на Java который скрывает клавиатуру.
Но это все в теории, нужно проверять...
В целом подключать сканер как HID устройство не есть хорошо, нужно подключать в режиме SPP и как-то ловить интенты от сканера в 1С. Тогда не будет проблем, ни с клавиатурой, ни с фокусом.
Я использую сканеры generalscan, они могут подключаться в режиме SPP. Когда во всё это начинаешь погружаться, то понимаешь что проще написать на нативном андроид.
Если сама 1С не может скрыть клаву, а я думаю не может, то можно попробовать написать нативное приложение которое сможет это сделать и через 1С его выполнить. Ниже код на Java который скрывает клавиатуру.
InputMethodManager inputMethodManager = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(), 0);
Но это все в теории, нужно проверять...
В целом подключать сканер как HID устройство не есть хорошо, нужно подключать в режиме SPP и как-то ловить интенты от сканера в 1С. Тогда не будет проблем, ни с клавиатурой, ни с фокусом.
Я использую сканеры generalscan, они могут подключаться в режиме SPP. Когда во всё это начинаешь погружаться, то понимаешь что проще написать на нативном андроид.
(77)
Это не сканер, а терминал сбора данных. Он работает без присоединения к компу. Подключается к нему только для передачи собранной информации.
В данный момент сканирует, пополняет собственную базу, после чего формирует XML файл, который при соединении с компом обрабатывается уже далее.
Это не сканер, а терминал сбора данных. Он работает без присоединения к компу. Подключается к нему только для передачи собранной информации.
В данный момент сканирует, пополняет собственную базу, после чего формирует XML файл, который при соединении с компом обрабатывается уже далее.
(78)Как я понял, у ТСД сканер подключен в режиме HID? Возможно его можно подключить в режиме SPP и наверняка есть софт для ТСД который делает интенты(намерения) при сканировании, а интент уже содержит штрихкод. Так вот задача стоит в том, чтобы отловить эти интенты с помощью 1С. Тогда, повторюсь, не будет никакого геморроя с клавиатурой и с полем ввода.
(83)А в каком событии отлавливаете окончание ввода текста? И какую кнопку там выставляете? готово, найти или еще какую?
Чет у меня не выходит.
Событие НаименованиеОкончаниеВводаТекста.
В обработчике:
Клава дергается, но не скрывается
Чет у меня не выходит.
Событие НаименованиеОкончаниеВводаТекста.
В обработчике:
Текст = "";
текущийэлемент = Элемент;
Клава дергается, но не скрывается
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот