Как подключить сканер штрихкодов к 1С на Linux?

Системный администратор 1С v8.3 (Управляемые формы) 1С:Управление торговлей Торговля и дистрибуция
← На главную

Переход с Windows на Linux в корпоративной среде при внедрении защищенной IT инфраструктуры часто сопровождается сложностями при подключении торгового оборудования. Основной вопрос, который встает перед специалистами: как заставить 1С «видеть» сканер штрихкодов, принтеры чеков и фискальные регистраторы в среде, где нет привычных COM-объектов и ScanOpos.dll. Разберем детально, как решить эту задачу, используя современные возможности платформы 1С и механизмы операционной системы Linux.

Анализ режимов работы сканера

Прежде чем приступать к настройке, проанализируем, в каком режиме будет работать наше устройство. В Linux, как и в Windows, существует два основных пути:

  1. Режим эмуляции клавиатуры (USB-HID): Сканер работает как обычное устройство ввода. При сканировании данные «печатаются» в активное поле ввода.
  2. Режим эмуляции последовательного порта (USB-Serial/COM): Сканер передает данные в конкретный порт (например, /dev/ttyUSB0), обеспечивающий работу с несколькими экземплярами 1С. Это предпочтительный вариант, так как он позволяет 1С генерировать «Внешнее событие», не требуя фокусировки курсора в определенном поле.

Использование нативного драйвера (Native API)

Рассмотрим наиболее современное и стабильное решение — использование драйвера 1С: Сканер штрихкодов (Native), поддерживающего в том числе работу Bluetooth-устройств. Начиная с последних версий «1С:Библиотеки подключаемого оборудования» (БПО) и конфигураций типа «Управление торговлей 11», включая форму подбора номенклатуры, в систему вшит драйвер, который умеет работать напрямую с портами Linux. Выясним, как его задействовать:

В конфигурации необходимо найти макет с компонентой. Обычно это файлы ScanOPOSNative.dll для Windows и ScanOPOSNativeLin.so для Linux. Если вы используете «Управление торговлей 10.3», вам может потребоваться выгрузить эту компоненту из более новой конфигурации (например, из демо-базы УТ 11) и подключить её как внешнюю обработку.

При использовании Native API мы получаем возможность работать с устройством без прослоек типа Wine. Важно учитывать разрядность: если у вас установлен 64-битный клиент 1С, то и библиотека .so должна быть 64-битной.

Настройка прав доступа к портам в Linux

Одной из самых частых причин, по которой сканер не заводится в 1С, является отсутствие прав у пользователя на чтение данных из порта. В дистрибутивах на базе Ubuntu/Debian доступ к последовательным портам ограничен группой dialout. Выполним команду для добавления текущего пользователя в эту группу:

sudo usermod -aG dialout $USER

После выполнения команды необходимо обязательно завершить текущий сеанс (Log out) и войти в систему снова, чтобы изменения вступили в силу. Проанализируем ситуацию: если после этого тест устройства в 1С все равно не проходит, попробуйте запустить 1С от имени суперпользователя (через sudo), чтобы исключить проблему прав окончательно. Однако работа под root на постоянной основе крайне не рекомендуется.

Автоматизация через Udev-правила

Рассмотрим продвинутый способ настройки, который обеспечит стабильность работы оборудования. В Linux при переподключении USB-устройства номер порта может измениться (был /dev/ttyUSB0, стал /dev/ttyUSB1). Чтобы этого избежать, создадим правило udev.

Сначала определим идентификаторы устройства, подключив сканер и выполнив:

lsusb

Найдем строку со сканером и запишем ID Vendor:Product (например, 0536:01a0). Теперь создадим файл /etc/udev/rules.d/99-scanner.rules и добавим в него следующую строку:


SUBSYSTEM=="tty", ATTRS{idVendor}=="0536", ATTRS{idProduct}=="01a0", SYMLINK+="barcode_scanner", MODE="0666"

Теперь, как бы вы ни перетыкали сканер, в системе всегда будет ссылка /dev/barcode_scanner с полными правами доступа, которую и нужно указать в настройках 1С.

Особенности клавиатурного режима

Если вы выбрали клавиатурный режим, помните о паре нюансов. В Linux-клиенте 1С может возникать задержка или некорректная передача символов, если раскладка клавиатуры в момент сканирования — русская. Проанализируем решение этой проблемы через префиксы.

Многие специалисты советуют запрограммировать сканер (через управляющие штрихкоды из инструкции к нему) на добавление префикса клавиши F7. В старых конфигурациях 1С это вызывает окно поиска по штрихкоду, куда данные и будут вноситься. Однако более современным методом является обновление драйвера БПО до версии 8.1.7.2 и выше, где исправлены ошибки работы с клавиатурными устройствами в Linux.

Настройка принтеров этикеток и чеков

Для печати этикеток в Linux мы рекомендуем использовать систему печати CUPS. Разберем по шагам:

  1. Установите драйвер принтера в ОС. Большинство современных принтеров (Zebra, TSC) имеют официальные PPD-файлы для Linux.
  2. Добавьте принтер через веб-интерфейс CUPS (обычно доступен по адресу http://localhost:631).
  3. В 1С принтер будет виден как обычный системный принтер. Настройте параметры страницы и шрифты, чтобы штрихкоды не «размывались» при печати.

Для фискальных регистраторов (ККТ) наиболее стабильным решением является использование драйверов версии 10 от компании АТОЛ, которые имеют нативную поддержку Linux и работают через веб-сервер или библиотеку libfptr.so.

Типичные ошибки и их исправление

Посмотрим на ситуацию, когда ПодключитьВнешнююКомпоненту вызывает падение платформы. Это часто происходит из-за несовместимости версий библиотек ОС и компоненты 1С. Убедитесь, что установлены необходимые зависимости (например, libusb-0.1 или libusb-1.0), выполнив поиск недостающих библиотек через команду ldd:

ldd ScanOPOSNativeLin.so

Если команда покажет not found для каких-либо пунктов, их необходимо доустановить через менеджер пакетов вашего дистрибутива (apt или yum).

Таким образом, мы выяснили, что полноценная работа с торговым оборудованием в Linux возможна без использования эмуляторов типа Wine. Ключевым фактором успеха является использование Native API драйверов и правильная настройка прав доступа в операционной системе.

← На главную