Как настроить автоматическое добавление товара в 1С при сканировании штрих-кода?

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

Многие пользователи 1С сталкиваются с неудобством при работе на кассе: после каждого сканирования товара приходится либо нажимать кнопку "Считать штрих-код" (или клавишу F7), либо подтверждать ввод нажатием кнопки "ОК" в появившемся окне. В условиях большого потока покупателей это существенно замедляет работу. Наша задача — реализовать режим «как в супермаркете», когда кассир просто считывает коды один за другим, а строки автоматически появляются в табличной части документа.

Рассмотрим подробно, почему это происходит и как настроить систему для бесперебойной автоматической работы. Разберем ситуацию с точки зрения как аппаратных настроек сканера, так и программных манипуляций в самой 1С.

Причина проблемы: режимы работы сканера

Проанализируем ситуацию. Если ваша программа требует нажатия дополнительных кнопок, значит, сканер работает в режиме эмуляции клавиатуры (Keyboard Wedge). Для 1С такой сканер выглядит как человек, который очень быстро вводит цифры штрих-кода. Проблема в том, что программе нужно «понять», когда ввод закончился и когда нужно начинать поиск товара в базе.

Выясним причину, по которой 1С не реагирует автоматически:

  1. Сканер не передает управляющий символ в конце кода (суффикс).
  2. Сканер подключен просто как клавиатура, а не через специализированный драйвер 1С.
  3. В настройках торгового оборудования не указаны параметры перехвата событий.

Решение 1: Настройка суффикса (для режима клавиатуры)

Если вы используете сканер «в разрыве клавиатуры», нам нужно заставить его самостоятельно «нажимать» клавишу Enter после каждого сканирования. В технической документации это называется добавлением суффикса возврата каретки (CR).

Рассмотрим по шагам, как это сделать:

  1. Найдем инструкцию (так называемую «мурзилку») к вашей модели сканера.
  2. Найдем раздел "Programming Barcodes" или "Suffix Configuration".
  3. Сначала необходимо считать штрих-код начала программирования (обычно Start Configuration).
  4. Затем считываем штрих-код, отвечающий за добавление суффикса CR (ASCII код 13) или LF (код 10). В некоторых моделях это один штрих-код под названием "Add Enter Suffix".
  5. Считываем штрих-код завершения программирования (End Configuration).

После этого, если вы откроете обычный блокнот и сканируете товар, курсор должен автоматически перепрыгнуть на новую строку. Это верный признак того, что 1С теперь сможет «увидеть» завершение ввода и закрыть окно поиска товара самостоятельно.

Решение 2: Перевод сканера в режим эмуляции COM-порта (Virtual COM)

Это наиболее правильный и профессиональный метод интеграции. В этом режиме сканер не «печатает» цифры в активное поле, а посылает сигнал напрямую в драйвер 1С. Программе становится неважно, где находится курсор и открыто ли окно ввода — как только луч считал код, срабатывает процедура ОбработкаВнешнегоСобытия.

Посмотрим на алгоритм настройки:

  1. Переведем сканер в режим Virtual COM Port с помощью специального сервисного штрих-кода из инструкции.
  2. Установим в операционной системе драйвер виртуального COM-порта от производителя вашего оборудования (Honeywell, Zebra/Symbol, Datalogic и т.д.).
  3. В диспетчере устройств Windows проверим, какой номер порта (например, COM3) был присвоен устройству.
  4. В 1С перейдем в раздел "Администрирование" — "Подключаемое оборудование".
  5. Создадим новый экземпляр оборудования с типом "Сканеры штрихкода".
  6. В настройках выберем драйвер (лучше использовать стандартный 1С:Сканеры штрихкода) и укажем наш COM3.

Преимущество этого метода в том, что 1С мгновенно получает готовый код и сразу запускает алгоритм поиска номенклатуры без лишних экранных форм.

Решение 3: Программная логика обработки события

Для программистов важно понимать, как 1С обрабатывает эти данные «под капотом». Если используется режим COM-порта или настроенный драйвер, система генерирует внешнее событие. Рассмотрим пример кода, который обычно отвечает за это в форме документа или РМК:


Процедура ВнешнееСобытие(Источник, Событие, Данные)
    Если Событие = "Barcode" Тогда
        Штрихкод = СокрЛП(Данные);
        // Вызываем функцию поиска товара и добавления в ТЧ
        ОбработатьШтрихкод(Штрихкод);
    КонецЕсли;
КонецПроцедуры

Если же вы вынуждены работать через «мини-форму» ввода (как упоминалось в сообщении 17 форума), можно реализовать автоматическое закрытие этой формы. Для этого в свойствах поля ввода штрих-кода установите флаг "Автоматический выбор незаполненного" или используйте обработчик изменения текста, который будет проверять длину введенной строки и программно нажимать кнопку ОК.

Важные нюансы работы с современными формами

Разберем ситуацию с современными конфигурациями на платформе 8.3. В управляемых формах работа со сканером строится на механизме оповещений. Убедитесь, что в форме документа включено свойство ИспользоватьСканерШтрихкода.

Посмотрим на типичные ошибки:

  1. Таймаут: Если сканер настроен как клавиатура, но передает символы слишком медленно, 1С может «разрезать» один штрих-код на два. В настройках драйвера в 1С увеличьте параметр "Таймаут" до 50–100 мс.
  2. Префиксы: Иногда сканер передает лишние символы в начале (например, символ ~). Проверьте в тесте устройства в 1С, что именно приходит от сканера. Если есть лишние знаки, их нужно либо отсечь в настройках драйвера, либо перепрограммировать сканер.
  3. Чувствительность к регистру: В режиме клавиатуры важно, какая раскладка включена у кассира (RU/EN). Режим Virtual COM лишен этого недостатка, поэтому он всегда предпочтительнее.

Проанализировав все способы, мы рекомендуем следующий порядок действий: сначала попробуйте перевести сканер в режим COM-порта. Если это невозможно (дешевые модели без поддержки CDC), настройте суффикс Enter и убедитесь, что в 1С выбрано устройство "1С:Сканеры штрихкода (NativeApi)". Это обеспечит ту самую скорость работы, которую мы видим в супермаркетах.

← На главную