При переходе на современные конфигурации, такие как УТ 11.4, многие разработчики сталкиваются с тем, что привычный код для обработки сканера перестает работать, а интерфейсы требуют адаптации (например, часто требуется отключение помощника регистрации нового партнера). Если вы столкнулись с тем, что отладчик не останавливается в процедуре ВнешнееСобытие, давайте разберемся, почему это происходит и как правильно настроить работу с торговым оборудованием в управляемых формах.
Основная причина заключается в переходе на Библиотеку подключаемого оборудования (БПО), которая также позволяет настроить уведомления в Систему взаимодействия о различных событиях. В старых конфигурациях 1С сканер «слал» сообщение в систему, и любая форма могла его перехватить (подобно тому, как легко можно было осуществить возврат выполненной задачи в работу). В современной УТ 11.4 система работает иначе: форма должна «подписаться» на получение данных от конкретного устройства через МенеджерОборудованияКлиент.
Если вы просто добавили процедуру ВнешнееСобытие, но не выполнили процедуру инициализации при открытии формы, система просто не направит событие от сканера в вашу форму. Это критично для документов, где важна визуализация статусов, например, когда видна колонка "Отгружено" в заказе клиента.
Чтобы сканер заработал, необходимо выполнить регистрацию формы в БПО. Рассмотрим необходимые действия.
ИспользоватьПодключаемоеОборудование (тип Булево)ПоддерживаемыеТипыПодключаемогоОборудования (тип Строка)ПриОткрытии необходимо вызвать метод регистрации формы.Рассмотрим пример правильного программного кода для подключения:
&НаКлиенте
Процедура ПриОткрытии(Отказ)
// Подключаем форму к БПО
МенеджерОборудованияКлиент.НачатьПодключениеОборудованиеПриОткрытииФормы(Неопределено, ЭтотОбъект, "СканерШтрихкода");
КонецПроцедуры
&НаКлиенте
Процедура ПриЗакрытии()
// Корректно отключаем оборудование
МенеджерОборудованияКлиент.НачатьОтключениеОборудованиеПриЗакрытииФормы(Неопределено, ЭтотОбъект);
КонецПроцедуры
После того как оборудование подключено, данные будут поступать в процедуру ОбработкаОповещения (или ВнешнееСобытие, в зависимости от реализации БПО в конкретной версии). Рекомендуется использовать ОбработкаОповещения, так как она является стандартом для взаимодействия с БПО в управляемом интерфейсе.
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если Источник = "ПодключаемоеОборудование" И ВводДоступен Тогда
Если ИмяСобытия = "ScanData" Тогда
// Преобразуем данные из параметров
Если Параметр[1] = Неопределено Тогда
Штрихкод = Параметр[0];
Иначе
Штрихкод = Параметр[1][1];
КонецЕсли;
// Вызываем вашу логику обработки ШК
ОбработатьШтрихкод(Штрихкод);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Если после внедрения этого кода отладчик все равно не срабатывает, обратите внимание на следующие моменты:
ScanData не генерируется. Убедитесь, что сканер настроен в режим COM-эмуляции и прописан в справочнике Подключаемое оборудование.Администрирование -> Подключаемое оборудование. Нажмите кнопку Тест устройства для вашего сканера. Если тест не проходит, значит, драйвер не установлен или не настроен на текущем рабочем месте.ВводДоступен в коде выше).Проанализировав эти шаги, вы сможете успешно интегрировать сканер штрихкода в любую форму вашей конфигурации УТ 11.4, следуя стандартам фирмы 1С.