1с сканер штрих кода native api не работает
Привет, мемберы. Работаю админом в одной небольшой компании и столкнулся с такой бедой: с каждым днём у пользователей начинает переставать работать сканер штрих кода, и это число увеличивается в арифметической прогрессии, словно чума.
Ошибка в 1с: «Не удалось подключить устройство 1с, сканеры штрихкода. Проверье устройство. (999)»
«Снова приехал супервайзер и открыл вторую 1с, я же говорил этого не делать!» - подумал я. И очень расстроился, когда после закрытия всех клиентов проблема не устранилась. Стоит ли говорить, что после всех танцев с переподключением и ребутами ничего не решается. Пользователи готовы меня разорвать,а я начинаю сомневаться в своих интеллектуальных способностях!
Я уже даже всех клиентов с сервера 1с покидал, не помогает.
Судя по коду ошибки, что-то захватывает порт и не даёт 1с-ки его использовать.
В блокнот, кстати, тоже не сканится. Пикает штрих 1 раз и сканер отключается, а включается только после переподключения.
Сканер компьютером определяется.
Сканер: атоловский, 1с: Предприятие розница 2.2, Дистр: убунту
В оборудование 1с выставлено: клавиатура, суффикс 13, драйвера установлены нативные.
Призываю всех гуру 1с и убунту на пленум, не хотелось бы в кризис потерять работу :)
З.Ы. перелопатил гугл и яндекс, но решения не нашёл
Ты бы модели оборудования хоть указал.
Судя по коду ошибки, что-то захватывает порт и не даёт 1с-ки его использовать.
Так поищи кто, если tcp то netstat если ком то lsof, ну или по /proc погрепать.
Ты б хоть версию ОС написал
Спасибо, что ответил. Прописал эти команды: что тут нужно искать?
Смотри, в линуксе всё есть файл. Поэтому устройство - тоже файл. В директории /dev находится список файлов-утройств, которые подключены к данной машине.
Утилита lsof показывает список открытых файлов и кто его открыл. Com-порты открываются монопольно, поэтому кто-то открывший не даст открыть твоей жопе-Одина его второй раз.
Пишешь в терминал lsof или lsof | grep имяфайла и смотришь кто.
Ага, понял.Спасибо за подробное объяснение, кажется, я близок. А как здесь должен называться мой сканер ?
В блокнот, кстати, тоже не сканится.
В оборудование 1с выставлено: клавиатура
Убедись, что сканер не в режиме эмуляции ком порта работает. Вдруг по-дефолту он в rs232 настроен, и где-то у тебя штрихкод совпал с кодом сброса на заводские настройки.
Если в режиме клавиатуры - он в любом случае тебе будет «в блокнот» сканировать. Это не проблемы 1С.
Если только какой-то из процессов перехватывает весь ввод с клавиатуры, но тогда и с клавиатуры ты ничего не введёшь.
Вот, скорее всего его что-то перехватывает. Сейчас ищу что
Выставлена клавиатура, подключаю по ЮСБ
Можно проверить что это не удев с MM :)
udevadm info –query all /dev/ttyЧТОТАМУТЕБЯ
Если там есть что-то начинающееся с ID_MM_ (например ID_MM_CANDIDATE) эт значит, что udev при регистрации девайса запускает на нем пробер модема :) Может так совпадает, что в это время его пытается поюзать что-там-у-тебя. Есть еще похожая хрень с gprs, MTP и прочим..
Нет, эту статью я не находил. Вот что там нашёл, похоже на мою проблему: 7.10 видит устройство как USB HID v1.00 Keyboard, включает его, но когда вы сканируете действительный штрих-код, он выключается и не выводит штрих-код. usbkbd.ko был загружен, но все еще не работал.
Old Fix (ломает USB клавиатуры и мыши)
Если вы измените файл черного списка modprobe (/etc/modprobe.d/blacklist) и измените строки драйвера USB-ввода, чтобы они выглядели так:
Идеальное исправление для конечного пользователя не должно мешать другим устройствам использовать драйвер usbhid. Debian фактически создал скрипт с именем check_driver специально для этой цели. Добавление следующей строки решило проблему в моей системе, не отказываясь от моих продвинутых устройств USB HID:
KERNEL == «event 6 *», SYSFS == «04b4», SYSFS == «bca1», ACTION == «add», RUN + = "/ lib / udev / check_driver usbkbd $ devpath $ env "
Первый способ ломает мышку и клаву, хочу попробовать второй. Но немного не понял, куда нужно вписать эти строчки. Есть мысли ?
Внешний компонент "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
Возвращаемые события
В случае успешного получения данных от устройства компонента кодирует их соответствующим образом (Строка, Base64) и передает в 1С:Предприятие в виде одного из следующих событий:
Проблема : Оператор одной из торговых точек попробовал поработать в 1С, однако при попытке начала внесения приходной накладной получил ошибку, как указано выше.
Ошибка : При подключении оборудования произошла ошибка "Не удалось подключить устройство "1С: Сканеры штрихкода (NativeApi) на <<Пользователь>> (Server11)": Ошибка подключения. Проверьте доступность устройства (999)"
Немного о всех вот этих надписях в ошибке : Когда возникает подобная ошибка по странному стечению обстоятельств её никто не наблюдает. Звонят очень часто и говорят нечто в стиле: "А не работает. Почему - не знаю!"
Когда же после некоторых разговоров и разъяснений всё-таки получается сказать, что за ошибка должна появиться перед глазами, почему она появиться должна именно там, как она выглядит, такая надпись просто дико всех пугает!
Не надо пугаться! Тут всё просто и ясно:
1С: Сканеры штрихкода (NativeApi) - Так обозначается в 1С драйвер сканера штрихкода, если он подключен к компьютеру через USB
<<Пользователь>> - Под таким именем вы вошли в Windows. Вы даже можете об этом не знать
(Server11) - Так и именно так называется ваш компьютер, все остальные компьютеры его видят именно так (ну, точней, компьютеры-то видят вообще по IP, но для удобства человека отображается именно так и ещё немного бла-бла-бла. )
Решение ошибки: Вы не поверите, но ошибку я решил быстрее, чем написал слово "Проблема" в начале всего этого текста статьи.
Всё дело в том, что внизу, если вы присмотритесь к картинке, есть две запущенные версии 1С. И запущена одна и та же база (более того - запущены под Администратором, то есть под одним паролем; как такое дала сделать 1С я понятия не имею!!). А при запуске какой-либо копии под настроенным пользователем 1С автоматически блокирует устройства, которые будет использовать. Ну, это как занять место в автобусе. Если его не уступить (не закрыть ранее открытую 1С), то с трудом сможет сесть на это место кто-то ещё.
Потому есть несколько вариантов устранения:
1) Закрыть все открытые 1С и открыть после заново
2) Закрыть ту 1С, где ошибка, и начать работать в ранее открытой 1С
3) Закрыть ранее открытую 1С
Ну, и как бы смотреть, что у вас свёрнуто в трей.
Ну, и не забывайте подписываться на канал "Кассовик" . И тогда ни одна, даже самая малейшая проблема не доставит Вам совершенно никаких неприятностей.
В «1С:Управление аптечной сетью» в разделе Настройки подключаемого оборудования (Администрирование – Подключаемое оборудование) должен быть установлен флажок Использовать подключаемое оборудование.
Затем необходимо нажать ссылку Подключаемое оборудование и в открывшейся форме Подключение и настройка оборудования выбрать Тип оборудования - Сканеры штрихкода. Далее нужно создать новый экземпляр оборудования (нажатием кнопки Создать) и заполнить/проверить следующие реквизиты:
- Устройство используется – должен быть установлен флажок;
- Тип оборудования - должно быть указано значение Сканеры штрихкода;
- Драйвер оборудования – выбрать из списка драйвер 1С:Сканеры штрихкода (NativeApi);
- Рабочее место и Наименование – будут заполнены автоматически данными из системы;
- Серийный номер – необязательный реквизит. Можно ввести с клавиатуры заводской номер, указанный на корпусе устройства.
Чтобы сохранить экземпляр необходимо нажать кнопку Записать и закрыть.
Рис. 1. Создание нового экземпляра подключаемого оборудования
Внешняя компонента «Сканер Штрихкода»
После сохранения элемента необходимо нажать на появившуюся на форме кнопку Настроить. В открывшейся форме все реквизиты будут заполнены автоматически.
Рис. 2. Окно настроек драйвера (Windows)
В таблице ниже представлены общие замечания по заполнению данных для Windows и Linux.
Доступные серийные (COM) порты
Устанавливает канал связи, по которому драйвер ожидает поступления данных. В случае Клавиатуры, драйвер будет ожидать событий клавиатуры. В случае одного из доступных COM-портов системы, он будет ожидать данных от него
HID клавиатурного устройства
Имеет смысл, только если в качестве Порта выбрано Клавиатура
Бит данных при передаче по COM порту
(имеет смысл, только если в качестве Порта выбрано COM устройство )
Стоп бит данных при передаче по COM порту
(имеет смысл, только если в качестве Порта выбрано COM устройство )
Диапазон значений от 110 до 256000
Скорость при передаче по COM порту
(имеет смысл, только если в качестве Порта выбрано COM устройство )
код символа от 0 до 127
Символ префикса, передаваемый сканером перед данными штрихкода
код символа от 0 до 127
Символ суффикса, передаваемый сканером после данных штрихкода
Время с начала ввода, за которое ожидается получение клавиатурных событий от сканера
Время с начала ввода, за которое ожидается получение данных от COM порта
Кодировка символов передаваемых сканером (как правило, UTF-8)
клавиша клавиатуры на выбор
Тип выходных данных
Тип выходных данных
Строка – данные как они получены от устройства
Base64 – данные полученные от устройства, преобразованные в Base64
Игнорировать состояние клавиатуры
Тест подключения
Существует много разнообразных видов сканеров - простых, сложных, с возможностью подключения как клавиатура, с возможностью подключения по COM (серийный порт), с накоплением данных и т.д. Во всех случаях, для успешной работы драйвера 1С:Сканера штрихкодов с конкретным оборудованием их настройки должны быть согласованы между собой
Чтобы понять, как сейчас настроен сканер, нужно нажать кнопку Тест подключения.
Рис. 3. Тест устройства (выделены подключенные устройства)
Рис. 5. Тест устройства после считывания штрихкода сканером в клавиатурном режиме
Важно! При сканировании в рабочем режиме нужно, чтобы префикс и суффикс, с которыми настроен сканер (устройство), совпадали с теми, которые указаны в основном окне настроек драйвера.
Рис. 6. Тест устройства после считывания штрихкода сканером в режиме COM-порта
Возможность подключения нескольких сканеров одновременно
Компонент 1С:Сканер шрихкодов версии 9.х позволяет работать одновременно с несколькими устройствами ввода. Однако, ввиду особенностей операционных систем (ОС), существуют некоторые ограничения, представленные в таблице ниже.Может быть подключено до 64 COM устройств (если они доступны, каждое устройство может быть подключено только один раз), и одно клавиатурное устройство.
Может быть подключено до 64 COM устройств (если они доступны, каждое устройство может быть подключено только один раз), и до 64 клавиатурных устройство с уникальным HID.
Штрихкоды, содержащие спецсимволы и символы GS1
Некоторые штрихкоды, такие как PDF417, QR, Datamatrix могут кодировать сложные последовательности символов, часть из которых может быть нечитаемой и/или иметь специальное назначение, например символ GS1 в кодах маркировки. Чтобы определить содержит ли код символ GS1 или другие спецсимволы, нужно перейти в окно Тест устройства и отсканировать сканером тестовый штрихкод.Рис. 7. Штрихкод GS1 Datamatrix для проверки передачи сканером символа GS1
Пример штрихкода в HRI (Human Readable Interpretation) форме GS1:
Рис. 8. Результат сканирования штрихкода для проверки клавиатурным сканером
Большинство сканеров передают символ GS1 либо нажатием клавиши F8, либо сочетанием клавиш Alt(down)+0+0+2+9+Alt(up) (поведение по умолчанию).
Если это не так, то можно настроить сканер и драйвер 1С:Сканер штрихкодов таким образом, чтобы их настройки были согласованы между собой. В этом случае, при сканировании штрихкода с Рис. 7. необходимо получить тот же результат, что и на Рис. 8. В противном случае, вместо ‘GS’ в результате будет отображена другая последовательность символов.
Однако, данные, которые могут быть кодированы некоторыми типами штрихкодов, не ограничиваются только наличием символа GS1, они могут содержать символы произвольного алфавита, как показано на Рис. 9.
Рис. 9. Результат сканирования в COM режиме штрихкода, содержащего данные кодированные последовательностью символов со сложным алфавитом
При работе с такими типами штрихкодов рекомендуется использование режима COM.
Тип выходных данных
В компоненте 1СCканер шрихкодов версии 9.х поддерживаются несколько типов исходящих данных:
Тип Строка предназначен для большинства случаев, поскольку, как правило, данные, полученные от сканера, состоят из символов ограниченного и известного алфавита (например, коды EAN8, EAN13 – только цифры, Code93 – цифры и латинские буквы и т.д.).
Тип Base64 предназначен для случаев, когда данные могут содержать неожиданные, непечатаемые спецсимволы. К таким типам штрихкодов можно отнести: PDF417 ОМС полиса, DataMatrix больничного листа, DataMatrix S1 (контрольные марки продукции, маркируемой средствами идентификации). К специальным символам так же относится и символ с кодом 0, который из-за ограничений технологии NativeApi нельзя передать между внешней компонентой и «1С:Предприятием». Подробнее о таких штрихкодах см. в разделе Штрихкоды, содержащие спецсимволы и символы GS1.
Настройка COM соединения
Стандартные настройки COM соединения драйвера 1С:Cканер штрихкодов отражают стандартные настройки COM большинства сканеров. Однако, в каких-то конкретных случаях это может не так. В таких ситуациях нужно воспользоваться инструкцией настройки своего сканера (устройства) и изменить настройки драйвера 1С:Сканер шрихкодов таким образом, чтобы они были согласованы. При правильной настройке в момент чтения тестовых штрихкодов в режиме COM будут получены результаты, как было показано на рисунках выше.
Android. Сканеры мобильных устройств
Настройка сканера на мобильных устройствах имеет свои особенности. Подключение внешних сканирующих устройств рекомендуется производить заранее в операционной системе.
Устройства, подключаемые через Bluetooth, могут определяться операционной системой по-разному: мультимедийное устройство ввода, внешняя клавиатура, Bluetooth-устройство и пр.
Рис. 10. Bluetooth-устройства, определенные операционной системой, как: мультимедийное устройство ввода, внешняя клавиатура, Bluetooth-устройство
Если сканер подключается, в режиме эмуляции клавиатуры, то в его настройках должен быть включен параметр Устройство ввода.
Рис. 11. Настройка для устройств ввода
Рис. 12. Настройка сканера на мобильном устройстве
Далее необходимо указать драйвер 1С:Сканер штрихкода (Native).
В параметрах подключения нужно выбрать значение Клавиатура для устройств, которые эмулируют режим Клавиатура:
- сканер, встроенный в ТСД;
- сканер, подключенный через USB;
- Bluetooth-устройства, определенные, как устройства ввода.
Для внешних сканеров, подключаемых через Bluetooth, но не являющихся устройством ввода, необходимо в параметрах подключения выбрать само устройство.
Рис. 15. Настройка подключения Bluetooth-устройства
Чтобы такие сканеры не переключались в режим энергосбережения («спящий» режим) драйвером каждый 5 секунд производится опрос устройства.
Тестирование мобильной версии 1С:Сканер штрихкодов можно выполнить на тех же штрихкодах, что указаны выше.
Leschyu --> LeschyuОна точно не срабатывает? В отладчике проверяли? Возможно она сработала и нужно просто обновить форму, или еще что то. Leschyu --> Leschyu
Проверял в отладчике. Срабатывает только после клика или нажатие какой либо клавиши. Vidocq05 --> Vidocq05
Что находится в "Источник", "Событие", "Данные"? Leschyu --> Leschyu
Версия библиотеки какая (версия драйвера) .
Вроде как в ноябрьской что то исправляли касаемо работы в Linux
Leschyu --> LeschyuLeschyu @ Сегодня, 16:07 ,
lsusb
И посмотреть что он отдает
sudo tail -f /dev/[порт на который он зацепился]
Vidocq05 --> Vidocq05По видимому с драйвером косяк. По драйверу ничего не подскажу. Leschyu --> Leschyu
Там он все нормально отдает.
Vidocq05 --> Vidocq05
Leschyu @ Сегодня, 16:57 ,
Из просторов интернета:
Сам сканер ШК при сканировании генерит КОД, который может состоять собственно из самого ШК и префикса с суффиксом. Для того, чтобы сработало "внешнее событие" и ОбработкаВнешнегоСобытия() - должен быть в настройках программы(драйвера) корректно описан СУФФИКС ШК - т.е. спец.символ(последовательность спец.символов), которые "говорят" что ШК "закончился". можно его "обрабатывать". т.е.
- со сканера идет: <Префикс><ОтсканированныйШК><Суффикс>;
- <Префикс> и <Суффикс> настраиваются по книжке с настройками сканера;
- если правильно В ДРОВАХ настроены <Префикс> и <Суффикс> (т.е. такие же, как у сканера), то дрова их отбрасывают, оставляя <ОтсканированныйШК> для 1С-ны.
- если правильно В ДРОВАХ настроен <Суффикс>, то по его приходу и генерится "Внешнее событие". Иначе - ждем это событие до второго пришествия.
- <Суффикс> - это символ(спец.код), который говорит компу о том, что переданная от железа последовательность закончилась;
- <Префикс> - символ, позволяющий отличать "нашу" последовательность (со сканера) от "не нашей" (с фиг знает еще какого устройства) или, например, <префикс> можно использовать чтобы отличать наши "внутренние" ШК от ШК производителей/поставщиков.
В настройках оборудования выставлен суффикс 13 (CR). Такой же я при помощи штрих кодов забил в сканер.
Пытался заставить работать с другим суффиксом (выставлял и в настройках, и забивал в сканер) - безрезультатно. Либо не работает вообще, либо так же ждет нажатия клавиши или клика. twilight_dream --> twilight_dream
Читайте также: