При разработке мобильных приложений на платформе 1С для работы с терминалами сбора данных (ТСД) часто возникает задача подключения аппаратного сканера ТСД (удобно через подключение ТСД к 1С для выполнения операций), чтобы не использовать камеру устройства. Это особенно актуально для ускорения и повышения точности операций, таких как приемка товаров по штрихкодам на складе. В данном материале мы рассмотрим несколько эффективных подходов для подключения сканера ТСД UROVO к вашему мобильному приложению 1С, включая использование Библиотеки Подключаемого Оборудования (БПО) 1С, внешних компонент сторонних разработчиков и настройку Android-интентов.
Ваше приложение для Android уже успешно работает со сканированием штрихкодов с помощью камеры устройства, однако для работы с ТСД UROVO нам необходимо подключиться именно к встроенному сканеру устройства, перехватывать событие сканирования по аппаратной кнопке и обрабатывать полученный штрихкод. Давайте разберем, как это сделать. Для этой задачи есть мобильное приложение 1С для ТСД и склада.
Библиотека Подключаемого Оборудования (БПО) от 1С – это комплексное решение, предназначенное для работы с различными видами торгового оборудования, включая ТСД — есть использование Android в качестве беспроводного сканера. Она содержит сертифицированные драйверы и является рекомендуемым подходом для интеграции оборудования с продуктами 1С.
Получение БПО. Прежде всего, нам необходимо получить саму библиотеку. БПО доступна зарегистрированным пользователям продуктов системы «1С:Предприятие 8» версии ПРОФ при наличии действующего договора «1С:ИТС». Вы можете найти ее на сайте поддержки пользователей 1С или на сайте its.1c.ru в разделе «Библиотека подключаемого оборудования для мобильных приложений».
Особенности размера БПО. Обратите внимание, что БПО имеет значительный размер, порядка 800 МБ. Для мобильного приложения такой объем может быть избыточным, так как ваше приложение будет содержать драйверы для большого количества оборудования, которое не будет использоваться. Чтобы уменьшить размер приложения, мы можем удалить неиспользуемые общие макеты, в которых хранятся внешние компоненты. После того как вы подключите БПО к своей конфигурации, перейдите в раздел «Общие макеты» и аккуратно удалите те макеты, которые не относятся к драйверам ТСД UROVO или другому необходимому оборудованию. Этот шаг поможет значительно сократить объем вашего мобильного приложения.
Интеграция и потенциальные проблемы. После того как вы включите БПО в свою конфигурацию, вы сможете использовать ее функционал. Однако, пользователи сталкиваются с тем, что для мобильных устройств UROVO в стандартной БПО может использоваться не самая актуальная внешняя компонента. В таких случаях мы рекомендуем обратиться к разработчикам сторонних драйверов, например, к компании «РайтСкан», которая предоставляет более свежие компоненты и, возможно, более простые примеры кода для работы с ними.
Компания «РайтСкан» предлагает свою внешнюю компоненту «RS: Exchange», которая является эффективным инструментом для обмена данными между настольной 1С и мобильной платформой 1С. Этот драйвер хорошо зарекомендовал себя при работе с ТСД UROVO и может быть более предпочтительным вариантом, если стандартные компоненты БПО оказываются устаревшими или сложными в настройке.
Назначение и состав. Драйвер «RS: Exchange» состоит из двух основных частей: мобильной компоненты, предназначенной для интеграции в 1С:Мобильную платформу, и обработчика драйвера для ПК, который обеспечивает связь с основной базой 1С — это автоматизация складских операций на базе ТСД. Этот комплекс позволяет наладить стабильный обмен данными и управление ТСД непосредственно из мобильного приложения 1С.
Интеграция в конфигурацию. Мобильная компонента интегрируется в общий макет конфигурации вашего мобильного приложения 1С. После интеграции вы получаете доступ к программному интерфейсу для работы со сканером ТСД.
Настройка ТСД UROVO. Для корректной работы с решениями «РайтСкан» (например, «1С:Мобильная торговля» от RS:Mobile ACS) часто требуется выполнить дополнительную настройку на самом ТСД UROVO. В частности, необходимо отключить функцию «Сканировать в поле» в настройках сканера ТСД. Это делается через встроенное приложение для настройки сканера на устройстве, такое как ScanWedge или аналогичное.
Пример кода для подключения. Рассмотрим пример кода на 1С, который демонстрирует, как мы можем подключить сканер через внешнюю компоненту «РайтСкан». Этот код обычно размещается в общем модуле или в модуле формы вашего мобильного приложения:
Функция ПодключитьСканер() Экспорт
СканерШК = Неопределено;
Попытка
// Подключаем внешнюю компоненту из общего макета.
// Предполагается, что "ОбщийМакет.ДрайверRightScanУстройстваВвода" содержит бинарные данные компоненты.
ПодключитьВнешнююКомпоненту("ОбщийМакет.ДрайверRightScanУстройстваВвода","RSDriver",ТипВнешнейКомпоненты.Native);
// Создаем новый объект внешней компоненты.
СканерШК = Новый ("AddIn.RSDriver.RSDriver");
// Создаем структуру с параметрами для настройки сканера.
// Эти параметры могут варьироваться в зависимости от конкретной версии компоненты и требований.
ПараметрыПодключения = Новый Структура;
ПараметрыПодключения.Вставить("P_Barcode_BEEP",Истина); // Включить звуковой сигнал при успешном сканировании ШК
ПараметрыПодключения.Вставить("P_Barcode_BZZ" ,Истина); // Включить вибросигнал при успешном сканировании ШК
ПараметрыПодключения.Вставить("P_RFID_BEEP",Ложь); // Отключить звук для RFID
ПараметрыПодключения.Вставить("P_RFID_BZZ",Истина); // Включить вибрацию для RFID
ПараметрыПодключения.Вставить("P_NFC_KEY" ,""); // Ключ для NFC (если используется)
ПараметрыПодключения.Вставить("P_KBD_BEEP",Ложь); // Отключить звук для клавиатуры
ПараметрыПодключения.Вставить("P_KBD_BZZ",Ложь); // Отключить вибрацию для клавиатуры
// Устанавливаем параметры внешней компоненте.
Для Каждого Параметр Из ПараметрыПодключения Цикл
ЗначениеПараметра = Параметр.Значение;
ИмяПараметра = Сред(Параметр.Ключ, 3); // Удаляем префикс "P_" из имени параметра
СканерШК.УстановитьПараметр(ИмяПараметра, ЗначениеПараметра)
КонецЦикла;
Исключение
// Если компонента не загрузилась или возникла другая ошибка при инициализации.
Сообщить(НСтр("ru='Не удалось загрузить драйвер устройства.'"));
Возврат Неопределено; // Возвращаем Неопределено, чтобы показать ошибку.
КонецПопытки;
Попытка
// Подключаем сканер. Метод "Подключить" обычно инициализирует связь с аппаратным сканером.
Ответ = СканерШК.Подключить("");
// Здесь мы можем проверить "Ответ", если компонент возвращает статус подключения.
Исключение
// Если подключение не удалось.
Сообщить(НСтр("ru='Ошибка при подключении сканера: '") + ОписаниеОшибки());
Возврат Неопределено;
КонецПопытки;
// Если все успешно, возвращаем объект сканера для дальнейшей работы.
Возврат СканерШК;
КонецФункции
В этом примере мы сначала пытаемся подключить внешнюю компоненту, которая хранится в общем макете под именем ДрайверRightScanУстройстваВвода. Затем создаем экземпляр объекта AddIn.RSDriver.RSDriver. Далее мы формируем структуру ПараметрыПодключения, в которой задаются различные настройки для сканера, такие как включение/отключение звукового и вибросигнала при сканировании штрихкодов или RFID-меток. Эти параметры устанавливаются с помощью метода УстановитьПараметр. Наконец, вызываем метод Подключить("") для инициализации самого сканера. Если подключение успешно, функция возвращает объект сканера, с которым мы можем взаимодействовать в дальнейшем.
Многие ТСД на базе Android, включая устройства UROVO, поддерживают режим «Broadcast» или «Intent Output» — для этого подойдёт мобильное приложение ТСД для работы с маркировкой. В этом режиме сканер, после успешного считывания штрихкода, отправляет его в виде стандартного Android-интента, который ваше мобильное приложение 1С может «перехватить» и обработать. Этот подход не требует прямых внешних компонент в 1С для взаимодействия со сканером, а использует стандартные механизмы Android.
Принцип работы. Суть метода заключается в том, что системное приложение сканера на ТСД (например, ScanWedge) не просто вводит данные в активное текстовое поле (как при режиме «Keyboard Emulation»), а формирует и рассылает Android-интент, содержащий отсканированный штрихкод. Ваше мобильное приложение 1С настраивается на прослушивание таких интентов.
Параметры интента для UROVO. Для настройки ТСД UROVO на отправку данных через интенты, нам нужно задать следующие параметры в приложении для настройки сканера (например, ScanWedge или Scanner, которое предустановлено на вашем устройстве UROVO):
Output Mode: Выберите режим Intent Output.
Intent action: Установите значение android.intent.ACTION_DECODE_DATA. Это уникальное действие, которое будет ассоциироваться с событием сканирования.
Intent string extra: Установите значение barcode_string. Это ключ, по которому в интенте будет передаваться непосредственно отсканированный штрихкод. То есть, когда ваше приложение перехватит интент, оно будет искать данные штрихкода по этому ключу.
Также может потребоваться отключить функцию Сканирование в поле или Keyboard Emulation, чтобы избежать дублирования ввода или конфликтов.
Программная обработка в 1С. После настройки ТСД на стороне 1С нам необходимо реализовать логику для перехвата и обработки этих интентов. Для этого мы можем использовать объекты из Библиотеки Подключаемого Оборудования 1С, например, внешнюю компоненту Драйвер1СУстройствоВводаNative или аналогичную. Эта компонента может быть настроена на прослушивание определенных интентов.
Для перехвата интентов в 1С, вам нужно будет установить определенные параметры для компоненты:
FilterName: Должен совпадать с EventName, который компонента сканера использует для генерации события. В случае интентов, это будет android.intent.ACTION_DECODE_DATA.
Category: Часто устанавливается в android.intent.category.DEFAULT.
После того как компонент настроен и активирован, при сканировании штрихкода ТСД будет отправлять интент, а 1С сможет его получить. Из полученных данных мы затем извлекаем штрихкод, используя тот ключ, который мы указали в настройках ТСД – в нашем случае это barcode_string. Например, для Zebra это может быть com.symbol.datawedge.data_string, а для UROVO, как мы выяснили, barcode_string.
Как правило, компонента будет вызывать событие в 1С, передавая структуру или соответствие с данными интента. В этой структуре мы сможем найти наш штрихкод:
Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные)
Если Источник = "СканерТСД" И Событие = "ШтрихкодОтсканирован" Тогда
// Предполагается, что Данные - это Соответствие или Структура
// с информацией из интента.
Штрихкод = Данные["barcode_string"];
Если ЗначениеЗаполнено(Штрихкод) Тогда
// Здесь мы обрабатываем полученный штрихкод,
// например, ищем товар, добавляем в список и т.д.
Сообщить("Отсканирован штрихкод: " + Штрихкод);
// ... ваша логика обработки ...
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Такой подход обеспечивает гибкость и независимость от специфических драйверов, поскольку опирается на стандартные возможности Android.
Независимо от выбранного вами метода подключения, существуют общие рекомендации, которые помогут нам обеспечить стабильную и эффективную работу:
Используем актуальные драйверы. Всегда старайтесь использовать самые актуальные версии драйверов и внешних компонент. Разработчики регулярно выпускают обновления, которые включают исправления ошибок, улучшение производительности и поддержку новых моделей ТСД. Это поможет избежать многих проблем совместимости.
Тщательное тестирование. После выполнения всех настроек обязательно проводим тщательное тестирование работы сканера. Проверяем сканирование различных типов штрихкодов (EAN-13, Code 128, QR-коды и т.д.), в разных условиях освещения, а также поведение при быстром и медленном сканировании. Убедитесь, что данные передаются корректно и без задержек.
Учитываем онлайн/офлайн режимы. При разработке мобильных приложений для ТСД важно продумать режимы работы – онлайн и офлайн. Некоторые решения, такие как «1С:Мобильная торговля» от «РайтСкан», поддерживают оба режима обмена данными, что критично для обеспечения непрерывной работы склада даже при временных проблемах со связью.
Подключение сканера ТСД UROVO к мобильному приложению 1С – это решаемая задача, которая требует внимательного подхода к выбору и настройке компонентов. Используя описанные методы, мы сможем добиться стабильной и эффективной работы вашего мобильного приложения, значительно улучшив производительность складских операций.