Как настроить сканер Symbol DS4308 на Astra Linux для работы с 1С:Медицина.Больничная аптека, если он не передает данные в таблицу товаров?

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

При использовании сканера штрихкодов Symbol DS4308 (или аналогичного Zebra) в связке с 1С на операционной системе Astra Linux пользователи часто сталкиваются с проблемой, когда сканер корректно считывает данные, но не передает их в поля таблиц документов 1С. Эта ситуация может ввести в заблуждение, так как на Windows аналогичная настройка работает без нареканий, а в текстовых редакторах Linux данные со сканера поступают. В этом руководстве мы подробно разберем, как преодолеть эти трудности и обеспечить стабильную работу сканера.

Наш опыт показывает, что проблема может крыться как в некорректной настройке самого сканера, так и в особенностях взаимодействия 1С с операционной системой Linux, а также в специфике конфигурации подключаемого оборудования в 1С. Мы рассмотрим все возможные шаги от начальной диагностики до финальной настройки.

1. Понимание режимов работы сканера и его переключение

Сканер Symbol DS4308, как и большинство современных моделей, может работать в нескольких основных режимах, которые определяют способ его взаимодействия с компьютером:

  1. USB HID (Human Interface Device): В этом режиме сканер эмулирует обычную клавиатуру. Отсканированный штрихкод передается в систему как последовательность символов, имитируя нажатие клавиш. Курсор должен находиться в активном поле ввода, куда будет введен штрихкод. На Linux могут возникнуть сложности с интерпретацией скан-кодов, например, отсутствие символа возврата каретки (CR) после сканирования, что приводит к неполному вводу или отсутствию реакции программы.
  2. Virtual COM (RS-232 эмуляция): В этом режиме сканер эмулирует последовательный порт (COM-порт). Данные передаются как есть, напрямую в приложение, которое "слушает" этот порт. Для 1С на Linux этот режим часто является более предпочтительным и стабильным, так как он позволяет приложению напрямую взаимодействовать с устройством через драйвер 1С NativeAPI, минуя сложности эмуляции клавиатуры и связанные с этим проблемы с кодировками или суффиксами.

Действие: Переключение сканера в режим Virtual COM

Прежде всего, мы рекомендуем переключить сканер в режим эмуляции COM-порта. Для этого необходимо использовать сервисные штрихкоды, которые поставляются в руководстве пользователя сканера Symbol DS4308 (Zebra). Найдите штрихкод под названием "Standard RS-232" или "USB CDC Host" (CDC - Communications Device Class) и отсканируйте его. Это переведет сканер в режим работы, при котором он будет определяться в системе как последовательный порт.

Также может быть полезно сбросить сканер до заводских настроек с помощью соответствующего сервисного штрихкода из мануала, чтобы исключить влияние предыдущих настроек.

2. Настройка Astra Linux для работы со сканером в режиме Virtual COM

После того как сканер переведен в режим Virtual COM, необходимо правильно настроить операционную систему Astra Linux для его обнаружения и корректной работы с 1С.

Определение COM-порта

При подключении сканера в режиме Virtual COM, Linux назначит ему имя устройства. Чаще всего это будет /dev/ttyACM0, /dev/ttyACM1 и так далее, или /dev/ttyUSB0, /dev/ttyUSB1. Чтобы узнать точное имя порта, выполните следующие шаги:

  1. Отключите сканер от компьютера.
  2. Откройте терминал и выполните команду: sudo dmesg -c Это очистит буфер сообщений ядра.
  3. Подключите сканер к USB-порту.
  4. Снова в терминале выполните команду: sudo dmesg

В выводе команды вы увидите новые сообщения ядра, среди которых будет указано имя порта, назначенного сканеру, например, cdc_acm 2-1:1.0: ttyACM0: USB ACM device. Запомните это имя, например, ttyACM0.

Права доступа к COM-порту

По умолчанию обычные пользователи могут не иметь достаточных прав для чтения и записи в устройства /dev/ttyACMx или /dev/ttyUSBx. Для корректной работы 1С от имени пользователя, необходимо добавить этого пользователя в группу, которая имеет доступ к последовательным портам. Чаще всего это группа dialout.

Выполните следующую команду в терминале, заменив <имя_пользователя> на имя пользователя, под которым запускается 1С:

sudo usermod -a -G dialout <имя_пользователя>

После выполнения этой команды необходимо полностью выйти из пользовательской сессии (разлогиниться) и войти заново, либо перезагрузить компьютер, чтобы изменения вступили в силу.

Стабильное именование портов (udev)

Имена устройств типа 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

3. Настройка сканера и суффиксов (для режима USB HID)

Хотя мы рекомендуем использовать режим Virtual COM, давайте кратко рассмотрим важные аспекты, если вы всё же решили работать в режиме USB HID (эмуляции клавиатуры).

Значение суффиксов (CR/LF)

В режиме эмуляции клавиатуры сканер должен после считывания штрихкода передавать символ "Enter" (возврат каретки и перевод строки). В Windows это обычно CR+LF (символы 0x0D и 0x0A), а в Linux может быть только CR (0x0D) или LF (0x0A). Если сканер не передает нужный суффикс, 1С не "понимает", что ввод завершен, и не обрабатывает штрихкод. Суффикс настраивается сервисными штрихкодами из руководства сканера. Мы рекомендуем настроить сканер на передачу CR+LF.

