При работе в системе 1С:Предприятие 7.7, развернутой на терминальном сервере (RDP), системные администраторы и программисты часто сталкиваются с ситуацией, когда сканер штрих-кода ведет себя как обычная клавиатура. В блокноте или текстовом редакторе данные отображаются корректно, однако в самой 1С 7.7 (например, в конфигурации «Торговля и Склад») вместо автоматического поиска номенклатуры происходит последовательный набор цифр в текущую активную колонку списка. Разберем причины такого поведения и рассмотрим пошаговые методы решения этой технической проблемы.
Проанализируем ситуацию: если при сканировании в блокноте появляются цифры, это означает, что устройство работает в режиме USB-HID (эмуляция клавиатуры). В этом режиме операционная система и 1С воспринимают сканер как устройство ввода, которое очень быстро «нажимает» клавиши с цифрами. Для 1С 7.7 это выглядит как обычный пользовательский ввод. Проблема заключается в том, что программа не получает сигнала о начале события сканирования, поэтому данные попадают в то поле, которое в данный момент находится в фокусе (текущая колонка таблицы или текстовое поле).
Рассмотрим способы перевода сканера в режим, который позволит 1С 7.7 идентифицировать ввод именно как штрих-код.
Это наиболее надежный и профессиональный метод интеграции торгового оборудования в терминальную среду. Использование виртуального COM-порта позволяет драйверу 1С четко понимать, откуда пришли данные, и генерировать специальное Внешнее событие.
Разберем этот процесс по шагам:
Enable USB Serial Emulation или USB COM Port Mode. После этого устройство переинициализируется, и в диспетчере устройств Windows на локальном компьютере в разделе «Порты (COM и LPT)» появится новое устройство, например, USB Serial Port (COM3).Сервис — Настройка торгового оборудования. На вкладке «Сканер штрих-кода» выберите соответствующую модель (например, «Стандартный сканер») и укажите номер проброшенного COM-порта. Обязательно проверьте параметры связи (скорость, биты данных), они должны совпадать с настройками в диспетчере устройств.Если нет возможности использовать эмуляцию COM-порта, можно настроить сканер так, чтобы он имитировал действия пользователя для поиска. В 1С 7.7 стандартная клавиша для вызова окна поиска по штрих-коду в обработках подбора — F7.
Проанализируем алгоритм настройки:
F7.F7 (откроется окно поиска), а затем «впечатает» цифры штрих-кода в это окно и нажмет Enter (суффикс возврата каретки, который обычно настроен по умолчанию).Важно: Этот метод менее стабилен, так как зависит от того, какое окно открыто в 1С и готов ли интерфейс к приему команды в данный момент.
Существуют специализированные драйверы, которые умеют «слушать» клавиатурный ввод и, если он соответствует определенным критериям (высокая скорость ввода и наличие суффикса), преобразовывать его во внешнее событие 1С. Одним из самых популярных решений для 1С 7.7 является Драйвер устройств ввода АТОЛ версии 6.x.
Рассмотрим, как это работает:
Драйвер устанавливается на терминальный сервер. В настройках драйвера указывается, что сканер подключен к клавиатуре (Keyboard). Для корректной работы необходимо настроить Суффикс (обычно это #13 — Enter). Драйвер будет перехватывать поток символов, заканчивающийся этим суффиксом, и передавать его в 1С не как нажатия клавиш, а как готовый штрих-код через механизм ВнешнееСобытие.
Чтобы 1С понимала данные от драйвера (в случае с COM-портом или драйвером АТОЛ), в конфигурации должен быть прописан соответствующий код. Выясним, где именно это происходит. Обычно обработка события описывается в Глобальном модуле или непосредственно в модуле формы документа/обработки.
Посмотрим на пример типового кода для обработки сканирования:
Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные)
Если Событие = "BarCodeScan" Тогда
// Источник - это идентификатор сканера
// Данные - это считанный штрих-код
ШтрихКод = СокрЛП(Данные);
// Здесь вызывается процедура поиска товара по штрих-коду
ИскатьТоварПоШтрихКоду(ШтрихКод);
КонецЕсли;
КонецПроцедуры
Если сканер в справочнике работает, а в обработке «Подбор» — нет, необходимо проверить наличие процедуры ОбработкаВнешнегоСобытия именно в модуле формы этой обработки. Часто разработчики забывают продублировать вызов глобального обработчика в модальных окнах.
При работе через терминал часто возникает проблема «разрыва» данных: из-за сетевых задержек пакеты символов от сканера приходят с паузами, и 1С воспринимает их как несколько разных строк. Чтобы этого избежать, разберем настройку параметра Чувствительность в драйвере ScanOPOS.dll или АТОЛ.
Рекомендация: Увеличьте таймаут (чувствительность) до 50–100 мс. Это заставит драйвер ожидать продолжения ввода, прежде чем решить, что передача штрих-кода завершена. Это критически важно при нестабильном интернет-соединении с терминальным сервером.
Для стабильной работы в среде 1С 7.7 рекомендуется использовать проверенные версии внешних компонент. Например, библиотека ScanOPOS.dll версии 8.0.7.1 считается одной из самых стабильных для «семерки». Более новые версии, предназначенные для платформы 8.x, могут некорректно обрабатывать события в старой архитектуре 1С 7.7.
Подводя итог, наиболее правильным путем будет перевод устройства в режим эмуляции COM-порта и его проброс средствами RDP. Это обеспечит максимальную точность передачи данных и избавит от проблем с фокусом ввода в интерфейсе 1С.