При подключении торгового оборудования, особенно бюджетных китайских моделей вроде Afanda (Alanda) CT007x, специалисты часто сталкиваются с ситуацией, когда сканер корректно передает данные в блокнот или текстовые поля 1С, но категорически отказывается генерировать ВнешнееСобытие. Это делает невозможным автоматизацию процесса подбора товаров, так как системе приходится постоянно "ожидать" фокуса в конкретном поле или нажатия клавиши F7. Рассмотрим детально, почему это происходит и как заставить такое устройство работать корректно.
Проанализируем техническую сторону вопроса. Большинство недорогих сканеров по умолчанию работают в режиме HID (Human Interface Device), то есть определяются системой как обычная клавиатура. Когда вы сканируете штрихкод, устройство просто "набивает" символы с очень высокой скоростью. Для 1С это выглядит как обычный ввод пользователя.
Для того чтобы сработало ВнешнееСобытие, драйвер 1С должен "перехватить" этот поток данных. Это происходит в двух случаях:
У модели Afanda CT007x часто отсутствует полноценная поддержка эмуляции COM-порта, поэтому наш основной путь — настройка работы через суффиксы в режиме клавиатуры.
Выясним причину, по которой драйвер "не видит" сканер. Без настроенного суффикса драйвер 1С (особенно NativeApi) не понимает, когда заканчивается штрихкод, и не инициирует событие. Нам необходимо убедиться, что сканер после каждого штрихкода посылает символ CR (код 13, Enter).
Рассмотрим порядок действий по настройке самого устройства:
Теперь перейдем к настройке программной части в 1С (на примере конфигураций на обычных формах, таких как Альфа-Авто 5.1). Разберем по шагам:
13 (в некоторых драйверах выбирается из списка как 'CR' или '#13').Часто программисты жалуются, что точка останова в процедуре ВнешнееСобытие не срабатывает. Выясним причину: это может быть особенностью платформы 1С при работе с торговым оборудованием в режиме отладки. Рассмотрим, как проверить работоспособность без отладчика.
Вместо точки останова используйте запись в журнал регистрации или вывод сообщения пользователю. Модифицируем код в форме или в модуле обычного приложения:
Процедура ВнешнееСобытие(Источник, Событие, Данные)
// Сообщим для проверки, что событие дошло до формы
Сообщить("Событие получено! Источник: " + Источник + ", Данные: " + Данные);
// Стандартная обработка
Если ПолучитьСерверТО().ЭтоСобытиеСканераШтрихкода(Источник, Событие, Данные) Тогда
// Ваш код обработки штрихкода
КонецЕсли;
КонецПроцедуры
Если сообщение появляется, значит, оборудование настроено верно, и проблему нужно искать в логике обработки данных (например, неверный префикс или длина кода).
Проанализируем специфику решения от Рарус. В Альфа-Авто используется своя подсистема управления оборудованием. Рассмотрим важные нюансы:
Если после всех манипуляций с суффиксами внешнее событие так и не вызывается, рассмотрим альтернативные варианты:
Ports (COM & LPT), считайте, что вам повезло. Настройка через COM-порт в 1С работает гораздо стабильнее и не зависит от раскладки клавиатуры.Подведем итог: работа со сканером в режиме клавиатуры требует обязательной настройки суффикса возврата каретки (CR) как на самом устройстве, так и в настройках драйвера 1С. Без этого символа драйвер не может определить момент окончания передачи данных и не инициирует программное событие в конфигурации.