Как настроить встроенный сканер штрихкодов Android-ТСД в мобильном приложении 1С?

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

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

В этой статье мы подробно разберем, как решить эту задачу с помощью Мобильной библиотеки подключаемого оборудования (мБПО), правильно настроить сам терминал (на примере популярного ТСД Chainway C4050 Q4) и написать стабильный код для перехвата событий сканирования в управляемых формах мобильного приложения.

Понимание проблемы: почему сканер не работает «из коробки»

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

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

Шаг 1. Настройка терминала сбора данных (утилита Keyboardemulator)

Прежде чем переходить к программированию в 1С, необходимо правильно настроить службу сканера на самом ТСД под управлением Android. На терминалах Chainway (и многих других марках, таких как Urovo, Атол, Honeywell) за работу встроенного сканера отвечает предустановленное системное приложение — утилита Keyboardemulator (или аналогичная Barcode Utility).

Выполним последовательную настройку утилиты на ТСД:

  1. Откроем приложение Keyboardemulator на главном экране ТСД.
  2. Перейдем в раздел настроек приложения (обычно это кнопка AppSettings или Settings).
  3. Найдем параметр, отвечающий за режим вывода данных (он может называться Output Mode, Process Mode или Release Play).
  4. Установим режим работы Scan Content on Cursor (Сканировать содержимое в позицию курсора). Как показывает практика интеграции ТСД Chainway C4050 Q4, стандартный режим эмуляции клавиатуры (Keyboard Mode) часто не позволяет драйверу 1С корректно перехватывать поток данных. Режим «Scan Content on Cursor» обеспечивает передачу данных единым пакетом, что критически важно для корректного распознавания.
  5. Убедимся, что отключены лишние префиксы и суффиксы (такие как автоматический перенос строки Enter или символ Tab после штрихкода), если это не требуется логикой работы. Наша цель — передавать «чистый» штрихкод.

Шаг 2. Подключение мобильной БПО и выбор правильного драйвера

Для интеграции торгового оборудования фирма 1С предоставляет готовое решение — Библиотеку подключаемого оборудования для мобильных приложений (мБПО). Мы настоятельно рекомендуем использовать именно ее, так как она содержит готовые шаблоны интеграции, сертифицированные драйверы и демонстрационную базу данных, на которой можно протестировать любые комбинации настроек.

Рассмотрим важный нюанс, с которым столкнулся автор темы: использование стандартного драйвера Native API (разработки 1С) на некоторых моделях ТСД со старыми версиями Android или специфическими прошивками может не дать результата. В этом случае наиболее надежным и стабильным решением является использование драйвера «Устройство ввода».

Для настройки оборудования в мобильном приложении выполним следующие действия:

  1. Интегрируем подсистему мБПО в нашу мобильную конфигурацию.
  2. В режиме предприятия откроем форму настройки подключаемого оборудования.
  3. Создадим новое устройство с типом Сканеры штрихкода.
  4. В качестве обработчика драйвера выберем системный драйвер 1С:Устройство ввода (Multi-touch / Keyboard) или соответствующий специализированный драйвер из комплекта поставки мБПО.
  5. В параметрах подключения укажем порт или режим работы, соответствующий клавиатурному вводу, который мы настроили на ТСД на предыдущем шаге.

Шаг 3. Написание кода перехвата события сканирования в 1С

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

Рассмотрим правильную схему инициализации и перехвата штрихкода.

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


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

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


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

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

Альтернативный промышленный стандарт: Работа через Broadcast Intent (Широковещательные сообщения)

Описанный выше метод клавиатурной эмуляции («Scan Content on Cursor») прост в реализации, но имеет существенный недостаток: сканирование работает только тогда, когда фокус ввода находится на форме (или активна конкретная строка ввода). Если пользователь случайно закроет активное поле или откроется модальное окно предупреждения, штрихкод может не считаться или вставиться некорректно.

Для крупных промышленных решений более надежным методом является использование Broadcast Intents (Широковещательных сообщений Android). При таком подходе операционная система Android при сканировании отправляет фоновое системное событие, которое мобильное приложение 1С ловит независимо от фокуса курсора.

Рассмотрим, как настроить этот режим:

  1. В утилите сканера на ТСД (например, Keyboardemulator) переключите режим вывода (Output Mode) в положение Broadcast Receiver.
  2. Задайте имя системного действия (Intent Action) — например, com.scanner.broadcast.
  3. Задайте имя ключа данных (Intent Extra) — например, barcode_string.
  4. В настройках мобильной БПО выберите стандартный драйвер 1С:Сканеры штрихкода (Native Api).
  5. В параметрах подключения укажите тип соединения Broadcast и введите те же параметры Intent Action и Intent Extra, которые вы настроили в ТСД.

При такой настройке считанные данные будут поступать в предопределенную процедуру мобильной платформы ОбработкаВнешнегоСобытия:


&НаКлиенте
Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные)
    
    // Обрабатываем аппаратное событие от сканера Native API в режиме Broadcast
    Если Источник = "СканерШтрихкода" Или Источник = "BarCodeScan" Тогда
        
        Штрихкод = СокрЛП(Данные);
        ОбработатьПолученныйШтрихкод(Штрихкод);
        
    КонецЕсли;
    
КонецПроцедуры

Возможные проблемы и пути их решения

При тестировании встроенных сканеров разработчики часто сталкиваются с аппаратными особенностями ТСД и ОС Android. Проанализируем самые частые из них:

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

← На главную