Проблема с символом GS (ASCII 29) для маркировки

Для работы с маркированными товарами и двумерными кодами (DataMatrix, QR) требуется корректная передача символа GS1 (Group Separator, ASCII 29). Этот символ служит разделителем полей в штрихкоде. Если сканер не передает GS, 1С не сможет правильно разобрать маркировку. В Linux символ GS может отображаться как код "08" или просто отсутствовать в строке. Некоторые драйверы 1С могут иметь настройку для добавления GS программно, но лучше, если его передает сам сканер. Проверьте документацию сканера на предмет настроек для передачи GS или "Format Data" опций.

4. Настройка 1С:Медицина.Больничная аптека

Теперь перейдем к настройке в самой программе 1С, что оказалось критически важным для решения описанной проблемы.

Подключаемое оборудование и создание устройства

  1. Откройте 1С:Медицина.Больничная аптека.
  2. Перейдите в раздел Администрирование (или аналогичный раздел с настройками).
  3. Найдите пункт РМК и подключаемое оборудование (или просто "Подключаемое оборудование") и установите флажок "Использовать подключаемое оборудование".
  4. В списке "Подключаемое оборудование" выберите тип оборудования "Сканеры штрихкодов".
  5. Создайте новое устройство, нажав кнопку "Создать".
  6. В качестве драйвера выберите "1С:Сканеры штрихкода (NativeApi)". Этот универсальный драйвер предназначен для работы с большинством сканеров и предоставляет необходимые настройки.

Выбор порта и тестирование подключения

После выбора драйвера, в его настройках вам нужно указать порт, к которому подключен сканер.

  1. В поле "Порт" выберите соответствующее значение. Если ваш сканер в Linux определился как /dev/ttyACM0, то в 1С ему обычно соответствует "Virtual COM1" (или просто COM1, COM2 и т.д. в зависимости от конфигурации системы и драйвера). Если вы настроили udev правило, то можете попробовать указать путь /dev/barcode_scanner, если драйвер 1С это позволяет.
  2. Убедитесь, что скорость порта (Baud Rate) соответствует настройкам сканера (обычно 9600 или 115200 бит/с).
  3. Нажмите кнопку "Тест подключения".

При успешном тесте, в окне должно появиться сообщение об успешном подключении. Если у вас в тесте не отображаются изображения тестовых штрихкодов, не беспокойтесь — это не всегда критично. Главное, чтобы при сканировании реального штрихкода данные отображались в тестовом окне. Если сканер издает 4 звуковых сигнала, это обычно указывает на ошибку соединения или передачи данных.

Критический шаг: Управление "Рабочими местами"

Как показал опыт из обсуждения, самая неочевидная и частая причина проблем кроется в неправильной настройке "Рабочих мест" в 1С. Система 1С создает рабочие места для каждого пользователя на каждом компьютере, где происходит работа с оборудованием. Если пользователь многократно пытался настроить сканер на разных компьютерах или с разными настройками, система могла создать избыточные или некорректные рабочие места, которые вступают в конфликт друг с другом.

  1. Проблема: Пользователь может быть залогинен на нескольких машинах или ранее пытался настроить сканер на разных компьютерах. Каждая такая попытка может создавать новое "Рабочее место" и привязку оборудования к нему. Даже если тест подключения проходит успешно, в рабочем режиме (например, при сканировании в таблице товаров) сканер будет издавать 4 звуковых сигнала и не передавать данные, поскольку активное рабочее место или привязанное к нему оборудование могут быть не теми, которые вы настроили.
  2. Решение: Мы настоятельно рекомендуем выполнить следующие шаги:
    1. Удалите ВСЕ существующие рабочие места и все ранее созданные настройки подключаемого оборудования (сканеров штрихкода) в 1С.
    2. Убедитесь, что пользователь, под которым вы работаете, не залогинен на других машинах с этой базой 1С.
    3. Создайте одно единственное Рабочее место и одну единственную настройку сканера штрихкодов для текущего пользователя на текущем компьютере.
    4. Обязательно установите флажок "Использовать" для созданного сканера.
    5. Снова выполните "Тест подключения". Если тест успешен, попробуйте отсканировать штрихкод в документе (например, в таблице товаров).

Важно различать "Тестовый режим" и "Рабочий режим" в 1С. Тест подключения может проходить успешно, показывая, что драйвер видит сканер и получает от него данные. Однако, в "Рабочем режиме" (при сканировании в документы) может быть активировано другое, некорректное "Рабочее место" или неверно настроенное оборудование, что приводит к отсутствию реакции программы. После очистки всех лишних рабочих мест и оборудования, система будет однозначно использовать вашу новую, корректную настройку.

Заключение

Настройка сканера Symbol DS4308 на Astra Linux для работы с 1С — это комплексный процесс, требующий внимания к деталям на всех уровнях: от физического устройства до конфигурации программы 1С. Мы подробно рассмотрели этапы переключения режима сканера, настройки операционной системы (определение портов, права доступа, стабильное именование) и, что оказалось ключевым, корректное управление "Рабочими местами" в 1С. Удаление избыточных рабочих мест и создание единой, чистой конфигурации часто является решающим фактором для успешной работы.

Помните, что последовательность действий и проверка каждого шага являются залогом успеха. Если сканер издает 4 звуковых сигнала, это почти всегда указывает на проблему с передачей данных или их обработкой, и вам следует перепроверить все этапы настройки.

← На главную