22.09.2021

Внешний компонент "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).

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

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

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

В отличие от остальных режимов взаимодействия, клавиатурный режим имеет ряд особенностей, которые отличают его от остальных. В Android, Windows и MacOS клавиатуры в отличие от остальных устройств, представлены общей очередью клавиатурных сообщений. Это приводит к тому, что работа с очередью сообщений на этих системах затрагивает пользовательский ввод. Так же требуется отдельный подход при подключении нескольких обработчиков, работающих с оборудованием в клавиатурном режиме. Поэтому, в случае клавиатурного режима взаимодействие с оборудованием выглядит несколько иначе. ОС формирует очередь клавиатурных сообщений от всех клавиатурных устройств, ВК "изымает" сообщения из системной очереди сообщений, после чего предоставляет их "слушателям" – подключенным экземплярам компонента "1С:Сканер штрихкода" с клавиатурным режимом взаимодействия. Если хотя бы один слушатель принимает переданные сообщения, то в очередь они не возвращаются, а слушатель продолжает обработку и передает данные в платформу 1С. В противном случае, если сообщения остались не востребованы в пределах таймаута, указанного в настройках, ВК возвращает их обратно в очередь сообщений, и они доставляются изначальным адресатам.

Примечание:
Для того чтобы слушатель "принял" сообщения они должны соответствовать критериям (суффиксу и префиксу) указанным в настройках.

Также стоит отметить, что учитывая неоднородность в скорости передачи клавиатурных сообщений у разных моделей сканеров (особенно при передаче "больших", более 40-50 символов, ШК), ВК в качестве таймаута использует время, прошедшее с получения последнего клавиатурного сообщения (тем не менее, если в сообщениях удается обнаружить суффикс, то обработка начинается "досрочно", не дожидаясь истечения таймаута).

Это позволяет получать большие ШК даже от сканеров с низкой скоростью передачи сообщений. Отрицательным моментом может быть, то, что при подключенной ВК с большими значениях таймаута при быстром наборе с клавиатуры может создаваться впечатление "заторможенного" ввода. В этом случае рекомендуется уменьшить таймаут клавиатуры в настройках драйвера так, чтобы скорость ввода была комфортной, но сообщения от сканера при этом считывались корректно.

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

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

"Auto CRLF"

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

Окно "Тест"

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

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

Например: 'GS'123456789'GS'https:\/1c.ru'GS''CR'.

 "Рабочий" режим отображает данные, так как они передаются в платформу "1С: Предприятие". Если то или иное сообщение, пришедшее от оборудования, не соответствует критериям в настройках (допустим, не совпадает суффикс и/или префикс), то оно не будет отображено в "Рабочем" режиме и не будет передано в платформу "1С: Предприятие".

Режим "Отладка клавиатуры", показывает всю последовательность переданных клавиатурных сообщений, которые были переданы в компоненту. Нажатия клавиш в этом случае отображаются как KEY в случае нажатия функциональной клавиши key в случае высвобождения функциональной клавиши и symbol_ _symbol в случае нажатия и высвобождения клавиши печатаемого символа.

Например: 'F12''f12''1_''_1''2_''_2''3_''_3''4_''_4''5_''_5''6_''_6''7_''_7''8_''_8''9_''_9''F12''f12''H_''_H''T_''_T''T_''_T''P_''_P''S_''_S''SHIFTL'';_''shiftl''_;''\_''_\''/_''_/''1_''_1''C_''_C''.

_''_.''R_''_R''U_''_U''F12''f12''ENTER''enter'

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

Android Braodcast

