Подключение торгового оборудования к 1С часто вызывает трудности у начинающих специалистов. Особенно это касается настройки сканеров штрихкодов при работе через удаленный рабочий стол (RDP). Давайте подробно рассмотрим принципы работы интерфейсов сканеров, проанализируем разницу между режимами клавиатуры и COM-порта, а также разберем по шагам, как устранить популярную ошибку подключения оборудования на примере сканеров Honeywell.
Рассмотрим классическую ситуацию: имеется 2D-сканер (например, Honeywell Voyager 1400g), который физически подключен к локальному компьютеру по USB, но база 1С работает на удаленном сервере (через RDP). Пользователь пытается считать штрихкод с накладной, чтобы программа нашла нужный документ. При попытке подключения оборудования в 1С через внешнюю компоненту (например, 1CScanOPOScan_v2), система выдает следующую ошибку:
{ВнешняяОбработка.СканерШтрихкода.МодульОбъекта(260)}: Ошибка при вызове метода контекста (Занять)
Если Объект.Драйвер.Занять(1) = 0 Тогда
по причине: Ошибка вызова метода внешней компоненты
Выясним причину такого поведения. Для этого нам необходимо начать с базовых принципов работы сканирующего оборудования.
Современные сканеры, независимо от физического интерфейса (USB, Bluetooth), могут работать в двух основных логических режимах. Посмотрим на них внимательнее:
Минусы для 1С: Для корректной работы курсор обязательно должен стоять в нужном поле ввода (например, в поле поиска). Если окно 1С не активно, данные потеряются. Кроме того, на передачу символов напрямую влияет текущая раскладка клавиатуры (RUS/ENG) и включенный CapsLock, что часто приводит к искажению данных.
COM3). Сканер отправляет данные в этот порт, а 1С непрерывно «слушает» его.
Плюсы для 1С: При поступлении штрихкода в 1С генерируется Внешнее событие. Программе совершенно неважно, где в данный момент находится курсор. 1С сама перехватит штрихкод, обработает его и выполнит нужное действие (например, добавит товар в чек). Этот режим является стандартом для профессиональной автоматизации.
Проанализируем ситуацию с двумерными штрихкодами (DataMatrix), которые используются для маркировки. Эти коды содержат длинные последовательности символов, включая служебные спецсимволы (например, разделители GS).
Если сканер работает в режиме клавиатуры (HID), он пытается передать этот длинный код как серию очень быстрых нажатий клавиш. Буфер клавиатуры операционной системы часто не справляется с такой скоростью («захлебывается»), и часть символов теряется или искажается. Перевод сканера в режим COM-порта полностью решает эту проблему, так как данные передаются пакетом через порт, гарантируя целостность длинных кодов маркировки.
В процессе настройки специалисты часто сталкиваются с фирменной утилитой Honeywell — EzConfig (запускается через браузер). Давайте проясним ее назначение.
EzConfig — это типовая программа для визуальной настройки параметров сканера. Через нее не подключают сканер к 1С для постоянной работы. Она служит только для конфигурирования (изменения внутренних настроек сканера). Как только вы настроили устройство (например, перевели его в нужный режим интерфейса), утилиту нужно закрыть и забыть о ней.
На практике для перевода сканера Honeywell в режим эмуляции COM-порта достаточно взять инструкцию (Quick Start Guide) и отсканировать один управляющий штрихкод: USB Serial Emulation. После этого Windows обнаружит новое устройство и установит драйвер виртуального COM-порта.
Теперь перейдем к самому сложному этапу — передаче данных от сканера на удаленный сервер 1С. Поскольку сканер физически подключен к локальному ПК (например, на порт COM4), 1С на сервере по умолчанию его не видит.
Рассмотрим по шагам, как пробросить порт:
После подключения к серверу, локальный порт должен стать доступен в терминальной сессии. Однако автоматический проброс срабатывает не всегда. Если в 1С порт не виден, используем маппинг портов через командную строку на сервере:
net use com4: \\tsclient\com4:
Где com4: — это виртуальный порт на сервере, а \\tsclient\com4: — это порт на вашем локальном компьютере.
Вернемся к ошибке, с которой мы начали. Метод Объект.Драйвер.Занять(1) — это команда, с помощью которой 1С пытается монопольно захватить COM-порт, чтобы никто другой не мог читать из него данные. Если происходит ошибка вызова этого метода, это означает, что захватить порт не удалось. Для обхода этой проблемы и обеспечения одновременной работы сканера в нескольких базах можно использовать инструмент для параллельной работы оборудования через COM-порт.
Выясним основные причины этой ошибки:
net use.COM1, а сканер при пробросе получил номер COM4. Внимательно проверьте настройки драйвера в 1С.В старых конфигурациях часто использовались COM-компоненты (например, упомянутая 1CScanOPOScan_v2). Их главный минус — необходимость регистрации файлов .dll в реестре Windows с правами администратора (через regsvr32), что на терминальных серверах часто вызывает конфликты прав доступа.
В современных конфигурациях на платформе 1С:Предприятие 8.3 настоятельно рекомендуем использовать Native API драйверы (например, стандартный драйвер 1С:Сканеры штрихкода (NativeApi)). Они устанавливаются из макета конфигурации автоматически, не требуют регистрации в реестре ОС и работают значительно стабильнее при пробросе через RDP. При необходимости можно воспользоваться готовой обработкой для подключения сканеров через драйвер NativeAPI в типовых конфигурациях.
Когда вы переводите сканер в режим COM-порта, система получает непрерывный поток данных. Чтобы 1С поняла, где заканчивается один штрихкод и начинается другой, используется специальный символ — суффикс.
В настройках оборудования 1С и в настройках самого сканера (через штрихкоды из инструкции) необходимо задать суффикс возврата каретки — CR (Код символа 13). Проанализируем настройки: если сканер отправляет штрихкод, но в 1С ничего не происходит, чаще всего причина кроется в том, что 1С ждет суффикс CR, а сканер его не отправляет. Обязательно проверяйте параметры суффикса в тесте устройства в 1С.
Давайте подытожим и составим чек-лист для успешного подключения сканера по RDP:
CR (13).Следуя этим правилам, вы сможете избежать конфликтов оборудования, надежно пробросить сканер на удаленный сервер и навсегда забыть об ошибках захвата портов.