Почему не срабатывает ВнешнееСобытие при сканировании штрихкода в УТ 11.4?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

При переходе на современные конфигурации, такие как УТ 11.4, многие разработчики сталкиваются с тем, что привычный код для обработки сканера перестает работать, а интерфейсы требуют адаптации (например, часто требуется отключение помощника регистрации нового партнера). Если вы столкнулись с тем, что отладчик не останавливается в процедуре ВнешнееСобытие, давайте разберемся, почему это происходит и как правильно настроить работу с торговым оборудованием в управляемых формах.

Разберемся с архитектурой БПО

Основная причина заключается в переходе на Библиотеку подключаемого оборудования (БПО), которая также позволяет настроить уведомления в Систему взаимодействия о различных событиях. В старых конфигурациях 1С сканер «слал» сообщение в систему, и любая форма могла его перехватить (подобно тому, как легко можно было осуществить возврат выполненной задачи в работу). В современной УТ 11.4 система работает иначе: форма должна «подписаться» на получение данных от конкретного устройства через МенеджерОборудованияКлиент.

Если вы просто добавили процедуру ВнешнееСобытие, но не выполнили процедуру инициализации при открытии формы, система просто не направит событие от сканера в вашу форму. Это критично для документов, где важна визуализация статусов, например, когда видна колонка "Отгружено" в заказе клиента.

Пошаговая настройка обработки сканирования

Чтобы сканер заработал, необходимо выполнить регистрацию формы в БПО. Рассмотрим необходимые действия.

  1. Добавление обязательных реквизитов формы: В управляемой форме должны присутствовать два реквизита:
    • ИспользоватьПодключаемоеОборудование (тип Булево)
    • ПоддерживаемыеТипыПодключаемогоОборудования (тип Строка)
  2. Подключение оборудования при открытии: В процедуре ПриОткрытии необходимо вызвать метод регистрации формы.

Рассмотрим пример правильного программного кода для подключения:


&НаКлиенте
Процедура ПриОткрытии(Отказ)
    // Подключаем форму к БПО
    МенеджерОборудованияКлиент.НачатьПодключениеОборудованиеПриОткрытииФормы(Неопределено, ЭтотОбъект, "СканерШтрихкода");
КонецПроцедуры

&НаКлиенте
Процедура ПриЗакрытии()
    // Корректно отключаем оборудование
    МенеджерОборудованияКлиент.НачатьОтключениеОборудованиеПриЗакрытииФормы(Неопределено, ЭтотОбъект);
КонецПроцедуры

Как правильно обработать событие сканирования

После того как оборудование подключено, данные будут поступать в процедуру ОбработкаОповещения (или ВнешнееСобытие, в зависимости от реализации БПО в конкретной версии). Рекомендуется использовать ОбработкаОповещения, так как она является стандартом для взаимодействия с БПО в управляемом интерфейсе.


&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
    Если Источник = "ПодключаемоеОборудование" И ВводДоступен Тогда
        Если ИмяСобытия = "ScanData" Тогда
            // Преобразуем данные из параметров
            Если Параметр[1] = Неопределено Тогда
                Штрихкод = Параметр[0];
            Иначе
                Штрихкод = Параметр[1][1];
            КонецЕсли;
            
            // Вызываем вашу логику обработки ШК
            ОбработатьШтрихкод(Штрихкод);
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

Что делать, если отладчик все равно молчит?

Если после внедрения этого кода отладчик все равно не срабатывает, обратите внимание на следующие моменты:

Проанализировав эти шаги, вы сможете успешно интегрировать сканер штрихкода в любую форму вашей конфигурации УТ 11.4, следуя стандартам фирмы 1С.

← На главную