Как настроить сканер штрихкодов в 1С:Предприятие на тонком клиенте?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Настройка торгового оборудования, особенно сканеров штрихкодов, часто вызывает вопросы у разработчиков, работающих с управляемыми формами и тонким клиентом. Давайте разберем по шагам, как правильно подключить USB-сканер, чтобы 1С корректно реагировала на сканирование и вызывала событие ВнешнееСобытие.

Понимание режима работы сканера

Прежде всего, выясним, в каком режиме работает ваш сканер. Большинство USB-сканеров по умолчанию настроены в режим «в разрыв клавиатуры» (HID). В этом случае сканер имитирует нажатие клавиш на клавиатуре, и данные попадают в любое активное поле ввода (например, в блокнот или обычное поле ввода 1С).

Для корректной работы через драйвер в 1С крайне важно, чтобы сканер присылал суффикс — специальный символ, сообщающий системе, что передача данных завершена. Обычно это символ «Возврат каретки» (Enter), который в кодах ASCII соответствует числу 13.

Решение проблемы с подключением драйвера

Распространенная ошибка заключается в попытке задать сканеру параметры COM-порта (скорость обмена, биты данных), когда он работает как клавиатурное устройство. Эти параметры для HID-сканеров не актуальны. Кроме того, важно правильно инициализировать драйвер в тонком клиенте.

Рассмотрим пример правильной инициализации сканера в модуле управляемого приложения:


Перем Сканер Экспорт;

Процедура ПриНачалеРаботыСистемы() Экспорт
    Попытка
        ProgID = "AddIn.Scaner45"; 
        ПодключитьВнешнююКомпоненту(ProgID); 
        Сканер = Новый(ProgID);
        
        // Настройка параметров устройства
        Сканер.НомерПорта = 100;
        Сканер.Суффикс = Символ(13); // Передача суффикса как символа, а не строки!
        Сканер.Чувствительность = 30;
        Сканер.УстройствоВключено = 1;
        Сканер.OldVersion = 1;
    Исключение
        Сообщить("Обнаружены неполадки с драйвером сканера!");
    КонецПопытки;
КонецПроцедуры

Почему не вызывалось ВнешнееСобытие?

Одной из ключевых причин, почему ВнешнееСобытие игнорировалось системой, является тип данных, передаваемых в свойство Суффикс. Многие разработчики передают строку "#13", однако для корректной обработки драйвером необходимо передавать именно символ. Использование функции Символ(13) решает эту проблему.

Также обратите внимание на следующие важные моменты:

  1. Регистрация DLL: Убедитесь, что Scaner1C.dll зарегистрирована в системе с помощью утилиты regsvr32, если вы используете старые драйверы.
  2. Привязка обработчика: Проверьте, что в свойствах формы, где вы ожидаете сканирование, привязан обработчик события ВнешнееСобытие.
  3. Эмуляция COM: Если вам нужно, чтобы сканер перехватывался исключительно 1С и не «печатал» текст в другие приложения, рекомендуется перевести сканер в режим эмуляции COM-порта с помощью специального штрихкода из инструкции к вашему устройству.

Рекомендации по современной разработке

Хотя подход с использованием AddIn.Scaner45 работает, он считается устаревшим. В современной разработке на платформе 1С рекомендуется использовать:

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

← На главную