При автоматизации складских процессов или крупных торговых точек часто возникает задача подключения нескольких сканеров штрихкода к одному рабочему месту. Основная сложность заключается в том, что система должна понимать, с какого именно устройства пришли данные, чтобы выполнить соответствующее действие (например, один сканер используется для приемки, другой — для отгрузки, а третий — для комплектации, и всё это в рамках одного открытого документа). Рассмотрим подробно, как реализовать разделение потоков данных от разных устройств.
Большинство бюджетных сканеров по умолчанию работают в режиме эмуляции клавиатуры. Проанализируем, почему это создает трудности: когда сканер считывает код, он просто «печатает» символы в то поле, где сейчас находится фокус ввода. Если подключить три таких сканера, операционная система Windows будет воспринимать их как три одинаковые клавиатуры, смешивая данные в один поток. В этом случае 1С не сможет определить «автора» события без дополнительных манипуляций.
Это самый простой и универсальный метод, который подходит для сканеров, работающих в режиме клавиатуры. Разберем его по шагам:
Honeywell, Datalogic, Zebra) поддерживает настройку с помощью управляющих штрихкодов. Нам необходимо зайти в инструкцию к устройству и найти раздел «Add Prefix».ВнешнееСобытие или при анализе строки ввода мы считываем первый символ. Если пришла «1» — выполняем процедуру для первого поста, если «2» — для второго.Важно: При использовании этого метода в 1С необходимо настроить префиксы в карточке торгового оборудования, чтобы драйвер корректно отсекал служебные символы от самого штрихкода.
Этот метод считается профессиональным и наиболее надежным («промышленным»). В этом режиме сканер передает данные не в поток клавиатуры, а в виртуальный последовательный порт. Рассмотрим преимущества этого подхода:
COM3, COM4, COM5).Для реализации этого метода необходимо перевести сканер в режим «USB Serial Emulation» (также через сервисные штрихкоды) и установить соответствующий драйвер производителя в операционной системе.
Если мы работаем в современных конфигурациях 1С на управляемых формах, использование БПО позволяет элегантно решить задачу. Выясним, как это настроить:
В справочнике «Подключаемое оборудование» мы создаем три отдельных экземпляра оборудования типа «Сканеры штрихкода». Для каждого экземпляра в параметрах подключения указываем свой COM-порт. В коде конфигурации при обработке события оповещения мы можем идентифицировать устройство. Рассмотрим пример кода:
// Пример обработки в модуле формы или в обработчике БПО
Процедура ОбработатьШтрихкоды(ДанныеСканера)
Для Каждого ТекущийШтрихкод Из ДанныеСканера Цикл
// Идентификация устройства по ссылке на оборудование
Если ТекущийШтрихкод.Устройство = Объект.СканерПриемка Тогда
ВыполнитьПриемку(ТекущийШтрихкод.Штрихкод);
ИначеЕсли ТекущийШтрихкод.Устройство = Объект.СканерОтгрузка Тогда
ВыполнитьОтгрузку(ТекущийШтрихкод.Штрихкод);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Как отмечалось в обсуждении на форуме, некоторые драйверы (например, от компании «Штрих-М») позволяют разделять данные по логическим устройствам. При получении события от драйвера, в параметрах передается номер логического устройства (ЛУ). Это позволяет даже на одном физическом COM-порту (если используется специфический концентратор) или при разных настройках драйвера четко разграничивать задачи.
Проанализируем ситуацию с беспроводными устройствами. У них есть два основных профиля подключения:
При подключении трех и более сканеров к одному системному блоку следует обратить внимание на электропитание. Три активных лазерных или имидж-сканера могут потреблять значительный ток. Рекомендуем использовать активный USB-хаб с внешним блоком питания, чтобы избежать внезапных отключений оборудования или портов материнской платы.
Также, если вы решили использовать метод с префиксами, старайтесь выбирать в качестве префиксов непечатные символы или редкие комбинации, чтобы избежать случайного срабатывания при обычном наборе текста пользователем на клавиатуре.
Подводя итог, наиболее стабильным и правильным с точки зрения архитектуры 1С является перевод всех сканеров в режим эмуляции COM-порта и их раздельная настройка в справочнике подключаемого оборудования. Это избавит вас от необходимости «перешивать» сканеры при каждой смене бизнес-логики и обеспечит корректную работу системы в многозадачном режиме.