Как убрать экранную клавиатуру при сканировании штрихкодов в мобильном клиенте 1С на Android?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При автоматизации складского учета и розничной торговли с использованием мобильного клиента 1С на операционной системе Android разработчики часто сталкиваются со следующей проблемой. При сканировании штрихкода с помощью терминала сбора данных (ТСД) устройство по умолчанию эмулирует нажатие клавиш клавиатуры (режим Keystroke emulation). Для того чтобы штрихкод попал в программу, фокус ввода (курсор) должен находиться в текстовом поле формы 1С. Однако, как только текстовое поле становится активным, операционная система Android автоматически выдвигает экранную (виртуальную) клавиатуру на половину экрана. Это перекрывает интерфейс приложения, замедляет работу оператора и создает существенный дискомфорт.

В этой статье мы подробно разберем, как решить проблему всплывающей экранной клавиатуры, сохранив при этом стабильное сканирование штрихкодов. Мы проанализируем различные подходы — от самых простых системных «костылей» до профессиональной настройки обмена данными через Android Intent и библиотеку подключаемого оборудования (БПО) 1С.

Причина возникновения проблемы

Прежде чем перейти к решениям, выясним причину такого поведения системы. Большинство Android-ТСД «из коробки» настроены так, чтобы передавать считанные данные штрихкода самым простым путем — имитируя быстрый последовательный ввод символов с клавиатуры. Для операционной системы Android и для мобильного клиента 1С этот процесс выглядит так, будто пользователь вручную с огромной скоростью набирает цифры штрихкода на физической клавиатуре. Поскольку фокус установлен на текстовое поле ввода, Android считает своим долгом помочь пользователю и открывает виртуальную экранную клавиатуру (IME) для ввода данных. Наша задача — заставить операционную систему понять, что выводить виртуальные клавиши на экран нет необходимости.

---

Решение 1. Профессиональный метод: Перевод сканера в режим Intent (через БПО)

Самым надежным, быстрым и технологически правильным способом работы со сканером на ТСД является отказ от клавиатурной эмуляции в пользу механизма Android Intent. В этом режиме сканер ТСД не «печатает» штрихкод в активное поле, а отправляет широковещательное сообщение (Broadcast Intent) внутри операционной системы. Мобильный клиент 1С перехватывает это сообщение и генерирует внешнее событие. При необходимости можно использовать готовые примеры мобильных конфигураций для настройки встроенных Android-сканеров через Intent.

Преимущества этого метода:

Рассмотрим по шагам, как настроить этот режим на примере популярного ТСД Zebra MC3300 и платформы 1С:

Шаг 1.1. Настройка утилиты DataWedge на ТСД Zebra

На устройствах Zebra управление встроенным сканером осуществляется через предустановленное приложение DataWedge. Нам необходимо настроить профиль сканера для работы с мобильным клиентом 1С:

  1. Откройте приложение DataWedge на вашем ТСД.
  2. Выберите профиль, который используется для вашего приложения (обычно это Profile0 или создайте отдельный профиль для приложения 1С).
  3. Найдите раздел Keystroke output (Эмуляция клавиатуры) и полностью отключите его (снимите галочку Enabled).
  4. Найдите раздел Intent output (Вывод через Intent) и включите его (установите галочку Enabled).
  5. Установите параметр Intent delivery в значение Broadcast intent.
  6. Задайте параметр Intent action. Вы можете использовать любое уникальное имя, например, com.1c.mobile.SCAN. Запомните это имя, оно понадобится нам при настройке 1С.
  7. Параметр Intent category оставьте по умолчанию или укажите категорию вашего приложения.

Шаг 1.2. Настройка мобильного клиента 1С

Теперь нам нужно научить 1С принимать эти широковещательные сообщения. В современных версиях платформы 1С v8.3 мобильный клиент имеет встроенную поддержку работы с Intent-событиями через библиотеку подключаемого оборудования (БПО). При возникновении проблем с приемом событий на Android 13 и выше пригодится решение для устранения бага с получением данных от сканеров Zebra и Meferi.

  1. Интегрируйте в вашу конфигурацию подсистему «Подключаемое оборудование» из БПО мобильного приложения.
  2. В настройках подключаемого оборудования добавьте новое устройство с типом драйвера «1С:Сканер штрихкода (NativeApi)».
  3. В параметрах подключения устройства укажите способ подключения: Широковещательный Intent.
  4. Впишите в поле Action (Действие) то же самое имя, которое вы указали в DataWedge — com.1c.mobile.SCAN.
  5. Настройте имя переменной, в которой передаются данные штрихкода (обычно для Zebra это com.symbol.datawedge.data_string).

После этого напишем код для обработки внешнего события в модуле формы 1С:


&НаКлиенте
Процедура ПриОткрытии(Отказ)
    // Подключаем обработчик сканера штрихкодов
    ПодключитьОбработчикОповещения("ОбработкаСканирования");
КонецПроцедуры

&НаКлиенте
Процедура ОбработкаСканирования(ДанныеСканирования, Источник, Результат) Экспорт
    Если Результат Тогда
        Штрихкод = ДанныеСканирования.Значение;
        // Вызываем серверную или клиентскую процедуру обработки штрихкода
        ОбработатьПолученныйШтрихкод(Штрихкод);
    КонецЕсли;
КонецПроцедуры

Использование этого подхода полностью исключает появление экранной клавиатуры и делает работу с ТСД максимально быстрой и профессиональной.

---

Решение 2. Системная настройка Android (для устройств с физической клавиатурой)

Многие промышленные ТСД, такие как Zebra MC3300, Caribe PL-40L и другие, оснащены полноценной аппаратной (физической) клавиатурой. В операционной системе Android предусмотрен штатный механизм отключения экранной клавиатуры при обнаружении подключенной физической клавиатуры.

Давайте проанализируем, как активировать эту настройку:

  1. Перейдите в системные Настройки (Settings) вашего ТСД под управлением Android.
  2. Найдите раздел Язык и ввод (Languages & input) или Система -> Язык и ввод.
  3. Перейдите в пункт меню Физическая клавиатура (Physical keyboard).
  4. Найдите переключатель Показывать виртуальную клавиатуру (Show virtual keyboard / Show on-screen keyboard) и переведите его в выключенное состояние.

После выключения этой опции Android будет понимать, что у устройства есть аппаратные клавиши для ввода букв и цифр, поэтому выводить на экран виртуальные кнопки больше не нужно. При позиционировании курсора в текстовом поле в 1С экранная клавиатура появляться не будет, но физический ввод (и, соответственно, сканирование в режиме клавиатурной эмуляции) продолжит функционировать в штатном режиме.

---

Решение 3. Использование специализированных приложений-клавиатур (Null Keyboard)

Если специфика вашего ТСД не позволяет настроить отправку через Intent (например, используется старая модель сканера или сильно урезанная прошивка Android), а системная настройка физической клавиатуры отсутствует, можно прибегнуть к программному обходу проблемы. Для этого используются так называемые «пустые клавиатуры» — специальные Android-приложения, которые регистрируются в системе как метод ввода (IME), но физически не отображают никаких кнопок на экране.

Наиболее популярными и проверенными решениями являются приложения "Null Input Method" и "Null Keyboard".

Пошаговый алгоритм настройки:

  1. Скачайте и установите приложение "Null Input Method" (или аналогичное) из магазина приложений Google Play Маркет или установите его напрямую через APK-файл.
  2. Зайдите в системные настройки Android в раздел Язык и ввод -> Виртуальная клавиатура -> Управление клавиатурами.
  3. Активируйте (разрешите использование) установленной клавиатуры Null Input Method.
  4. При активации поля ввода в 1С, когда на экране появится стандартная клавиатура, потяните шторку уведомлений вниз или нажмите на иконку клавиатуры в правом нижнем углу экрана для смены метода ввода.
  5. Выберите в списке активных клавиатур Null Input Method.

Экранная клавиатура мгновенно исчезнет и больше не будет появляться при фокусе на полях ввода 1С. Сканирование штрихкода при этом продолжит корректно отрабатывать. При использовании приложения Null Input Method вы также сохраняете возможность быстро переключаться обратно на стандартную клавиатуру (например, Gboard) через панель уведомлений Android, если вам экстренно потребуется ввести текстовые данные вручную.

---

Решение 4. Настройка Zebra Enterprise Keyboard

На многих современных ТСД Zebra предустановлено фирменное ПО Enterprise Keyboard. Это продвинутая экранная клавиатура, спроектированная специально для корпоративного использования.

В настройках Enterprise Keyboard присутствует гибкая конфигурация правил отображения клавиатуры. Мы можем настроить ее так, чтобы клавиатура автоматически скрывалась при сканировании штрихкодов или вообще была заблокирована для конкретного приложения (например, для мобильного клиента 1С). Ознакомьтесь с руководством к вашему ТСД Zebra, чтобы настроить профиль Enterprise Keyboard под бизнес-требования вашего склада.

---

Решение 5. Программный контроль фокуса внутри 1С

Если вам все же приходится использовать эмуляцию клавиатуры и стандартный ввод, можно попробовать минимизировать время нахождения клавиатуры на экране программными методами 1С. Рассмотрим логику работы с фокусом формы.

Для этого мы можем использовать свойство элемента формы ТолькоЧтение или динамически управлять видимостью и фокусом элементов. Посмотрим на пример кода, который после считывания штрихкода сразу переводит фокус на кнопку формы, у которой нет свойства текстового ввода, что заставляет Android свернуть экранную клавиатуру:


&НаКлиенте
Процедура ПолеВводаШтрихкодаПриИзменении(Элемент)
    // Штрихкод успешно считан в поле ввода
    Штрихкод = Объект.ПолеВводаШтрихкода;
    
    // Выполняем обработку данных
    ОбработатьШтрихкод(Штрихкод);
    
    // Очищаем поле ввода для следующего сканирования
    Объект.ПолеВводаШтрихкода = "";
    
    // Сдвигаем фокус на кнопку формы, чтобы убрать клавиатуру с экрана
    ЭтаФорма.ТекущийЭлемент = Элементы.ДекорацияСтатусСканирования;
КонецПроцедуры

Этот способ является компромиссным и требует ручной доработки каждой формы, где происходит сканирование, однако в сочетании с другими методами он позволяет добиться приемлемого удобства работы пользователей.

Резюме и рекомендации

Мы подробно разобрали все возможные варианты отключения экранной клавиатуры при сканировании штрихкодов в мобильном клиенте 1С под Android. Выбор конкретного метода зависит от технических характеристик вашего ТСД:

← На главную