При подключении терминалов сбора данных (ТСД), таких как АТОЛ Smart.Touch, к мобильным приложениям 1С часто возникает ситуация: сканер работает, но только в режиме эмуляции клавиатуры. Это означает, что отсканированный штрихкод просто вставляется в то поле, где сейчас находится курсор. Такой режим неудобен и ограничивает функциональность, так как не позволяет выполнять сложную бизнес-логику в фоновом режиме по факту сканирования.
Основная задача — заставить ТСД не просто "печатать" штрихкод, а генерировать системное внешнее событие, которое мобильное приложение 1С сможет перехватить и обработать специальной процедурой. Давайте подробно разберем, как этого добиться.
Чтобы понять, как решить нашу задачу, сначала разберемся в принципах работы сканеров на Android. Существует два основных режима передачи данных от встроенного сканера в приложения:
Intent) и "транслирует" его по всей операционной системе Android. Любое приложение, которое "подписано" на прослушивание таких сообщений, может его перехватить и обработать. Именно этот механизм используется драйверами 1С для генерации внешнего события.Таким образом, наша проблема заключается в том, что ТСД по умолчанию настроен на работу в режиме эмуляции клавиатуры. Наша цель — переключить его в режим Broadcast Intent и настроить 1С на прием этих сообщений.
Первым делом необходимо изменить настройки на самом терминале сбора данных. Для этого найдите на устройстве предустановленную утилиту для управления сканером. Обычно она называется "Scan", "ScanCode", "ScanWedge" или что-то в этом духе, а ее иконка выглядит как штрихкод.
Внутри этой утилиты нам нужно найти раздел, отвечающий за режим вывода данных (Output Mode) и параметры широковещательного сообщения.
Переключение режима вывода. Найдите опцию, которая позволяет выбрать режим работы. Отключите режим эмуляции клавиатуры (Keyboard Wedge или Keyboard Emulation) и включите режим широковещательного сообщения (Broadcast Intent или Intent Output).
Настройка параметров Intent. После активации режима Broadcast вам, скорее всего, потребуется указать два ключевых параметра. Эти параметры — своего рода "адрес", по которому драйвер 1С будет искать сообщения от сканера. Без их правильного указания драйвер просто не "услышит" сканер.
Важно: эти параметры специфичны для каждого производителя и даже модели ТСД. Их нужно либо найти в документации к устройству, либо подобрать экспериментально. Вот несколько примеров, которые встречались на практике:
Пример 1 (для АТОЛ Smart.Lite):
Action Name: com.xcheng.scanner.action.BARCODE_DECODING_BROADCASTExtra Data: EXTRA_BARCODE_DECODING_DATAПример 2 (для других устройств):
Action: com.hht.scanwedgeCategory: android.intent.category.DEFAULTScan Data Label (метка данных): com.hht.datawedge.data_stringScan Type Label (метка типа кода): com.hht.datawedge.label_typeЗаполните эти поля в настройках утилиты сканера на ТСД. Проверьте также другие настройки: убедитесь, что отключена отправка данных в буфер обмена (clipboard) и выключена отправка префиксов и суффиксов, так как они могут помешать корректной обработке.
После того как ТСД настроен на отправку Broadcast-сообщений, нужно настроить мобильное приложение 1С на их прием. Для этого используется "1С:Библиотека подключаемого оборудования для мобильных приложений" (МБПО). Крайне важно не путать ее со стандартной БПО для настольных версий Windows — драйверы из нее на Android работать не будут.
Рассмотрим два основных варианта драйверов, которые можно использовать.
Начиная с версии МБПО 2.17.2, компания "АТОЛ" совместно с 1С выпустила специализированный драйвер для своих устройств. Это предпочтительный вариант, так как он разработан специально для ТСД АТОЛ и с большой вероятностью содержит все необходимые настройки "из коробки".
"АТОЛ:Устройства ввода данных".Если специализированного драйвера нет или он по какой-то причине не работает, можно использовать универсальный драйвер от 1С. Он также умеет работать с Broadcast-сообщениями, но требует ручной настройки.
В настройках подключаемого оборудования выберите драйвер "1С:Сканер штрихкода (Native)".
Перейдите в его настройки. Здесь вы увидите поля, аналогичные тем, что мы настраивали на ТСД: "Action" и "Extra Data".
Внимательно и без ошибок скопируйте в эти поля значения, которые вы указали в утилите сканера на ТСД на шаге 1. Любое несоответствие, включая регистр символов или лишний пробел, приведет к тому, что драйвер не сможет перехватить событие.
Сохраните настройки, подключите драйвер и проверьте сканирование. Теперь при считывании штрихкода должно срабатывать внешнее событие в 1С.
Если вы выполнили все шаги, а внешнее событие так и не генерируется, проанализируем возможные причины:
Action и Extra Data. Это самая частая причина неудач. Убедитесь, что они полностью идентичны в настройках ТСД и в настройках драйвера 1С.В качестве финальной проверки можно временно вернуть на ТСД режим эмуляции клавиатуры и попробовать подключить его в 1С с помощью стандартного драйвера для клавиатурных устройств (например, "1С:Сканеры штрихкода (Native)" в режиме "Клавиатура"). Если в этом режиме штрихкод будет появляться в полях ввода, значит, связь между устройством и приложением есть, и проблема точно кроется в настройках режима Broadcast Intent.
Следуя этим шагам, вы сможете успешно "подружить" ТСД АТОЛ Smart.Touch с вашим мобильным приложением 1С, обеспечив надежную и быструю обработку штрихкодов через механизм внешних событий.