При автоматизации складских процессов в конфигурациях 1С:ERP Управление предприятием и 1С:Комплексная автоматизация часто возникает ситуация: подключенный сканер штрихкодов или терминал сбора данных (ТСД) корректно работает во всех складских документах (срабатывает внешнее событие платформы, строки подбираются автоматически), однако в специализированном интерфейсе «Рабочее место работника склада» сканер функционирует исключительно как клавиатура. В результате кладовщику приходится перед каждым сканированием вручную нажимать кнопку (например, клавишу «4») для вызова диалога ввода штрихкода.
Разберем детально, почему так происходит, проанализируем типовой код конфигурации и рассмотрим надежные способы устранения этой проблемы.
Выясним причину такого поведения. Для интеграции торгового оборудования в типовых решениях используется подсистема Библиотека подключаемого оборудования (БПО). Механизм БПО разделен на клиентскую и серверную логику:
ИспользоватьПодключаемоеОборудование.Истина, драйвер захватывает устройство и начинает передавать данные через внешние события формы (ВнешнееСобытие / ОбработкаОповещения).В модуле формы рабочего места работника склада задействована процедура подключения:
Процедура НачатьПодключениеОборудованиеПриОткрытииФормы(ОповещениеПриПодключении, Форма, ПоддерживаемыеТипыПодключаемогоОборудования) Экспорт
Форма.ПоддерживаемыеТипыПодключаемогоОборудования = ПоддерживаемыеТипыПодключаемогоОборудования;
Если Форма.ИспользоватьПодключаемоеОборудование Тогда
Если ОповещениеПриПодключении = Неопределено Тогда
ОповещениеПриПодключении = Новый ОписаниеОповещения("ПодключитьОборудованиеЗавершениеПоУмолчанию", МенеджерОборудованияКлиент);
КонецЕсли;
НачатьПодключениеОборудованиеПоТипу(ОповещениеПриПодключении, Форма.УникальныйИдентификатор,
ПреобразоватьСписокСтрокойВМассив(Форма.ПоддерживаемыеТипыПодключаемогоОборудования));
КонецЕсли;
КонецПроцедуры
В некоторых релизах конфигураций (в частности, линейки 2.2) в форме рабочего места работника склада разработчиками была допущена ошибка: на сервере в обработчике ПриСозданииНаСервере вызов инициализации подсистемы БПО отсутствовал. Вследствие этого реквизит Форма.ИспользоватьПодключаемоеОборудование всегда оставался в значении Ложь, ветка подключения оборудования пропускалась, и драйвер не переводился в режим перехвата событий.
Рассмотрим, как аккуратно устранить ошибку без снятия конфигурации с поддержки с помощью расширения.
ПриСозданииНаСервере с директивой &После:
&После("ПриСозданииНаСервере")
Процедура Расш1_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
// Инициализируем подсистему БПО для формы
ОбщегоНазначенияУТ.НастроитьПодключаемоеОборудование(ЭтаФорма);
// Либо явно включаем использование оборудования при включенной функциональной опции:
// ЭтаФорма.ИспользоватьПодключаемоеОборудование = Истина;
КонецПроцедуры
Обратите внимание: при закрытии формы сканер должен корректно освобождаться для других окон и документов системы. Убедимся, что в обработчике ПриЗакрытии формы присутствует вызов метода МенеджерОборудованияКлиент.НачатьОтключениеОборудованиеПриЗакрытииФормы.
Если используется устаревшая редакция программы (ERP 2.2), наиболее системным решением будет плановое обновление конфигурации до актуальных релизов ERP 2.4 или 2.5. В обновленных версиях логика работы складских и мобильных рабочих мест переведена на единые шаблоны БПО, где эта ошибка полностью устранена.
Проанализируем особенности подключения сканеров в режиме разрыва клавиатуры (NativeAPI) при работе в терминальной сессии:
МенеджерОборудованияКлиент. Если подключение не состоялось, поток нажатий клавиш попадает напрямую в активное текстовое поле Windows, что требует постоянной установки фокуса ввода.Если терминальный доступ через RDP вызывает сложности со стабильностью сканирования, рассмотрим следующие варианты оптимизации рабочего места: