Решение задач 1С:Предприятие 8 на примерах

Как настроить сканер штрихкода и подключить его к произвольной форме в УТ 11.3

УТ 11.3Опубликовано Обновлено

Сначала сканер подключается и проверяется в настройках подключаемого оборудования, затем его события нужно принять на нужной форме. Ниже — обе части: настройка драйвера и код модуля формы, который получает штрихкод.

Настройка сканера и код для формы

Сначала покажу, как подключить и настроить сканер штрихкода через стандартный драйвер от 1С. Необходимо в разделе "НСИ и администрирование" выбрать пункт "РМК и оборудование". В открывшейся форме устанавливаем галку на "Использовать подключаемое оборудование" и жмём на пункт "Подключаемое оборудование":
Раздел «РМК и оборудование» с флажком «Использовать подключаемое оборудование» в УТ 11.3
Откроется форма, в которой слева в списке всех типов оборудования выбираем "Сканеры штрихкода", и создаем новый экземпляр нажатием на кнопку "Создать":

В открывшейся форме в поле драйвер оборудования выбираем "1С:Сканеры штрихкода (COM)" или "1С:Сканеры штрихкода (NativeApi)". Проследим, чтобы была установлена галка "Устройство используется", и сохраняем без закрытия данной формы:

После сохранения становится доступной кнопка "Настроить", куда мы и заходим. Откроется форма настройки сканера, на которой жмём в первую очередь на "Установить драйвер", после чего должно выйти сообщение об успешной установке внешней компоненты:

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

В процедуре ПриОткрытии добавляем:

ПоддерживаемыеТипыВО = Новый Массив();
ПоддерживаемыеТипыВО.Добавить("СканерШтрихкода");
ОповещенияПриПодключении = Новый ОписаниеОповещения("ПодключитьОборудованиеЗавершение", ЭтотОбъект);
МенеджерОборудованияКлиент.НачатьПодключениеОборудованиеПоТипу(ОповещенияПриПодключении, УникальныйИдентификатор, ПоддерживаемыеТипыВО);

В процедуре ПриЗакрытии добавляем:

ПоддерживаемыеТипыВО = Новый Массив();
ПоддерживаемыеТипыВО.Добавить("СканерШтрихкода");
ОповещенияПриПодключении = Новый ОписаниеОповещения("ОтключитьОборудованиеЗавершение", ЭтотОбъект);
МенеджерОборудованияКлиент.НачатьОтключениеОборудованиеПоТипу(ОповещенияПриПодключении, УникальныйИдентификатор, ПоддерживаемыеТипыВО);

В процедуре ОбработкаОповещения добавляем:

Если Источник = "ПодключаемоеОборудование" И ВводДоступен() Тогда
    Если ИмяСобытия = "ScanData" И МенеджерОборудованияКлиентПереопределяемый.ЕстьНеобработанноеСобытие() Тогда
        ОбработатьШтрихкоды(ПодключаемоеОборудованиеУТКлиент.ПреобразоватьДанныеСоСканераВМассив(Параметр));
    КонецЕсли;
КонецЕсли;

Теперь добавляем процедуры, которые вызывались из вышеуказанных обработчиков событий:

&НаКлиенте
Процедура ПодключитьОборудованиеЗавершение(РезультатВыполнения, Параметры) Экспорт
    Если Не РезультатВыполнения.Результат Тогда
        ТекстСообщения = НСтр( "ru = 'При подключении оборудования произошла ошибка:""%ОписаниеОшибки%"".'");
        ТекстСообщения = СтрЗаменить(ТекстСообщения, "%ОписаниеОшибки%" , РезультатВыполнения.ОписаниеОшибки);
        Сообщить(ТекстСообщения);
    КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОтключитьОборудованиеЗавершение(РезультатВыполнения, Параметры) Экспорт
    Если Не РезультатВыполнения.Результат Тогда
        ТекстСообщения = НСтр( "ru = 'При отключении оборудования произошла ошибка: ""%ОписаниеОшибки%"".'");
        ТекстСообщения = СтрЗаменить(ТекстСообщения, "%ОписаниеОшибки%" , РезультатВыполнения.ОписаниеОшибки);
        Сообщить(ТекстСообщения);
    КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ОбработатьШтрихкоды(ДанныеШтрихкода)
    Штрихкод = ДанныеШтрихкода[0].Штрихкод;
    Сообщить(Штрихкод);   
КонецПроцедуры

В процедуре ОбработатьШтрихкоды мы получаем отсканированный штрихкод и делаем уже с ним всё что необходимо по той или иной задаче. В моем примере я просто вывожу его через сообщение пользователю.

Актуальность для новых версий

Принцип в новых версиях тот же: сканер подключается при открытии формы, отключается при закрытии, а данные приходят в ОбработкаОповещения с событием ScanData. Для драйвера лучше выбирать вариант NativeApi. Имена процедур библиотеки подключаемого оборудования менялись между её версиями, поэтому вызовы МенеджерОборудованияКлиент удобно сверить с типовой формой вашей конфигурации, где сканер уже работает, например с документом поступления товаров.

Частые вопросы

Какой порт указывать для USB-сканера?

Для сканера в режиме эмуляции клавиатуры выберите порт «Клавиатура» — этого достаточно для нормальной работы.

Почему штрихкод не приходит на мою форму?

Проверьте, что оборудование подключается в ПриОткрытии с идентификатором формы, а в ОбработкаОповещения обрабатывается источник «ПодключаемоеОборудование» и событие ScanData.

Зачем отключать сканер при закрытии формы?

Иначе подключение остаётся закреплённым за закрытой формой, и другие формы могут не получать данные со сканера.

Как программно создать контрагента с партнёром и контактной информацией в УТ 11.3

УТ 11.3

Готовая функция для УТ 11.3, которая создаёт партнёра и контрагента, связывает их между собой и заполняет контактную информацию: телефон, email и адрес.

Не устанавливается новая роль для пользователя в УТ 11.3

УТ 11.3

Почему новая роль, добавленная в конфигурацию УТ 11.3, не применяется к пользователю через профиль групп доступа, и как это исправить, обновив параметры работы пользователей.

Ошибка «Не найден идентификатор в справочнике Идентификаторы объектов метаданных» в УТ 11.3

УТ 11.3

Что делать, если после добавления нового объекта в конфигурацию УТ 11.3 появляется ошибка «Не найден идентификатор». Решение — обновить справочник «Идентификаторы объектов метаданных» из внешней обработки.

Как создать нового пользователя в 1С УТ 11.3

УТ 11.3

Пошагово: как завести нового пользователя в УТ 11.3 и выдать ему права — через профиль групп доступа, группу доступа и справочник «Пользователи», без работы в конфигураторе.