Как подключить сканер штрихкодов DataMatrix в 1С 7.7 (на примере Datalogic QW2400)

Программист 1С v7.7 Торговля и дистрибуция
← На главную

С введением обязательной маркировки товаров («Честный ЗНАК», табачные изделия, обувь, лекарства) перед пользователями классических «клюшек» (1С 7.7) встал вопрос: как заставить старую добрую систему корректно считывать двумерные коды DataMatrix. Проблема заключается не только в физической способности сканера увидеть код, но и в том, как эти данные передаются в программу. В этой статье мы подробно разберем, почему старые методы «в разрыв клавиатуры» больше не эффективны и как правильно настроить современный сканер, такой как Datalogic QW2400, для стабильной работы.

Почему клавиатурный режим — это «тупик» для DataMatrix?

Рассмотрим ситуацию, когда сканер подключен просто как USB-клавиатура. Проанализируем основные проблемы, с которыми вы столкнетесь:

  1. Зависимость от раскладки: Если в момент сканирования в 1С включена русская раскладка, вместо латинских букв и спецсимволов кода DataMatrix вы получите «абракадабру». Попытки программно заменять символы в коде 1С (как предлагалось в сообщениях форума) — это трудоемкий и ненадежный путь, так как спецсимволы могут интерпретироваться системой непредсказуемо.
  2. Потеря управляющих символов: В кодах маркировки часто используется непечатный символ GS (Group Separator, ASCII 29). В клавиатурном режиме операционная система или RDP-клиент могут его просто проигнорировать, «склеив» части штрихкода, что сделает его невалидным для проверки.
  3. Скорость и надежность: Длинные коды (до 150-200 символов) в клавиатурном режиме передаются медленно, и любая задержка в сети (при работе через RDP) может привести к потере части строки.

Выясним причину: 1С 7.7 ожидает данные через механизм «Внешнее событие», который лучше всего работает с COM-портами. Поэтому единственно верным решением является перевод сканера в режим эмуляции COM-порта (USB-COM).

Шаг 1: Перевод сканера в режим эмуляции COM-порта

Разберем по шагам процесс настройки на примере Datalogic QW2400. Почти все современные USB-сканеры поддерживают виртуальный COM-порт.

  1. Первым делом скачаем с официального сайта производителя драйвер Datalogic USB-COM Driver. Установим его на локальный компьютер, к которому физически подключен сканер.
  2. Найдем в руководстве пользователя (User Manual) штрихкод с названием "USB-COM-STD" или "Select USB Virtual COM". Отсканируем его.
  3. Проверим результат: в «Диспетчере устройств» Windows в разделе «Порты (COM и LPT)» должно появиться новое устройство, например, Datalogic Scanner (COM3). Запомним номер порта.

Важный нюанс: После смены режима сканер может «пропасть» из системы на несколько секунд. Если порт не появился, попробуйте физически переподключить кабель USB.

Шаг 2: Настройка работы через RDP (терминальный сервер)

Если ваша 1С 7.7 развернута на сервере, проанализируем, как пробросить наш локальный COM-порт в терминальную сессию. Посмотрим на стандартные средства:

В настройках RDP-клиента (mstsc.exe) перед подключением перейдем на вкладку «Локальные ресурсы». Нажмем кнопку «Подробнее...» и обязательно установим флажок на пункте «Порты». Теперь при входе на сервер ваш локальный COM3 станет доступен внутри сессии под тем же или другим именем.

Проверить проброс на сервере можно командой в командной строке:

change port /query

Если стандартный проброс работает нестабильно (что бывает при большом количестве пользователей), рекомендуется использовать утилиту net use в стартовом скрипте пользователя:

net use com3: \\client\com3:

Шаг 3: Настройка 1С 7.7 и библиотеки ScanOpos.dll

Теперь разберем, будет ли работать старая библиотека. Стандартная ScanOpos.dll версии 7.0 часто не справляется с длинными кодами DataMatrix. Проанализируем решение:

Рекомендуется использовать версию ScanOpos.dll 8.0.8.4 или выше. Также отличные результаты показывает библиотека от компании «Штрих-М» (Scaner1C.dll). Рассмотрим процесс подключения в конфигурации:

  1. Загрузим компоненту в коде ПриНачалеРаботыСистемы:

Если ЗагрузитьВнешнююКомпоненту("ScanOpos.dll") <> 1 Тогда
    Предупреждение("Ошибка загрузки ScanOpos.dll");
КонецЕсли;
  1. В настройках торгового оборудования в самой 1С выберем созданный нами COM-порт, установим скорость (обычно 9600, но для виртуальных портов это не критично) и укажем суффикс #13 (символ CR).

Шаг 4: Обработка спецсимволов и символа GS

Для правильной работы с маркировкой табака и других товаров нам нужно научить 1С опознавать символ-разделитель GS. Поскольку 1С 7.7 не всегда корректно принимает символ с кодом 29 через внешнее событие, применим хитрость — замену символа на уровне сканера.

Используем утилиту Datalogic Aladdin. Это графическое ПО для настройки сканеров Datalogic. В нем выполним следующие действия:

Теперь в 1С в процедуре ОбработкаВнешнегоСобытия мы получим строку вида 01046...21...|91...|92.... Нам остается лишь написать несложный парсер:


Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные)
    Если Событие = "BarCodeValue" Тогда
        Штрихкод = СокрЛП(Данные);
        // Заменяем наш суррогатный разделитель обратно на стандартный, 
        // если это необходимо для дальнейших функций проверки
        ЧистыйКод = СтрЗаменить(Штрихкод, "|", Симв(29));
        // Далее следует логика поиска товара или проверки маркировки
        РазборМаркировки(ЧистыйКод);
    КонецЕсли;
КонецПроцедуры

Резюме

Подведем итоги нашего исследования. Подключить современный сканер к 1С 7.7 для работы с DataMatrix вполне реально, если отказаться от клавиатурного режима в пользу эмуляции COM-порта. Это решает проблемы с раскладкой, спецсимволами и длиной штрихкода. Использование актуальных версий ScanOpos.dll или альтернативных библиотек обеспечит стабильность системы, а предварительная настройка сканера через Datalogic Aladdin позволит гибко управлять передаваемыми данными.

Помните, что работа с маркировкой в 1С 7.7 — это всегда сочетание правильной настройки «железа» и небольшой доработки программного кода для обработки длинных строк и спецсимволов.

← На главную