Настройка торгового оборудования, особенно сканеров штрихкодов, часто вызывает вопросы у разработчиков, работающих с управляемыми формами и тонким клиентом. Давайте разберем по шагам, как правильно подключить USB-сканер, чтобы 1С корректно реагировала на сканирование и вызывала событие ВнешнееСобытие.
Прежде всего, выясним, в каком режиме работает ваш сканер. Большинство USB-сканеров по умолчанию настроены в режим «в разрыв клавиатуры» (HID). В этом случае сканер имитирует нажатие клавиш на клавиатуре, и данные попадают в любое активное поле ввода (например, в блокнот или обычное поле ввода 1С).
Для корректной работы через драйвер в 1С крайне важно, чтобы сканер присылал суффикс — специальный символ, сообщающий системе, что передача данных завершена. Обычно это символ «Возврат каретки» (Enter), который в кодах ASCII соответствует числу 13.
Распространенная ошибка заключается в попытке задать сканеру параметры COM-порта (скорость обмена, биты данных), когда он работает как клавиатурное устройство. Эти параметры для HID-сканеров не актуальны. Кроме того, важно правильно инициализировать драйвер в тонком клиенте.
Рассмотрим пример правильной инициализации сканера в модуле управляемого приложения:
Перем Сканер Экспорт;
Процедура ПриНачалеРаботыСистемы() Экспорт
Попытка
ProgID = "AddIn.Scaner45";
ПодключитьВнешнююКомпоненту(ProgID);
Сканер = Новый(ProgID);
// Настройка параметров устройства
Сканер.НомерПорта = 100;
Сканер.Суффикс = Символ(13); // Передача суффикса как символа, а не строки!
Сканер.Чувствительность = 30;
Сканер.УстройствоВключено = 1;
Сканер.OldVersion = 1;
Исключение
Сообщить("Обнаружены неполадки с драйвером сканера!");
КонецПопытки;
КонецПроцедуры
Одной из ключевых причин, почему ВнешнееСобытие игнорировалось системой, является тип данных, передаваемых в свойство Суффикс. Многие разработчики передают строку "#13", однако для корректной обработки драйвером необходимо передавать именно символ. Использование функции Символ(13) решает эту проблему.
Также обратите внимание на следующие важные моменты:
Scaner1C.dll зарегистрирована в системе с помощью утилиты regsvr32, если вы используете старые драйверы.ВнешнееСобытие.Хотя подход с использованием AddIn.Scaner45 работает, он считается устаревшим. В современной разработке на платформе 1С рекомендуется использовать:
regsvr32.Используя эти методы, вы сможете настроить стабильную работу сканера штрихкодов в вашей самописной конфигурации, избежав типичных ошибок инициализации и потери данных.