Подключение мобильного приложения 1с сканировать штрих кода

Обновлено: 07.07.2024

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

Предыстория

На данный момент в предприятиях занимающихся торговлей очень часто используются сканеры штрихкодов (как проводные, так и безпроводные) и терминалы сборы данных (ТСД). Разница между ними - цена! Одно устройство ТСД может стоить нескольких (а то и больше) обычных сканеров. Каждое предприятие старается сократить затраты, очевидно выбор падет на обычный сканер. И вот тут на помощь приходит мобильная платформа 1С, которая может работать с подключаемыми устройствами к мобильному устройству. Но, не все так просто.

Как работает сканер штрихкодов?

На данный момент, обычный (современный) сканер имеет два режима работы: режим разрыва клавиатуры и режим эмуляции com-порта (другое название SPP Mode).

В режиме разрыва клавиатуры сканер - это клавиатура. В таком случае необходимо чтобы:

  • Экран был включен
  • Курсор стоял в поле ввода
  • Необходимо разрабатывать особый алгоритм отработки данных
  • Необходимо чтобы было запущено приложение (в наш случае 1С) для получения и обработки данных со сканера.

Очевидно, режим SPP это то что нам нужно.

Как подключить беспроводной сканер к мобильному устройству в режиме SPP Mode?

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

Сервис для работы с беспроводным сканером в режиме SPP Mode

Проштудировав множество сайтов по Java, наткнувшись на множество недоработок в мобильной платформе 1С, в конечном итоге написал приложение (правда без графического интерфейса), которое реализует требуемую функцию.

Немного о сервисе:

  • Сервис предоставляет функцию получению УИД устройства (только спаренного, то есть подключенного). Полученный УИД можно будет сохранить где-нибудь в константе и далее использовать его для подключения
  • Сервис предоставляет функцию подключения к сканеру (с помощью ранее полученного УИДа) и обеспечивает фоновую работу с устройством.
  • Сервис выполняет фоновую отправку уведомления в мобильное приложение 1С.
  • Сервис работает со всеми сканерами которые имеют функцию SPP Mode





Вот основное действие для запуска сервиса

Вот процедура для обработки уведомлений из сервиса (все возвращаемые значения имеют тип "Строка")

Баги, фичи и прочие факи

При разработке приложения на Java проблем не было. Они начались при попытки "подружить" сервис и мобильного приложения 1С.

Итак, имеем следующие баги (или если хотите недоработки) в мобильной платформе 1С:

  • Самая важная проблема - мобильное приложение не может принимать внешние оповещения. Вернее в каких то версиях могло принимать, а в каких то нет. В комментариях к этой (Публикация) публикации это упоминалось. Чиниться это просто:

в файле платформы permissions.xml по адресу Android\prjandroid-arm\bin (точно также как описано в публикации) добавляем android:exported="true" и добавляем фильтр на получаемые уведомления

в итоге должны получить следующее:

Нужно было сделать одну обработку с использованием сканера ШК, а покупать сканер уж очень не хочется ради того, что бы отлаживать ее работу. За пару часов нашел один интересный способ использования телефона в качестве сканера ШК.


