Как настроить ТСД Атол Smart.Lite для работы со сканером в мобильном приложении 1С?

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

Работа с терминалами сбора данных (ТСД) на базе Android часто ставит перед разработчиком задачу: как заставить встроенный сканирующий модуль передавать данные напрямую в «1С:Предприятие»? Модель Atol Smart.Lite, оснащенная модулем Zebra SE4710, является популярным бюджетным решением, однако стандартная документация не всегда дает четкий ответ на вопрос интеграции. В этой статье мы подробно разберем, как подружить устройство с мобильной платформой 1С, настроить системные утилиты и реализовать программный перехват штрихкодов.

Понимание архитектуры взаимодействия

Прежде чем приступать к коду, разберем, как именно данные попадают из «стекла» сканера в наше приложение. Существует три основных способа передачи данных:

  1. Keyboard Emulation (Клавиатурный клин) — сканер имитирует нажатие клавиш. Штрихкод попадает в активное поле ввода. Метод прост, но ненадежен для профессиональной разработки, так как требует постоянного фокуса на поле.
  2. Broadcast Intent (Широковещательное сообщение) — наиболее правильный метод. Сканер отправляет системное сообщение Android, которое наше приложение 1С «ловит» через механизм внешнего события.
  3. Direct SDK — прямая работа через Native-библиотеки. Слишком сложно и избыточно для большинства задач в 1С.

Рассмотрим подробнее реализацию через Broadcast Intent, так как именно она обеспечивает стабильную работу в фоновом режиме.

Шаг 1. Настройка системной утилиты Barcode Utility

Для начала нам необходимо настроить само устройство. В ТСД Атол Smart.Lite (который является ОЕМ-версией модели Giot H600) предустановлена программа Barcode Utility. Именно она управляет поведением сканирующей головы.

Выполним следующие настройки по шагам:

  1. Откроем приложение Barcode Utility на ТСД.
  2. Найдем пункт Data Receive Method. По умолчанию там может стоять keyboard_event. Нам необходимо обязательно изменить его на Broadcast_event.
  3. Перейдем в раздел ScanSettings. Здесь критически важно настроить поле Action Name. Это уникальное имя события, по которому 1С будет понимать, что пришел именно штрихкод. Рекомендуется задать строку вида com.android.serial.BARCODE_DATA.
  4. Настроим Extra Name (иногда называется barcode_string). Это ключ в сообщении, содержащий само значение штрихкода. Обычно используется data.
  5. При необходимости в этом же меню можно задать префиксы и суффиксы, хотя при работе через Intent они чаще всего не требуются.

Шаг 2. Инициализация внешней компоненты в 1С

Для того чтобы мобильная платформа могла «слушать» системные сообщения Android, нам потребуется внешняя компонента. Мы можем использовать стандартную компоненту из Библиотеки подключаемого оборудования (БПО) или сторонние Native-компоненты для работы с Intent.

Проанализируем пример кода для подключения компоненты в мобильном приложении:


&НаКлиенте
Процедура ПриОткрытии(Отказ)
    // Попытаемся подключить компоненту для перехвата Broadcast сообщений
    ПутьККомпоненте = "ОбщийМакет.КомпонентаСканера"; 
    Если ПодключитьВнешнююКомпоненту(ПутьККомпоненте, "Broadcasts", ТипВнешнейКомпоненты.Native) Тогда
        СканерОбъект = Новый("AddIn.Broadcasts.ScanReceiver");
        // Настраиваем Action Name, который мы указали в Barcode Utility
        СканерОбъект.Action = "com.android.serial.BARCODE_DATA";
        Сообщить("Драйвер сканера успешно подключен");
    Иначе
        Сообщить("Не удалось подключить компоненту сканера");
    КонецЕсли;
КонецПроцедуры

Шаг 3. Обработка внешнего события

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

Разберем пример обработки входящего штрихкода:


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

Обратите внимание: если внешнее событие не срабатывает, проверьте еще раз настройки Action Name. Они должны посимвольно совпадать в Barcode Utility и в коде 1С.

Особенности работы с Zebra SE4710 и DataMatrix

Модуль Zebra SE4710 отлично справляется с 2D-кодами, что необходимо для работы с маркировкой «Честный Знак». Однако пользователи часто сталкиваются с тем, что DataMatrix считывается не полностью или с ошибками. Выясним причину этого.

В настройках Barcode Utility необходимо зайти в раздел Symbology Settings. Найдите там тип кода DataMatrix и убедитесь, что:

Решение проблемы «засыпания» сканера

На ТСД Атол Smart.Lite (Android 7.0/8.1) существует нюанс: после длительного простоя система может «убить» процесс Barcode Utility для экономии заряда батареи. В результате сканер светится, но данные в 1С не приходят.

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

  1. Зайдите в настройки Android — Батарея.
  2. Выберите пункт Оптимизация экономии заряда.
  3. Найдите в списке Barcode Utility и установите для нее режим «Не экономить».
  4. Также рекомендуется добавить приложение 1С в «белый список» приложений, которым разрешена фоновая активность.

Альтернатива: Использование БПО

Если вы не хотите использовать самописные компоненты, можно воспользоваться стандартной конфигурацией «1С:Библиотека подключаемого оборудования для мобильных приложений». В ней уже реализован универсальный драйвер «Устройства на Android (через Intent)». При его настройке в 1С достаточно будет просто указать те же параметры Action и Extra, которые мы задали в системной утилите ТСД. Это позволит избежать написания низкоуровневого кода и использовать стандартные механизмы БПО для работы с торговым оборудованием.

Подведем итог: успех интеграции Атол Smart.Lite зависит от правильного сочетания настроек утилиты Barcode Utility (режим Broadcast) и корректной подписки на ВнешнееСобытие в мобильной платформе 1С. При соблюдении этих шагов ТСД превращается в мощный инструмент автоматизации склада или производства.

← На главную