На Андроид устройствах с поддержкой функции сканирования ШК (в том числеТСД) появилась возможность получать результаты сканирования через механизм Broadcast (https://developer.android.com/guide/components/broadcasts), для устройств, которые поддерживают такой механизм передачи результатов сканирования. Для того чтобы, на Android устройстве подключить этот вариант взаимодействия необходимо настроить само устройство на передачу данных по Broadcast. В настройках ВК в поле Устройство необходимо указать Broadcast и настроить поля intent.action intent.category intent.extra intent extra type. Поля intent.action intent.category intent.extra имеют то же значение, что и в документации Android (https://developer.android.com/guide/components/intents-filters?hl=ru) и должны совпадать с теми, что перечислены на устройстве. Для примера приведем настройки ТСД Атол Smart.Lite.

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

 

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

 

Свойства

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

Методы

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

Настройки ВК

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

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

Диапазон значений Значение по умолчанию Комментарий
Порт/Port   Клавиатура Параметр определяет канал, по которому ВК ожидает данные от сканирующего устройства. Клавиатура, доступные COM/Bluetooth порты перечислены в этом параметре
Префикс/Prefix Символы от 0(NUL)…127(DEL) -1(NONE) Указывает символ префикс сообщения от устройства. По умолчанию префикс отсутствует
Суффикс/Suffix Символы от 0(NUL)…127(DEL) 13(CR) Указывает символ суффикс сообщения от устройства. По умолчанию суффикс CR (обычно передается клавишей ENTER).
ТипВыходныхДанных/ OutputDataType Строка, Base64 Строка Задает формат передачи данных от ВК к платформе "1С: Предприятие"
Символ GS/GS symbol Спец. клавиши F1..F12, INSERT, TAB и т.д. NONE Задает клавишу, которой передается символ GS в GS1 штрихкодах
Таймаут клавиатуры (мс)/ Timeout keyboard (ms)   25(Windows)/75 (остальные ОС и веб клиент) Таймаут клавиатуры, после истечения которого начинается обработка принятых клавиатурных сообщений
Бит данных / Data bits 1..8 8 Бит данных при передаче по COM порту
Стоп бит / Stop bits 1,2 1 Стоп бит при передаче по COM порту
Четность / Parity Четно
Нечетно
Нет
Нет Четность передачи по COM порту
Скорость / Speed 110
300
600
1200
2400
4800
9600
14400
19200
38400
56000
57600
115200
128000
256000
9600 Скорость передачи по COM порту
Кодировка COM-порта / Serial encoding

Windows-1251
UTF-8

UTF-8 Кодировка принятых по COM/Bluetooth/Broadcast сообщений
Регенерация сообщений / Message regeneration Да
Нет
Нет Склейка сообщений переданных по COM/Bluetooth в случае низкой скорости передачи, когда сообщение доставляется разорванным на 2-е и более части
Тип лога / Log type В файл
В системный журнал
NONE Тип лога компоненты
Лог файл / Log file     Путь к файлу лога при выборе параметра "Тип лога" "в файл"
Windows
Игнорировать состояние клавиатуры / Ignore keyboard state   Нет Если настройка включена, то ВК игнорирует состояние клавиши "CAPS LOCK", на основной клавиатуре.
Linux
HID устройство / HID device     Выбор HID идентификатора устройства сканера, для монопольного доступа к нему
Android
Устройство / Device     Эквивалент настройки Порт на Desktop платформах
Standard android.intent.action.   NONE

Стандартный intent.action
https://developer.android.com/guide/components/intents-filters?hl=ru
https://developer.android.com/guide/components/broadcasts

Standard android.intent.category   NONE

Стандартный

intent.category

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

ByteArray, CharArray
String

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

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

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

Название Описание
Штрихкод В случае русской локали "1С: Предприятие", Типа оборудования "Сканер" и "Типа выходных данных" Строка
ШтрихкодBase64 В случае русской локали "1С: Предприятие", Типа оборудования "Сканер" и "Типа выходных данных" Base64
ДанныеКарты В случае русской локали "1С: Предприятие", Типа оборудования "Считыватель карт" и "Типа выходных данных" Строка
ДанныеКартыBase64 В случае русской локали "1С: Предприятие", Типа оборудования "Считыватель карт" и "Типа выходных данных" Base64
Barcode В случае английской локали "1С: Предприятие", Типа оборудования "Сканер" и "Типа выходных данных" Строка
BarcodeBase64 В случае английской локали "1С: Предприятие", Типа оборудования "Сканер" и "Типа выходных данных" Base64
TrackData В случае английской локали "1С: Предприятие", Типа оборудования "Считыватель карт" и "Типа выходных данных" Строка
TrackDataBase64 В случае английской локали "1С: Предприятие", Типа оборудования "Считыватель карт" и "Типа выходных данных" Base64

Форма настроек ВК на ОС Windows

Форма настроек ВК на ОС Linux

Форма настроек сканера на MacOS

Форма настроек на ОС Android