Мы сталкиваемся с задачей интеграции аппаратного сканера штрихкодов на Терминале Сбора Данных (ТСД) Urovo с мобильным приложением, разработанным на платформе 1С, для автоматического заполнения документов отсканированными товарами. Разберем основные подходы и компоненты, которые позволяют реализовать эту функциональность, а также предоставим необходимые настройки и примеры кода.
Этот метод является одним из наиболее распространенных и эффективных для работы с аппаратными сканерами на мобильных устройствах под управлением Android. Компонента 1С:СканерNative (или Драйвер1СУстройствоВводаNative) входит в состав "1С:Библиотеки подключаемого оборудования" (БПО) или "1С:Библиотеки подключаемого оборудования для мобильных приложений" (МБПО) и специально разработана для приема данных от сканеров штрихкодов и их передачи в платформу "1С:Предприятие".
Ключевой момент здесь — это настройка режима работы сканера на самом ТСД и соответствующая конфигурация мобильного приложения 1С.
Терминалы Urovo обычно предлагают несколько режимов работы встроенного сканера. Рассмотрим два основных, которые могут быть использованы для интеграции с 1С:
Для настройки ТСД Urovo в режим Broadcast, вам, как правило, потребуется зайти в системные настройки сканера на самом устройстве. Ищите разделы типа ScanWedge Profiles или Scanner Settings. В этих настройках необходимо:
Output via Intent.Intent action (например, android.intent.ACTION_DECODE_DATA) и Intent string extra (например, barcode_string). Эти параметры определяют, какие именно системные сообщения будет генерировать сканер при успешном считывании штрихкода и как будет называться поле с данными штрихкода в этом сообщении.android.intent.category.DEFAULT.После такой настройки, каждый раз при сканировании штрихкода ТСД будет отправлять соответствующее Intent-сообщение в операционную систему Android, которое затем будет перехвачено мобильным приложением 1С.
Этот метод проще в реализации, поскольку не требует специфической интеграции с 1С на уровне обработки системных событий. Однако он менее гибок, так как требует, чтобы курсор всегда находился в нужном поле ввода в мобильном приложении. В большинстве случаев для профессиональной работы со сканированием мы рекомендуем использовать режим Broadcast.
После того как ТСД настроен на передачу данных, необходимо настроить мобильное приложение 1С для их приема.
Драйвер1СУстройствоВводаNative.
ВнешнееСобытие формы. Это событие генерируется компонентой Драйвер1СУстройствоВводаNative при получении данных от сканера.
В модуле формы документа или общего модуля, который обрабатывает сканирование, вы можете реализовать процедуру обработки внешнего события. Рассмотрим пример:
&НаКлиенте
Процедура ВнешнееСобытие(Источник, Событие, Данные)
Если Источник = "СканерШтрихкода" Тогда // Укажите имя вашего сканера, настроенного в мобильном приложении
Если Событие = "ПолученыДанные" Тогда
ОтсканированныйШтрихкод = Данные;
// Далее логика заполнения документа
ЗаполнитьДокументОтсканированнымШтрихкодом(ОтсканированныйШтрихкод);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьДокументОтсканированнымШтрихкодом(Штрихкод)
// Пример: поиск товара по штрихкоду и добавление его в табличную часть
// Здесь необходима логика обращения к данным (например, через функциональность обмена с сервером),
// поскольку на клиенте напрямую к базе данных нет доступа.
// Возможно, потребуется вызов серверной процедуры.
// Пример вызова серверной процедуры
// ЗапроситьТоварНаСервереИДобавить(Штрихкод);
КонецПроцедуры
Обратите внимание: если вам нужно получить данные о товаре из базы данных 1С, вам придется организовать вызов серверной процедуры из клиентской процедуры ЗаполнитьДокументОтсканированнымШтрихкодом, так как прямого доступа к данным на клиенте нет.
Автор сообщения изначально упоминал попытку использовать внешнюю компоненту RSExchange. Эта компонента разработана специально для 1С Мобильной платформы и ТСД Urovo и предназначена для обеспечения быстрого и удобного обмена данными между конфигурацией 1С на ПК и мобильным приложением 1С.
Хотя основное назначение RSExchange — это обмен данными (передача документов, справочников), она также может быть использована для интеграции событий, включая события сканирования, если разработчики компоненты предусмотрели такой функционал. В таком случае, механизм работы будет схож с 1С:СканерNative, где компонента перехватывает системные Intent-сообщения или напрямую работает с API сканера ТСД и транслирует их в события 1С.
Для реализации через RSExchange вам потребуется:
RSExchange на предмет механизмов обработки событий сканирования и соответствующих методов или событий, которые компонента предоставляет для 1С. Вероятно, это также будет реализовано через механизм внешних событий или вызовов специфических методов компоненты.При работе с ТСД и мобильными приложениями 1С следует учитывать несколько важных аспектов:
СредстваМультимедиа.ПоказатьСканированиеШтрихКодов(). Этот метод не требует внешних компонент, но по скорости и точности уступает аппаратному сканеру.
Мы рассмотрели основные методы интеграции сканирования штрихкодов с ТСД Urovo в мобильное приложение 1С. Наиболее эффективным и гибким является использование внешней компоненты 1С:СканерNative в сочетании с настройкой ТСД на работу в режиме Broadcast, что позволяет получать и обрабатывать события сканирования непосредственно в коде мобильного приложения 1С.