Переход с Windows на Linux в корпоративной среде при внедрении защищенной IT инфраструктуры часто сопровождается сложностями при подключении торгового оборудования. Основной вопрос, который встает перед специалистами: как заставить 1С «видеть» сканер штрихкодов, принтеры чеков и фискальные регистраторы в среде, где нет привычных COM-объектов и ScanOpos.dll. Разберем детально, как решить эту задачу, используя современные возможности платформы 1С и механизмы операционной системы Linux.
Прежде чем приступать к настройке, проанализируем, в каком режиме будет работать наше устройство. В Linux, как и в Windows, существует два основных пути:
/dev/ttyUSB0), обеспечивающий работу с несколькими экземплярами 1С. Это предпочтительный вариант, так как он позволяет 1С генерировать «Внешнее событие», не требуя фокусировки курсора в определенном поле.Рассмотрим наиболее современное и стабильное решение — использование драйвера 1С: Сканер штрихкодов (Native), поддерживающего в том числе работу Bluetooth-устройств. Начиная с последних версий «1С:Библиотеки подключаемого оборудования» (БПО) и конфигураций типа «Управление торговлей 11», включая форму подбора номенклатуры, в систему вшит драйвер, который умеет работать напрямую с портами Linux. Выясним, как его задействовать:
В конфигурации необходимо найти макет с компонентой. Обычно это файлы ScanOPOSNative.dll для Windows и ScanOPOSNativeLin.so для Linux. Если вы используете «Управление торговлей 10.3», вам может потребоваться выгрузить эту компоненту из более новой конфигурации (например, из демо-базы УТ 11) и подключить её как внешнюю обработку.
При использовании Native API мы получаем возможность работать с устройством без прослоек типа Wine. Важно учитывать разрядность: если у вас установлен 64-битный клиент 1С, то и библиотека .so должна быть 64-битной.
Одной из самых частых причин, по которой сканер не заводится в 1С, является отсутствие прав у пользователя на чтение данных из порта. В дистрибутивах на базе Ubuntu/Debian доступ к последовательным портам ограничен группой dialout. Выполним команду для добавления текущего пользователя в эту группу:
sudo usermod -aG dialout $USER
После выполнения команды необходимо обязательно завершить текущий сеанс (Log out) и войти в систему снова, чтобы изменения вступили в силу. Проанализируем ситуацию: если после этого тест устройства в 1С все равно не проходит, попробуйте запустить 1С от имени суперпользователя (через sudo), чтобы исключить проблему прав окончательно. Однако работа под root на постоянной основе крайне не рекомендуется.
Рассмотрим продвинутый способ настройки, который обеспечит стабильность работы оборудования. В 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. Разберем по шагам:
http://localhost:631).Для фискальных регистраторов (ККТ) наиболее стабильным решением является использование драйверов версии 10 от компании АТОЛ, которые имеют нативную поддержку Linux и работают через веб-сервер или библиотеку libfptr.so.
Посмотрим на ситуацию, когда ПодключитьВнешнююКомпоненту вызывает падение платформы. Это часто происходит из-за несовместимости версий библиотек ОС и компоненты 1С. Убедитесь, что установлены необходимые зависимости (например, libusb-0.1 или libusb-1.0), выполнив поиск недостающих библиотек через команду ldd:
ldd ScanOPOSNativeLin.so
Если команда покажет not found для каких-либо пунктов, их необходимо доустановить через менеджер пакетов вашего дистрибутива (apt или yum).
Таким образом, мы выяснили, что полноценная работа с торговым оборудованием в Linux возможна без использования эмуляторов типа Wine. Ключевым фактором успеха является использование Native API драйверов и правильная настройка прав доступа в операционной системе.