При использовании сканера штрихкодов Symbol DS4308 (или аналогичного Zebra) в связке с 1С на операционной системе Astra Linux пользователи часто сталкиваются с проблемой, когда сканер корректно считывает данные, но не передает их в поля таблиц документов 1С. Эта ситуация может ввести в заблуждение, так как на Windows аналогичная настройка работает без нареканий, а в текстовых редакторах Linux данные со сканера поступают. В этом руководстве мы подробно разберем, как преодолеть эти трудности и обеспечить стабильную работу сканера.
Наш опыт показывает, что проблема может крыться как в некорректной настройке самого сканера, так и в особенностях взаимодействия 1С с операционной системой Linux, а также в специфике конфигурации подключаемого оборудования в 1С. Мы рассмотрим все возможные шаги от начальной диагностики до финальной настройки.
Сканер Symbol DS4308, как и большинство современных моделей, может работать в нескольких основных режимах, которые определяют способ его взаимодействия с компьютером:
1С NativeAPI, минуя сложности эмуляции клавиатуры и связанные с этим проблемы с кодировками или суффиксами.Прежде всего, мы рекомендуем переключить сканер в режим эмуляции COM-порта. Для этого необходимо использовать сервисные штрихкоды, которые поставляются в руководстве пользователя сканера Symbol DS4308 (Zebra). Найдите штрихкод под названием "Standard RS-232" или "USB CDC Host" (CDC - Communications Device Class) и отсканируйте его. Это переведет сканер в режим работы, при котором он будет определяться в системе как последовательный порт.
Также может быть полезно сбросить сканер до заводских настроек с помощью соответствующего сервисного штрихкода из мануала, чтобы исключить влияние предыдущих настроек.
После того как сканер переведен в режим Virtual COM, необходимо правильно настроить операционную систему Astra Linux для его обнаружения и корректной работы с 1С.
При подключении сканера в режиме Virtual COM, Linux назначит ему имя устройства. Чаще всего это будет /dev/ttyACM0, /dev/ttyACM1 и так далее, или /dev/ttyUSB0, /dev/ttyUSB1. Чтобы узнать точное имя порта, выполните следующие шаги:
sudo dmesg -c Это очистит буфер сообщений ядра.sudo dmesgВ выводе команды вы увидите новые сообщения ядра, среди которых будет указано имя порта, назначенного сканеру, например, cdc_acm 2-1:1.0: ttyACM0: USB ACM device. Запомните это имя, например, ttyACM0.
По умолчанию обычные пользователи могут не иметь достаточных прав для чтения и записи в устройства /dev/ttyACMx или /dev/ttyUSBx. Для корректной работы 1С от имени пользователя, необходимо добавить этого пользователя в группу, которая имеет доступ к последовательным портам. Чаще всего это группа dialout.
Выполните следующую команду в терминале, заменив <имя_пользователя> на имя пользователя, под которым запускается 1С:
sudo usermod -a -G dialout <имя_пользователя>
После выполнения этой команды необходимо полностью выйти из пользовательской сессии (разлогиниться) и войти заново, либо перезагрузить компьютер, чтобы изменения вступили в силу.
Имена устройств типа ttyACM0 могут меняться при каждом подключении сканера, если вы вставляете его в другой USB-порт, или если к системе подключены другие аналогичные устройства. Для обеспечения стабильной работы и упрощения настройки в 1С рекомендуется использовать правила udev.
Правила udev позволяют создавать постоянные символические ссылки на устройства на основе их уникальных атрибутов (например, Vendor ID и Product ID). Таким образом, мы можем сделать так, чтобы ваш сканер всегда был доступен по имени, например, /dev/barcode_scanner, независимо от того, как Linux его определил в данный момент.
Для создания такого правила, сначала определим Vendor ID (VID) и Product ID (PID) вашего сканера. Подключите сканер и выполните в терминале:
lsusb
Вы увидите список USB-устройств. Найдите ваш сканер (например, по названию Symbol/Zebra) и определите его VID и PID (обычно в формате XXXX:YYYY). Например: Bus 001 Device 005: ID 05e0:1900 Zebra Technologies Corporation, где 05e0 — VID, а 1900 — PID.
Затем создайте файл правил udev. Например, /etc/udev/rules.d/99-barcode.rules:
sudo nano /etc/udev/rules.d/99-barcode.rules
И добавьте в него следующую строку, заменив idVendor и idProduct на значения вашего сканера:
SUBSYSTEM=="tty", ATTRS{idVendor}=="05e0", ATTRS{idProduct}=="1900", SYMLINK+="barcode_scanner"
Сохраните файл и примените новые правила:
sudo udevadm control --reload-rules
sudo udevadm trigger
Теперь ваш сканер всегда будет доступен по пути /dev/barcode_scanner, который вы сможете использовать в настройках 1С.
Для работы сканеров в режиме USB-COM на Linux обычно используются стандартные модули ядра usbserial и cdc_acm. Убедитесь, что они загружены:
lsmod | grep usbserial
lsmod | grep cdc_acm
Если модули не загружены, их можно загрузить вручную (хотя обычно это происходит автоматически при подключении устройства):
sudo modprobe usbserial
sudo modprobe cdc_acm
В некоторых случаях, как было замечено в обсуждении, может потребоваться загрузка специфического модуля, например ch341. Это актуально для устройств, использующих контроллеры CH340/CH341. Если после выполнения предыдущих шагов сканер всё ещё не работает, попробуйте загрузить этот модуль:
sudo modprobe ch341
Хотя мы рекомендуем использовать режим Virtual COM, давайте кратко рассмотрим важные аспекты, если вы всё же решили работать в режиме USB HID (эмуляции клавиатуры).
В режиме эмуляции клавиатуры сканер должен после считывания штрихкода передавать символ "Enter" (возврат каретки и перевод строки). В Windows это обычно CR+LF (символы 0x0D и 0x0A), а в Linux может быть только CR (0x0D) или LF (0x0A). Если сканер не передает нужный суффикс, 1С не "понимает", что ввод завершен, и не обрабатывает штрихкод. Суффикс настраивается сервисными штрихкодами из руководства сканера. Мы рекомендуем настроить сканер на передачу CR+LF.
Для работы с маркированными товарами и двумерными кодами (DataMatrix, QR) требуется корректная передача символа GS1 (Group Separator, ASCII 29). Этот символ служит разделителем полей в штрихкоде. Если сканер не передает GS, 1С не сможет правильно разобрать маркировку. В Linux символ GS может отображаться как код "08" или просто отсутствовать в строке. Некоторые драйверы 1С могут иметь настройку для добавления GS программно, но лучше, если его передает сам сканер. Проверьте документацию сканера на предмет настроек для передачи GS или "Format Data" опций.
Теперь перейдем к настройке в самой программе 1С, что оказалось критически важным для решения описанной проблемы.
После выбора драйвера, в его настройках вам нужно указать порт, к которому подключен сканер.
/dev/ttyACM0, то в 1С ему обычно соответствует "Virtual COM1" (или просто COM1, COM2 и т.д. в зависимости от конфигурации системы и драйвера). Если вы настроили udev правило, то можете попробовать указать путь /dev/barcode_scanner, если драйвер 1С это позволяет.При успешном тесте, в окне должно появиться сообщение об успешном подключении. Если у вас в тесте не отображаются изображения тестовых штрихкодов, не беспокойтесь — это не всегда критично. Главное, чтобы при сканировании реального штрихкода данные отображались в тестовом окне. Если сканер издает 4 звуковых сигнала, это обычно указывает на ошибку соединения или передачи данных.
Как показал опыт из обсуждения, самая неочевидная и частая причина проблем кроется в неправильной настройке "Рабочих мест" в 1С. Система 1С создает рабочие места для каждого пользователя на каждом компьютере, где происходит работа с оборудованием. Если пользователь многократно пытался настроить сканер на разных компьютерах или с разными настройками, система могла создать избыточные или некорректные рабочие места, которые вступают в конфликт друг с другом.
Важно различать "Тестовый режим" и "Рабочий режим" в 1С. Тест подключения может проходить успешно, показывая, что драйвер видит сканер и получает от него данные. Однако, в "Рабочем режиме" (при сканировании в документы) может быть активировано другое, некорректное "Рабочее место" или неверно настроенное оборудование, что приводит к отсутствию реакции программы. После очистки всех лишних рабочих мест и оборудования, система будет однозначно использовать вашу новую, корректную настройку.
Настройка сканера Symbol DS4308 на Astra Linux для работы с 1С — это комплексный процесс, требующий внимания к деталям на всех уровнях: от физического устройства до конфигурации программы 1С. Мы подробно рассмотрели этапы переключения режима сканера, настройки операционной системы (определение портов, права доступа, стабильное именование) и, что оказалось ключевым, корректное управление "Рабочими местами" в 1С. Удаление избыточных рабочих мест и создание единой, чистой конфигурации часто является решающим фактором для успешной работы.
Помните, что последовательность действий и проверка каждого шага являются залогом успеха. Если сканер издает 4 звуковых сигнала, это почти всегда указывает на проблему с передачей данных или их обработкой, и вам следует перепроверить все этапы настройки.