Как настроить ТСД АТОЛ Smart.Touch (Android) для работы с 1С в режиме внешнего события?

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

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

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

Причина проблемы: Режим работы сканера

Чтобы понять, как решить нашу задачу, сначала разберемся в принципах работы сканеров на Android. Существует два основных режима передачи данных от встроенного сканера в приложения:

  1. Эмуляция клавиатуры (Keyboard Wedge). В этом режиме сканер ведет себя как физическая клавиатура. После считывания штрихкода он преобразует его в последовательность нажатий клавиш и отправляет в активное приложение. Это самый простой способ, но он требует, чтобы фокус ввода (курсор) всегда находился в нужном поле.
  2. Широковещательное сообщение (Broadcast Intent). В этом режиме сканер после считывания формирует специальное системное сообщение (Intent) и "транслирует" его по всей операционной системе Android. Любое приложение, которое "подписано" на прослушивание таких сообщений, может его перехватить и обработать. Именно этот механизм используется драйверами 1С для генерации внешнего события.

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

Шаг 1: Настройка ТСД АТОЛ

Первым делом необходимо изменить настройки на самом терминале сбора данных. Для этого найдите на устройстве предустановленную утилиту для управления сканером. Обычно она называется "Scan", "ScanCode", "ScanWedge" или что-то в этом духе, а ее иконка выглядит как штрихкод.

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

  1. Переключение режима вывода. Найдите опцию, которая позволяет выбрать режим работы. Отключите режим эмуляции клавиатуры (Keyboard Wedge или Keyboard Emulation) и включите режим широковещательного сообщения (Broadcast Intent или Intent Output).

  2. Настройка параметров Intent. После активации режима Broadcast вам, скорее всего, потребуется указать два ключевых параметра. Эти параметры — своего рода "адрес", по которому драйвер 1С будет искать сообщения от сканера. Без их правильного указания драйвер просто не "услышит" сканер.

    • Action (Имя действия) — это уникальная строка, идентифицирующая само событие сканирования.
    • Extra Data (Метка данных) — это имя переменной (ключа), в которой передается сам отсканированный штрихкод.

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

Пример 1 (для АТОЛ Smart.Lite):

Пример 2 (для других устройств):

Заполните эти поля в настройках утилиты сканера на ТСД. Проверьте также другие настройки: убедитесь, что отключена отправка данных в буфер обмена (clipboard) и выключена отправка префиксов и суффиксов, так как они могут помешать корректной обработке.

Шаг 2: Настройка драйвера в 1С

После того как ТСД настроен на отправку Broadcast-сообщений, нужно настроить мобильное приложение 1С на их прием. Для этого используется "1С:Библиотека подключаемого оборудования для мобильных приложений" (МБПО). Крайне важно не путать ее со стандартной БПО для настольных версий Windows — драйверы из нее на Android работать не будут.

Рассмотрим два основных варианта драйверов, которые можно использовать.

Вариант А: Специализированный драйвер "АТОЛ:Устройства ввода данных"

Начиная с версии МБПО 2.17.2, компания "АТОЛ" совместно с 1С выпустила специализированный драйвер для своих устройств. Это предпочтительный вариант, так как он разработан специально для ТСД АТОЛ и с большой вероятностью содержит все необходимые настройки "из коробки".

  1. Убедитесь, что у вас установлена актуальная версия МБПО.
  2. В настройках подключаемого оборудования в мобильном приложении 1С выберите драйвер "АТОЛ:Устройства ввода данных".
  3. Подключите его и проверьте работу. В большинстве случаев дополнительных настроек не потребуется, так как драйвер уже "знает", какие сообщения ожидать от сканера АТОЛ.

Вариант Б: Универсальный драйвер "1С:Сканер штрихкода (Native)"

Если специализированного драйвера нет или он по какой-то причине не работает, можно использовать универсальный драйвер от 1С. Он также умеет работать с Broadcast-сообщениями, но требует ручной настройки.

  1. В настройках подключаемого оборудования выберите драйвер "1С:Сканер штрихкода (Native)".

  2. Перейдите в его настройки. Здесь вы увидите поля, аналогичные тем, что мы настраивали на ТСД: "Action" и "Extra Data".

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

  4. Сохраните настройки, подключите драйвер и проверьте сканирование. Теперь при считывании штрихкода должно срабатывать внешнее событие в 1С.

Что делать, если все равно не работает?

Если вы выполнили все шаги, а внешнее событие так и не генерируется, проанализируем возможные причины:

В качестве финальной проверки можно временно вернуть на ТСД режим эмуляции клавиатуры и попробовать подключить его в 1С с помощью стандартного драйвера для клавиатурных устройств (например, "1С:Сканеры штрихкода (Native)" в режиме "Клавиатура"). Если в этом режиме штрихкод будет появляться в полях ввода, значит, связь между устройством и приложением есть, и проблема точно кроется в настройках режима Broadcast Intent.

Следуя этим шагам, вы сможете успешно "подружить" ТСД АТОЛ Smart.Touch с вашим мобильным приложением 1С, обеспечив надежную и быструю обработку штрихкодов через механизм внешних событий.

← На главную