Как узнать, какой именно сканер штрих-кодов считал код в 1С при подключении нескольких устройств к одному ПК?

Программист 1С v8.3 (Обычные формы) 1С:Комплексная автоматизация Управленческий учет Торговля и дистрибуция
← На главную

Часто в складской логистике или на участках упаковки возникает задача: к одному компьютеру подключено несколько сканеров штрих-кодов, каждый из которых закреплен за определенным сотрудником. При использовании стандартного механизма ВнешнееСобытие в 1С:Комплексная автоматизация (обычное приложение) мы получаем данные, где источником является обобщенное СканерШтрихкода. Давайте разберемся, как программно и аппаратно различить устройства, чтобы точно знать, кто именно отсканировал товар.

Решение 1: Настройка уникальных префиксов и суффиксов

Это самый простой и доступный метод, который не требует глубокой доработки конфигурации или изменения драйверов. Большинство современных сканеров (например, SunLux) позволяют задать уникальные символы (префиксы или суффиксы) через конфигурационный лист самого сканера.

  1. Подготовка оборудования: Распечатайте руководство пользователя для вашей модели сканера. Найдите раздел настройки префиксов и суффиксов.
  2. Назначение уникальных кодов: Присвойте каждому сканеру уникальный префикс, который будет выступать в роли «имени» устройства. Например, для первого сотрудника задайте префикс A01, для второго — A02 и так далее.
  3. Настройка 1С: В базе данных необходимо создать справочник или РегистрСведений, где будет храниться соответствие префикса конкретному пользователю или сотруднику.
  4. Обработка события: В процедуре ВнешнееСобытие (или в обработчике события ПолучениеДанных внешней компоненты) анализируйте приходящую строку. Если строка начинается с определенного префикса, вы легко определите владельца устройства.

Пример логики обработки в коде:


Процедура ВнешнееСобытие(Источник, Событие, Данные)
    Если Лев(Данные, 3) = "A01" Тогда
        Сотрудник = Справочники.Пользователи.НайтиПоНаименованию("Иванов");
    ИначеЕсли Лев(Данные, 3) = "A02" Тогда
        Сотрудник = Справочники.Пользователи.НайтиПоНаименованию("Петров");
    КонецЕсли;
    // Дальнейшая логика обработки заказа
КонецПроцедуры

Решение 2: Использование режима эмуляции COM-порта

Если ваши сканеры поддерживают режим эмуляции USB-COM (виртуальный последовательный порт), этот метод будет наиболее надежным и профессиональным.

  1. Установка драйверов: Для каждого сканера установите драйвер производителя, который создает виртуальный COM-порт в системе Windows.
  2. Настройка портов: В диспетчере устройств убедитесь, что каждый сканер получил свой уникальный номер порта (например, COM3, COM4, COM5).
  3. Настройка в 1С: Используйте механизм «Подключаемое оборудование» (если версия конфигурации позволяет) или настройте отдельные экземпляры ВнешнейКомпоненты для каждого порта. В этом случае 1С будет получать событие не от общего потока клавиатуры, а от конкретного последовательного порта, жестко закрепленного за устройством.

Решение 3: Альтернативный подход через авторизацию сканером

Если техническая настройка префиксов кажется избыточной, вы можете реализовать бизнес-логику «авторизации». Создайте уникальные QR-коды для каждого сканера и наклейте их прямо на корпуса устройств.

Алгоритм действий сотрудника:

Важное примечание: При выборе метода учитывайте, что клавиатурный ввод (HID-режим) может смешивать сигналы, если оба устройства сработают одновременно. Переход на COM-эмуляцию или использование Raw Input API через внешнюю dll на C# — это наиболее надежные методы для исключения коллизий ввода в сложных корпоративных системах.

← На главную