Мобильная платформа, как активизирвать поле ввода для получения штрих-кода
Создаю мобильное приложение под Андроид и пытаюсь прикрутить сканер ШК который соединяется по bluetooth с КПК через HID (эмуляция клавиатуры).
Все хорошо и замечательно работает кроме одного... крайне неудобно и сводит к нулю практическую пользу от приложения тот факт, что необходимо чтобы поле ввода было активировано вручную т.е. на нем стоял курсор и иначе штрих-код сканируется в некуда...Все попытки, что то сделать не увенчались успехом. Но случайно наткнулся на приложение "Монитор ERP" в котором при переходе в раздел "Партнеры" чудесным (совсем не понятно каким) поле ввода для поиска партнера активизируется само. Как в мониторе ERP это получается разобраться не смог, может это глюк обращенный во благо. Подскажите если кто сталкивался.
Все хорошо и замечательно работает кроме одного... крайне неудобно и сводит к нулю практическую пользу от приложения тот факт, что необходимо чтобы поле ввода было активировано вручную т.е. на нем стоял курсор и иначе штрих-код сканируется в некуда...Все попытки, что то сделать не увенчались успехом. Но случайно наткнулся на приложение "Монитор ERP" в котором при переходе в раздел "Партнеры" чудесным (совсем не понятно каким) поле ввода для поиска партнера активизируется само. Как в мониторе ERP это получается разобраться не смог, может это глюк обращенный во благо. Подскажите если кто сталкивался.
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Это же управляемые формы, какой порядок обхода? нет его !
АктивизироватьПоУмолчанию - не прокатывает.
АктивизироватьПоУмолчанию - не прокатывает.
Я сталкивался с глюком таким, что если изменить свойство "Заголовок" у поле надписи, то курсор становится на первое поле ввода на форме
Активизировать элемент формы при ее открытии можно, установив свойство Активизировать по умолчанию. Это поможет избавить пользователя от лишних действий по переходу на нужный элемент формы и обратит его внимание на самый важный (с точки зрения работы приложения) элемент.
У нас такое сценарий работает через ТекущийЭлемент. При открытии формы мы позиционируемся на поле ввода. А потом после каждой обработке введенного штрих-кода обратно возвращаем ТекущийЭлемент на это поле ввода.
ДД! Столкнулся с такой же проблемой. ТекущийЭлементы в мобильном приложение не отрабатывает. Решили ли вы как-нибудь данную проблему?
не знаю зачем они это сделали с 21 версии убрали эту возможность. 8.3.5 тестовая вышла в ней уже тестирую с изображения штрих код снимать.
можно конечно голову поломать и что нибудь придумать с 8.3.5.52 с его новым объектом ЗапускПриложенияМобильногоУстройства. например такой изврат будет в 1с инициируем запуск внешнего приложения. вне.прилож читает все что идет со сканера и возвращает данные в 1с. минус только то что нужен синхронный режим работы. получили данные со сканера, отправили в 1с, 1с возвращает ответ чтобы отобразить на экране.
Можно ли как-нибудь совсем обойтись без поля ввода? Можно ли отлавливать внешнее событие, или еще как-нибудь? Неужели сканер можно использовать только в режиме клавиатуры?
Идеальный конечно вариант это ВнешнееСобытие и чтобы из этого внешнего можно было получить данные от сканера подключенного через bluetoth в режиме Slave. По моему мнению сделать такое разработчикам мобильной платформы не составит большого труда (по крайней мере для андроида, как дела с ios не знаю) т.к. и API есть и скачивал для пробы маленькие софтинки для андроида в которых данные полученные через bluetoth в режиме slave выводились как в консоль, причем в таком режиме (не через разрыв клавиатуры) скорость получения значения ШК естественно заметно в разы выше. Ну хотя бы вернули ТекущийЭлемент !!! (может производители дорогущих терминалов сбора данных просили 1с этого не делать ?)
(17) dablack, проблему с установкой Текущего элемента при открытии формы я решал через подключение обработчика ожидания, не знаю насколько это актуально для последних релизов 8.3
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ПодключитьОбработчикОжидания("АктивироватьПолеШК", 1, Истина);
КонецПроцедуры
&НаКлиенте
Процедура АктивироватьПолеШК()
ТекущийЭлемент = Элементы.ШтрихКод;
Объект.ШтрихКод = "";
КонецПроцедуры
Показать
одно из моих приложений тоже раньше через обработчик ожидания получал все данные с блютуз сканера штрих кодов. как только это убрали пришлось пользователям самим вручную пальцем поле ввода активировать.беда
Мужики, хелп! Замучился уже.
Сейчас ни в одной из версий моб. платформы нельзя вызвать программно клавиатуру андроида, а без неё не работает ввод данных в поле ввода со сканера ШК через блютуз. Данные не попадают в поле, даже если в нем фокус, пока не тапнешь пальцем по полю.
Решения пока нет?
Сейчас ни в одной из версий моб. платформы нельзя вызвать программно клавиатуру андроида, а без неё не работает ввод данных в поле ввода со сканера ШК через блютуз. Данные не попадают в поле, даже если в нем фокус, пока не тапнешь пальцем по полю.
Решения пока нет?
Сделал бы какой нить умелец приложение, которое могло бы клаву открывать/скрывать.
"ЗапускПриложенияМобильногоУстройства" - добавили, можно было бы через него выкрутитться
"ЗапускПриложенияМобильногоУстройства" - добавили, можно было бы через него выкрутитться
(32) Широкий, под активацией вы понимаете что курсор попадает в поле?
клавиатуру нет смысла вызывать например если к устройству подключено блютус сканер. клава при этом сама уходит. сканер становится клавой.
саму клаву можно на форму нарисовать.
клавиатуру нет смысла вызывать например если к устройству подключено блютус сканер. клава при этом сама уходит. сканер становится клавой.
саму клаву можно на форму нарисовать.
Судя по методам и свойствам этого объекта (ЗапускПриложенияМобильногоУстройства) - здесь должен быть не только "запуск файлика"))
ЗапускПриложенияМобильногоУстройства (MobileDeviceApplicationRun)
Свойства:
Данные (Data)
Действие (Action)
ДополнительныеДанные (AdditionalData)
ИмяКласса (ClassName)
Категория (Category)
Приложение (Package)
Тип (Type)
Методы:
Запустить (Run)
Описание:
Предназначен для запуска внешних приложений.
В отличие от метода ЗапуститьПриложение позволяет передать в приложение параметры.
Доступен только на устройствах под управлением операционной системы Android.
Доступность:
Мобильное приложение(клиент).
ЗапускПриложенияМобильногоУстройства (MobileDeviceApplicationRun)
Свойства:
Данные (Data)
Действие (Action)
ДополнительныеДанные (AdditionalData)
ИмяКласса (ClassName)
Категория (Category)
Приложение (Package)
Тип (Type)
Методы:
Запустить (Run)
Описание:
Предназначен для запуска внешних приложений.
В отличие от метода ЗапуститьПриложение позволяет передать в приложение параметры.
Доступен только на устройствах под управлением операционной системы Android.
Доступность:
Мобильное приложение(клиент).
Та же ерунда, на 8.3.4 Текущий элемент работал, а в 8.3.5 - нет.
И даже в синтаксис помошнике теперь пишет:
Доступность:
Тонкий клиент, веб-клиент, толстый клиент.
Обработчик ожидания без Текущего элемента тоже не поможет
И даже в синтаксис помошнике теперь пишет:
Доступность:
Тонкий клиент, веб-клиент, толстый клиент.
Обработчик ожидания без Текущего элемента тоже не поможет
Я им после 8.3.5.74 письмо написал, но в 8.3.5.76 даже в списке исправлений про это ни слова:(
Да и не работает.
Да и не работает.
парни у кого есть доступ к партнерскому форуму почитайте к чему там пришли как выходят с этой ситуации? тут коротенько напишите
8.3.5.83 - не работает
А на мой запрос написали пишите программистам через личный ид, а у меня его нет:(
А на мой запрос написали пишите программистам через личный ид, а у меня его нет:(
(50) ulterior, я смирился с этим и логику программы изменил. Как правило после сканирования хочется вводить количество, так вот я сделал реквизит с количеством заданным по умолчанию 1 и после сканирования беру информацию из него. В этом случае фокус остается. После сканирования не стоит обращаться к элементам формы, так как это тоже переключит фокус. Т.о. если нужно ввести количество, то сначала вводим количество, а потом сканируем. В моем случае количество редко нужно вводить, поэтому фокус теряем не часто.
посмотрите как сделали в мобильной кассе. там отдельная компонента apk. читают с нее и отправляют в 1с результат сканирования.
Недавно обновлял на андройде мобильную платформу 8.3.5.112, так вот она запросила разрешение на использование блютуз, чтобы это могло означать? Может быть как-то можно установить связь со сканером?
Сегодня немного поковырял Мобильную кассу. В ней в макетах зашиты 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 можем использовать активизацию поля ввода.
используйте НачатьРедактированиеЭлемента(); и ПодключитьОбработчикОжидания
для активного использования трудно использовать
используйте НачатьРедактированиеЭлемента(); и ПодключитьОбработчикОжидания
для активного использования трудно использовать
(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)А в каком событии отлавливаете окончание ввода текста? И какую кнопку там выставляете? готово, найти или еще какую?
Чет у меня не выходит.
Событие НаименованиеОкончаниеВводаТекста.
В обработчике:
Клава дергается, но не скрывается
Чет у меня не выходит.
Событие НаименованиеОкончаниеВводаТекста.
В обработчике:
Текст = "";
текущийэлемент = Элемент;
Клава дергается, но не скрывается
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот