При разработке внешних обработок или доработке типовых форм обычного приложения разработчики часто сталкиваются с ситуацией, когда сканер штрихкодов успешно проходит тестирование в настройках торгового оборудования, однако при сканировании в самой форме процедура ВнешнееСобытие не вызывается. Проанализируем, почему возникает эта проблема и как правильно настроить обработку данных от сканера.
Для подключения торгового оборудования в обычных формах традиционно используется Сервер торгового оборудования. В модуле формы прописывается подключение клиента при открытии и отключение при закрытии:
Процедура ПриОткрытии()
ПолучитьСерверТО().ПодключитьКлиента(ЭтаФорма);
КонецПроцедуры
Процедура ПриЗакрытии()
ПолучитьСерверТО().ОтключитьКлиента(ЭтаФорма);
КонецПроцедуры
Функция ПоддерживаетсяВидТО(Вид) Экспорт
Результат = Ложь;
Если Вид = Перечисления.ВидыТорговогоОборудования.СканерШтрихКода Тогда
Результат = Истина;
КонецЕсли;
Возврат Результат;
КонецФункции
Ожидается, что при считывании штрихкода платформа автоматически вызовет процедуру ВнешнееСобытие(Источник, Событие, Данные). Если этого не происходит, разберем основные причины и способы их устранения.
Простое добавление процедуры Процедура ВнешнееСобытие(Источник, Событие, Данные) в модуль формы вручную или путем копирования из другого объекта не связывает её с событием формы автоматически.
Для решения этой проблемы выполним следующие шаги:
ВнешнееСобытие. Если поле пустое, выберем процедуру из выпадающего списка.Если сканер подключен по USB и работает в режиме эмуляции клавиатуры (USB-HID), он отправляет считанные символы напрямую в активное поле ввода так же, как если бы пользователь напечатал их на клавиатуре. При таком режиме платформа 1С не получает системного сигнала от драйвера и не генерирует ВнешнееСобытие.
Рассмотрим два основных варианта работы со сканером в зависимости от требуемого режима:
Чтобы платформа 1С генерировала ВнешнееСобытие при считывании, сканер должен передавать данные через последовательный порт.
CR с кодом ASCII 13) в настройках драйвера в 1С.Если нет возможности перевести сканер в режим COM-порта, можно настроить работу через эмуляцию нажатия клавиш. В типовых конфигурациях на обычных формах (например, УТ 10.3, КА 1.1) предусмотрен стандартный механизм диалогового ввода штрихкода по клавише F7.
Проанализируем еще несколько нюансов, о которых важно помнить при настройке: