22.09.2021
Внешний компонент "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, если сканер это позволяет.
Как правило "по умолчанию" сканеры в клавиатурном режиме настроены с суффиксом ‘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").
На Андроид устройствах с поддержкой функции сканирования ШК (в том числеТСД) появилась возможность получать результаты сканирования через механизм 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С: Сканер штрихкодов" большинство настроек драйвера унифицировано и может быть представлено следующей таблицей. Различия составляют только специфические моменты, связанные с особенностями конкретной ОС.
Название параметра |
Диапазон значений | Значение по умолчанию | Комментарий |
---|---|---|---|
Порт/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 | Кодировка принятых по 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 | |
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 | Тип данных используемого ключа 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