При автоматизации торговых и складских процессов системные администраторы часто сталкиваются с аппаратными проблемами. Типичный сценарий: к рабочему месту подключен сканер штрихкода в разрыв клавиатуры (через физический порт PS/2 или USB в режиме эмуляции клавиатуры). В Блокноте устройство работает идеально, автоматически перенося курсор на новую строку после каждого считывания. Однако в 1С при сканировании документов штрихкоды записываются в одну длинную строку без перехода и без автоматического поиска номенклатуры. Проблема усугубляется, если пользователи работают в терминальном режиме через удаленный рабочий стол (RDP).
В этой статье мы подробно разберем, почему возникает такая ситуация, как устроено взаимодействие 1С со сканером «в разрыв клавиатуры», и пошагово настроим систему для корректной работы.
Для начала проанализируем логику работы текстового редактора и учетной системы. Блокнот воспринимает сканер как обычную клавиатуру, которая очень быстро вводит символы. Если в самом сканере аппаратно запрограммирован суффикс возврата каретки (символ CR — Carriage Return, или клавиша Enter), Блокнот послушно переносит курсор на следующую строку. Физически сканер посылает в систему последовательность символов штрихкода, а затем код клавиши Enter (код #13 в таблице ASCII).
В платформе 1С:Предприятие логика обработки ввода гораздо сложнее:
CR или #13).Если в 1С не настроен или некорректно работает драйвер торгового оборудования, система не перехватывает ввод. Она считает, что пользователь вручную нажимает клавиши на клавиатуре. При этом символ Enter в конце штрихкода либо игнорируется платформой (так как фокус ввода не установлен в текстовое поле), либо просто переводит фокус на другой элемент формы вместо запуска процедуры поиска. В результате данные накапливаются в активном поле ввода «в одну строку».
При замене компьютера (когда «померло старое железо») или при перенастройке RDP-подключения старые настройки торгового оборудования в 1С перестают работать. Выясним причину этого поведения.
В современных конфигурациях 1С на управляемых формах, использующих Библиотеку подключаемого оборудования (БПО), настройки оборудования больше не хранятся в локальных файлах на компьютере или в реестре операционной системы. Все параметры записываются непосредственно в базу данных в справочник ПодключаемоеОборудование. При этом каждая запись жестко привязывается к справочнику РабочиеМеста.
Идентификатор рабочего места (GUID) генерируется платформой автоматически при первом запуске сеанса на основе двух параметров:
Когда вы переносите базу на новый компьютер или подключаетесь под другим пользователем в RDP-сессии, 1С создает абсолютно новое «Рабочее место». Старые настройки оборудования остаются привязанными к старому имени компьютера. Новое рабочее место инициализируется с «чистого листа», из-за чего ранее установленные драйверы и настройки суффиксов перестают применяться.
Рассмотрим подробный алгоритм настройки клавиатурного сканера в актуальных версиях 1С на управляемых формах.
Прежде чем приступать к настройке 1С, убедимся, что сам сканер передает суффикс возврата каретки. Откроем Блокнот и отсканируем любой штрихкод. Курсор должен автоматически переместиться на строку ниже. Если переноса не происходит, необходимо взять инструкцию к вашей модели сканера, найти там раздел «Suffix Configuration» и отсканировать настроечный штрихкод «ADD CR SUFFIX» (или «Enter»). Только после этого переходим к настройкам 1С.
Часто старые драйверы (например, старые версии АТОЛ или старая библиотека «1С:Сканер штрихкода» версии 8.0.х.х) отказываются устанавливаться в современных операционных системах или несовместимы с новыми релизами платформы 1С. Разберем, как обновить компоненту:
Создадим новую карточку подключения сканера в системе:
1С:Сканер штрихкода (NativeAPI).В открывшемся окне настройки драйвера выполним ключевые действия:
13 (что соответствует клавише Enter / Возврат каретки) или символ 'CR'. Если поле пустое, введем туда 13.Данные получены: '4601234567890' Suffix: '13'.После успешного прохождения теста сохраняем настройки. Теперь при сканировании в любом документе 1С будет корректно перехватывать внешнее событие и обрабатывать его штатным кодом конфигурации.
Работа «в разрыв клавиатуры» через удаленный рабочий стол — это самый нестабильный способ подключения торгового оборудования. Разберем основные проблемы и методы их решения:
Рассмотрим ситуацию, когда конфигурация сильно изменена, БПО устарела, а установить современные NativeAPI драйверы не представляется возможным. Существует надежный обходной путь, который не требует настройки торгового оборудования в 1С:
F7.F7 (это будет его Префикс), а после ввода штрихкода нажимал Enter (Суффикс).F7, 1С откроет модальное окно ввода кода, туда впишется штрихкод и закроется нажатием автоматического Enter.Для реализации этого метода найдите в инструкции к вашему сканеру разделы «Add Prefix» и назначьте в качестве префикса клавишу F7 (код клавиши в настройках некоторых сканеров может обозначаться специальным HEX-кодом, сверьтесь с таблицей управляющих кодов вашей модели).
Для обеспечения максимальной стабильности, особенно при работе с маркированным товаром и в RDP-сессиях, настоятельно рекомендуется отказаться от режима клавиатуры (PS/2) и перевести сканер в режим эмуляции виртуального COM-порта (Virtual COM Port):
COM3).При таком подключении 1С будет получать штрихкод мгновенно в виде единого пакета данных. Система будет абсолютно независима от текущей раскладки клавиатуры пользователя, от скорости сети и от того, в каком поле формы сейчас установлен фокус ввода (курсор).