Нам понадобится:
1.Телефон на android выше 4.0 с камерой. (качество камеры не важно, но от этого зависит как долго вы будете ловить штрихкод)
2. ПК с ОС Windows c Bluetooth или WiFi-сетью
3.Приложения Barcode Scanner и GetBlue Bluetooth Reader, Demo (легко ищутся на Play Market)
4. Программа Twedge (


Запустим GetBlue и настроим. В приложение есть два прямоугольника: Data Sourse(1) - Источник, и Data Sink (2) - Приемник.
Нажимаем на первый прямоугольник и выбираем камера-сканер, а затем Сканер штрих-кодов.

Теперь нам нужно выбрать приемник информации, у нас есть два основных варианта - это Bluetooth и TCP. Расскажу про два способа.

Подключение по Bluetooth.
Сопряжаем телефон и компьютер по Bluetooth. После этого телефон должен появится на ПК в "Устройства и принтеры".
В приложении нажимаем на второй прямоугольник (Data Sink), выбираем Bluetooth, в настройка подключения выбираем режим - клиент, и выбираем наш ПК из найденных Bluetooth устройств. Нажимаем Ok.

Устанавливаем TWedge на ПК. (все стандартно, это программа платная, я выбрал пробную версию, этого достаточно)
Запускаем и вверхнем меню нажимаем Device list - Add device. На закладке Interface выбираем bluetooth сервер и нажимаем Ок.
В левом списке появилось наше устройство, Если нажать по нему правой кнопкой - выбрать Configure - Action, можно настроить переадресацию данных на виртуальный COM-порт, но сейчас я оставлю все как есть, стандартно данные принимаются как клавиатура (как на обычных сканерах ШК подключенных к USB).

Подключение по TCP
Устанавливаем программу TWedge на ПК.
Запускаем и вверхнем меню нажимаем Device list - Add device. На закладке Interface выбираем TCP сервер , можно указать любой свободный порт, я использую 81. Нажимаем Ок.
В приложении нажимаем на второй прямоугольник (Data Sink), выбираем TCP, в настройка подключения выбираем режим - клиент, указываем хост (локальный IP нашего ПК), и указанный нами порт (в моем случае 81). Нажимаем Ok.



Нам остается только проверить принимаются ли данные. Нажимаем в программе зеленую кнопку с треугольником, (play, start). а на телефоне в приложении нажимаем в правом верхнем углу кнопку меню (с тремя точка и выбираем start). Должен запуститься сканер и сканируем штрихкод. В программе после считывании ШК должна появиться строчка вида:
<Время> Data:4606272002283 (наш штрихкод)


Подключаем все это дело к 1С.
Открываем конфигурацию, в моем примере это УТ 11.2. (подходит для всех решений 1С на управляемых формах)
Идем на закладку "Администрирование" или "НСИ и администрирование". Ищем пункт "РМК и оборудование". Если не стоит галочка "Использовать подключаемое оборудование" ставим ее и нажимаем "Подключаемое оборудование".
В открывшейся форме слева в списке выбираем Сканер штрихкода и нажимаем "Создать". Указываем драйвер оборудования 1С: Сканеры штрихкода (COM) и нажимаем "Записать и закрыть".
У нас в списке оборудования появился сканер, выделяем и нажимаем "Настроить".
Сверху нажимаем "Функции" - "Установить драйвер". После установки в настройках выбираем порт <клвиатура> и нажимаем записать.

На этом настройка закончена, можно проверить работу в справочнике номенклатура или в документах.

Анализ вариантов показывает три возможных решения:

  1. Использование существующего мобильного приложения
  2. Создание собственного мобильного приложения на 1С
  3. Совмещенный вариант

Рассмотрим каждый подробнее.

1. Использование существующего мобильного приложения.

Анализ рынка в магазинах приложений показывает, что большинство существующих сканеров распознают QR-коды плохо, и лишь отдельные делают это на удивление моментально. А умеют отправлять данные на сервер - единицы. Рассмотрим реализацию на примере одного такого приложения: "Штрихкод Коммандер"

Доступно в Google Play

Подготовка серверной части






Проверяем, что брандмауэр и/или антивирус не мешают подключению к сервису.

Подготовка клиентской части

Устанавливаем приложение на мобильное устройство:

Доступно в Google Play

Вы, наверное, удивитесь, но на этом все! Сканируем и радуемся!

2. Создание собственного мобильного приложения на 1С

Подготовка серверной части

На сервере в 1С создаем метод web-сервиса и описываем алгоритм обработки полученного QR-кода. Пример:






Подготовка клиентской части

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

Преимуществом данного варианта является гибкость и возможность реализации дополнительных требований к мобильному приложению. Но, к сожалению, качество сканирования при этом страдает. По сравнению с аналогами в магазинах приложений, сканер от 1С сканирует значительно хуже, медленнее, а иногда вообще не распознает QR-код. Также страдает и итоговый объем приложения, так как вместе с ним на мобильное устройство устанавливается и платформа 1С, которая занимает в несколько раз больше места.

Сравнение мобильных технологий сканирования штрихкодов приведены в следующей статье .

3. Совмещенный вариант

Данный вариант является попыткой использовать преимущества предыдущих двух вариантов: гибкости собственного мобильного приложения и хорошего сканера из магазина приложений. Реализация заключается в создании мобильного приложения на 1С, которое реализует весь необходимый функционал, в том числе и отправку данных на сервер, а сканирование QR-кода поручает выполнить другому приложению, предварительно установленному на устройстве.

Рассмотрим реализацию на примере того же приложения:

Доступно в Google Play

Отправка данных на сервер рассмотрена достаточно подробно, поэтому остановимся лишь на моменте взаимодействия с другим мобильным приложением. Пример:

К недостаткам данного варианта можно отнести необходимость установки двух мобильных приложений и относительно большое занимаемое место на мобильном устройстве.

Надеюсь, что изложенный материал ответит на некоторые ваши вопросы и поможет в автоматизации сканирования штрихкодов.

Внешний компонент "1С:Сканер штрихкода" (Native) версия для платформы "1С Предприятие 8.3".

Внешний компонент "1С:Сканер штрихкода" (Native) для платформы "1С Предприятие 8.3" поставляется в составе "Библиотеки подключаемого оборудования" (далее - БПО). "1С:Библиотека подключаемого оборудования для мобильных приложений" (далее - МБПО) и предназначен для использования ТОЛЬКО в их составе. Самостоятельное использование внешнего компонента не предусмотрено. Компонент предназначен для получения данных от оборудования – сканеров штрихкодов (далее – ШК) и передаче их в платформу "1С: Предприятие".

Основные возможности

Внешний компонент "1С:Сканер штрихкода" (Native) (далее – ВК или "1С:Сканер штрихкода") позволяет получать данные от подключенных сканеров штрихкодов и передавать их в платформу "1С:Предприятие". Компонент поддерживает следующие операционные системы (далее – ОС): Windows x32/x64, Linux (x32/x64), Android (arm, arm64, x86, x86_64), MacOS(x64). Компонент поддерживает следующие режимы подключения к сканирующему оборудованию: клавиатурный (все ОС), virtual COM (все ОС), Bluetooth (Android, Mac), Broadcast (Android).

Схема взаимодействия с оборудованием


Клавиатурный режим



Ограничения клавиатурного режима

Преимуществами клавиатурного режима является его доступность. Он является умолчанием практически для всех моделей сканеров и доступен на всех ОС. Также его легко проверить, подключив сканер и считав какой-нибудь ШК в текстовый редактор. Однако у этого режима есть и ограничения. На большинстве современных клавиатур от

80 до 110 клавиш, тем не менее, ШК может кодировать последовательность байт каждый из которых может принимать значения от 0 до 255. Т.е., в общем случае, количества клавиш на клавиатуре недостаточно для того чтобы передать данные любого ШК. Для того чтобы обойти это ограничение некоторые сканеры используют Ctrl+X или Alt+X нотацию, которые поддержаны в ВК "1С:Сканер штрихкода". Однако не все модели сканеров предоставляют такие возможности и в случае "нестандартных" значений байт данных в ШК (как правило, значения байт <32 и >127) либо не передают никаких данных, либо передают их не стандартизованной последовательностью клавиатурных событий. Поэтому, если необходимо работать со штрихкодами, содержащими не латинские символы или каким-либо образом кодированные данные (больничные листы и т.д.), то лучше воспользоваться подключением по COM, если сканер это позволяет.

"Auto CRLF"

Как правило "по умолчанию" сканеры в клавиатурном режиме настроены с суффиксом ‘CR’ (клавиша Enter), но не для всех моделей сканеров это так. Иногда суффиксом может быть ‘LF’ или ‘CRLF’. Для обобщения всех этих случаев в ВК, кроме обычных односимвольных суффиксов, предусмотрен специальный суффикс "Auto CRLF", который обозначает, что последовательность, состоящая из CRLF в любом сочетании считается суффиксом. Это может облегчить работу с настройками для некоторых моделей сканеров.

Окно "Тест"

Для проверки работы со сканером на Windows и Linux, есть возможность воспользоваться встроенным в ВК окном "Тест". Для этого нужно нажать кнопку "Тест устройства" в форме настроек компонента. Внешний вид окна представлен на следующем рисунке.


Окно тест делает попытку подключения всего доступного оборудования с заданными в форме настроек параметрами. После чего можно сканировать различные ШК, данные полученные с них будут отображаться в поле данных. Получаемая от оборудования информация может быть представлена в окне "Тест" в 3-х режимах: "Тестовом", "Рабочем" и "Отладка клавиатуры". "Тестовый" режим показывает данные от оборудования с заменой непечатаемых символов на их названия, а также названия специальных клавиш, если данные получены от клавиатуры.

Также для проверки правильности настроек сканера на форме Тест расположен проверочный ШК, отсканировав который можно понять правильность настройки сканера. В случае если настройки сканера и ВК "1С:Сканер штрихкода" настроены одинаково (совпадают настройки суффикса, префикса и специальных клавиш на сканере и в ВК), то в поле данных будет выведено "Ваш сканер настроен правильно" ("Your scaner configured correctly"). В случае, когда неправильно настроен суффикс и/или префикс будет выведено соответственно "Данные соответствуют проверочным частично."("The data correspond to the verification partly."), "Неверно настроен суффикс"("Suffix configured wrong"), "Неверно настроен префикс"("Prefix configured wrong").

Android Braodcast

Установленные настройки ВК в МБПО на ТСД Атол Smart.Lite



Настройки ТСД Атол Smart.Lite на Broadcast



Свойства

Компонента не содержит свойств.

Методы

Название (алиас) Параметры Возвращаемое значение Описание
ПолучитьНомерВерсии(GetVersion - - Метод возвращает строку текущей версии компоненты
ПолучитьОписание (GetDescription) - - Метод возвращает описание компоненты
ПолучитьОшибку (GetLastError) - - Метод возвращает последнюю ошибку при работе компоненты
ПолучитьПараметры (GetParameters) - - Метод возвращает XML документ с описанием настроечных параметров компоненты, передаваемых через метод УстановитьПараметр (SetParameter)
УстановитьПараметр (SetParameter) - - Метод устанавливает значение одного из параметров, список которых может быть получен методом ПолучитьПараметры (GetParameters)
Подключить (Open) - - Метод подключает устройство
Отключить (Close) - - Метод отключает устройство
ТестУстройства (DeviceTest) - - Метод запускает тест устройства

Настройки ВК

Начиная с 10-ой редакции драйвера "1С: Сканер штрихкодов" большинство настроек драйвера унифицировано и может быть представлено следующей таблицей. Различия составляют только специфические моменты, связанные с особенностями конкретной ОС.

Название параметра
RU/EN

Standard Intent Extra NONE Стандартный ключ intent.extraПользовательсктй Intent Extra/User Intent Extra Пользовательский ключ intent.extra (из настроек ТСД)Пользовательское Intent Action/User Intent Action Пользовательский intent.action (из настроек ТСД)Пользовательская Intent Category/User Intent Category Пользовательский intent.category (из настроек ТСД)Тип данных/Extra data type

String Тип данных используемого ключа intent.extra

Возвращаемые события

В случае успешного получения данных от устройства компонента кодирует их соответствующим образом (Строка, Base64) и передает в 1С:Предприятие в виде одного из следующих событий:

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

Предыстория

На данный момент в предприятиях занимающихся торговлей очень часто используются сканеры штрихкодов (как проводные, так и безпроводные) и терминалы сборы данных (ТСД). Разница между ними - цена! Одно устройство ТСД может стоить нескольких (а то и больше) обычных сканеров. Каждое предприятие старается сократить затраты, очевидно выбор падет на обычный сканер. И вот тут на помощь приходит мобильная платформа 1С, которая может работать с подключаемыми устройствами к мобильному устройству. Но, не все так просто.

Как работает сканер штрихкодов?

На данный момент, обычный (современный) сканер имеет два режима работы: режим разрыва клавиатуры и режим эмуляции com-порта (другое название SPP Mode).

В режиме разрыва клавиатуры сканер - это клавиатура. В таком случае необходимо чтобы:

  • Экран был включен
  • Курсор стоял в поле ввода
  • Необходимо разрабатывать особый алгоритм отработки данных
  • Необходимо чтобы было запущено приложение (в наш случае 1С) для получения и обработки данных со сканера.

Очевидно, режим SPP это то что нам нужно.

Как подключить беспроводной сканер к мобильному устройству в режиме SPP Mode?

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

Сервис для работы с беспроводным сканером в режиме SPP Mode

Проштудировав множество сайтов по Java, наткнувшись на множество недоработок в мобильной платформе 1С, в конечном итоге написал приложение (правда без графического интерфейса), которое реализует требуемую функцию.

Немного о сервисе:

  • Сервис предоставляет функцию получению УИД устройства (только спаренного, то есть подключенного). Полученный УИД можно будет сохранить где-нибудь в константе и далее использовать его для подключения
  • Сервис предоставляет функцию подключения к сканеру (с помощью ранее полученного УИДа) и обеспечивает фоновую работу с устройством.
  • Сервис выполняет фоновую отправку уведомления в мобильное приложение 1С.
  • Сервис работает со всеми сканерами которые имеют функцию SPP Mode





Вот основное действие для запуска сервиса

Вот процедура для обработки уведомлений из сервиса (все возвращаемые значения имеют тип "Строка")

Баги, фичи и прочие факи

При разработке приложения на Java проблем не было. Они начались при попытки "подружить" сервис и мобильного приложения 1С.

Итак, имеем следующие баги (или если хотите недоработки) в мобильной платформе 1С:

  • Самая важная проблема - мобильное приложение не может принимать внешние оповещения. Вернее в каких то версиях могло принимать, а в каких то нет. В комментариях к этой (Публикация) публикации это упоминалось. Чиниться это просто:

в файле платформы permissions.xml по адресу Android\prjandroid-arm\bin (точно также как описано в публикации) добавляем android:exported="true" и добавляем фильтр на получаемые уведомления

в итоге должны получить следующее:

Читайте также: