Как скрыть экранную клавиатуру в мобильной платформе 1С на ТСД?

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

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

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

Метод 1. Настройка операционной системы Android (Физическая клавиатура)

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

Разберем по шагам, как это настроить в операционной системе Android:

  1. Откройте системные Настройки вашего терминала сбора данных.
  2. Перейдите в раздел Язык и ввод (в зависимости от версии Android и прошивки производителя этот пункт может находиться внутри раздела Система или Дополнительные настройки).
  3. Найдите подраздел Физическая клавиатура. Этот пункт становится активным, когда операционная система определяет аппаратный блок клавиш ТСД.
  4. Внутри этого меню найдите параметр Показывать виртуальную клавиатуру (на некоторых устройствах он может называться "Использовать экранную клавиатуру").
  5. Деактивируйте этот переключатель.

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

Метод 2. Использование клавиатур-«пустышек» (Null Keyboard)

Если стандартные настройки Android сбрасываются после перезагрузки ТСД или производитель устройства урезал стандартный функционал прошивки, отличным решением является использование специализированных сторонних клавиатур. Существуют клавиатуры-"пустышки", которые физически не имеют графического интерфейса. ОС Android считает, что клавиатура запущена и отображается, но фактически на экране ничего не появляется.

Рассмотрим популярные программные решения для этого обходного пути:

Для применения этого метода выполните следующие шаги:

  1. Скачайте и установите APK-файл выбранной клавиатуры на ваш ТСД.
  2. Перейдите в Настройки -> Язык и ввод -> Виртуальная клавиатура.
  3. Нажмите Управление клавиатурами и активируйте установленную клавиатуру (например, Null Keyboard).
  4. Установите ее в качестве клавиатуры по умолчанию в меню Клавиатура по умолчанию.

Метод 3. Программное решение в 1С через режим «ТолькоПросмотр» и внешнее событие

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

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

Проанализируем пример кода для реализации этой схемы на управляемой форме мобильного приложения:


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

&НаКлиенте
Процедура ВнешнееСобытие(Источник, Событие, Данные)
    
    // Проанализируем поступившее событие от ТСД
    Если Событие = "BarCode" Тогда
        
        // Обрабатываем полученный штрихкод
        Штрихкод = СокрЛП(Данные);
        ОбработатьСканирование(Штрихкод);
        
    ИначеЕсли Событие = "KeyPress" Тогда
        
        // Обработка нажатий физических клавиш (если настроен соответствующий драйвер)
        КодСимвола = Число(Данные);
        ОбработатьНажатиеКлавиши(КодСимвола);
        
    КонецЕсли;
    
КонецПроцедуры

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

Использование свойства ТолькоПросмотр совместно с предопределенной процедурой ВнешнееСобытие гарантирует, что виртуальная клавиатура Android никогда не появится на экране устройства самопроизвольно, а интерфейс приложения останется чистым и удобным для кладовщика.

Метод 4. Использование БПО и современных драйверов оборудования

В современных реалиях разработки под мобильную платформу 1С рекомендуется использовать Библиотеку подключаемого оборудования (БПО) для мобильных приложений. Разработчики мобильной платформы совместно с производителями ТСД (такими как Urovo, Honeywell, Zebra, Клеверенс) поставляют сертифицированные драйверы.

При интеграции устройства через сертифицированный драйвер БПО:

Для перевода терминала в этот режим работы необходимо зайти в настройки системного приложения интеграции сканера на самом ТСД (например, утилита Scanner на ТСД Urovo или аналогичные утилиты на устройствах других брендов) и переключить режим передачи данных со значения Keyboard Emulation (эмуляция клавиатурного ввода в активное поле) на режим Intent Output (передача данных через широковещательное сообщение Android).

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

← На главную