Подключение Сканера штрихкодов к не типовой обычные формы.

1. boggonzikov 343 15.05.24 11:17 Сейчас в теме
Подключение Сканера штрихкодов к не типовой обычные формы.
Подключение Сканера штрихкодов к не типовой обычные формы, использую компоненту Драйвер1СУстройстваВводаNative из БПО.
Решил запостить, не нашел рабочего решения.

// Подключает компоненту, выполненную по технологии Native API и COM асинхронном режиме.
// Компонента должна храниться в макете конфигурации в виде ZIP-архива.
//
Процедура ПодключитьКомпонентуДрайвер1СУстройстваВводаNativeИзМакета() Экспорт
    
    ПараметрыПодключения = Новый Структура;
    ПараметрыПодключения.Вставить("Идентификатор",  "InputDevice");
    ПараметрыПодключения.Вставить("ПолноеИмяМакета",  "ОбщийМакет.Драйвер1СУстройстваВводаNative");
    ПараметрыПодключения.Вставить("ИмяДрайвера",  "AddIn.InputDevice.InputDevice");
    ПараметрыПодключения.Вставить("ИДУстройства",  "");
    
    Параметры = Новый Структура;
    Параметры.Вставить("P_Port",    "0");
    Параметры.Вставить("P_Prefix",    -1);
    Параметры.Вставить("P_Suffix",    3338);
    Параметры.Вставить("P_OutputDataType",    0);
    Параметры.Вставить("P_GSSymbolKey",    7);
    Параметры.Вставить("P_Timeout",    35);
    Параметры.Вставить("P_DataBits",    8);
    Параметры.Вставить("P_StopBits",    0);
    Параметры.Вставить("P_Parity",    0);
    Параметры.Вставить("P_Speed",    9600);
    Параметры.Вставить("P_COMEncoding",    "UTF-8");
    Параметры.Вставить("P_LogType",    -1);
    Параметры.Вставить("P_LogFilePath",    "C:\temp\scan_opos.txt");
    ПараметрыПодключения.Вставить("Параметры", Параметры);    

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

    //параметры
    
    Для Каждого Параметр Из ПараметрыПодключения.Параметры Цикл
        Если Лев(Параметр.Ключ, 2) = "P_" Тогда
            ЗначениеПараметра = Параметр.Значение;
            ИмяПараметра = Сред(Параметр.Ключ, 3);
            ОбъектДрайвера.УстановитьПараметр(ИмяПараметра, ЗначениеПараметра) 
        КонецЕсли;
    КонецЦикла; 
    
    Попытка
        Ответ = ОбъектДрайвера.Подключить(ПараметрыПодключения.ИДУстройства);
    Исключение
        ОписаниеОшибки = СтрШаблон(НСтр("ru='Ошибка вызова метода <%1>.'"), "ОбъектДрайвера.Подключить");
        обСообщитьОбОшибке(ОписаниеОшибки);
        Возврат;
    КонецПопытки;
    
    глПодключаемоеОборудование.ДрайверыОборудования.Вставить(ПараметрыПодключения.Идентификатор, ОбъектДрайвера);
    
    НовоеПодключение = ПараметрыПодключенияУстройства(ПараметрыПодключения);
    НовоеПодключение.ИДУстройства = ПараметрыПодключения.ИДУстройства;
    НовоеПодключение.ИменаСобытий.Добавить("Штрихкод");
    НовоеПодключение.ИменаСобытий.Добавить("Barcode");
    НовоеПодключение.ИменаСобытий.Добавить("ШтрихкодBase64");
    НовоеПодключение.ИменаСобытий.Добавить("BarcodeBase64");
    
    глПодключаемоеОборудование.ПараметрыПодключенияПО.Добавить(НовоеПодключение);
    
КонецПроцедуры

// Параметры подключения устройства.
// 
// Параметры:
//  ДанныеУстройства - Неопределено, Произвольный, Структура - Данные устройства
// 
// Возвращаемое значение:
//  Структура - Параметры подключения:
//   * Наименование - Строка.
//   * ТипОборудования - ПеречислениеСсылка.ТипыПодключаемогоОборудования.
//   * ПодключениеИзМакета - Булево.
//   * ПодключениеЛокальноПоИдентификатору - Булево. 
//   * ИдентификаторОбъекта - СправочникСсылка.ПодключаемоеОборудование.
//   * ВерсияДрайвера - Строка.
//   * ИмяМакетаДрайвера - Строка.
//   * РевизияИнтерфейса - Строка.
//   * ШиринаСтроки - Строка.
//   * ПечатьКвитанцийНаТерминале - Булево. 
//   * КороткиеСлипЧеки - Булево.
//   * ВыдачиНаличныхДенежныхСредств - Булево. 
//   * ОплатаЭлектроннымиСертификатами - Булево.
//   * СтолбцовНаДисплее - Число.
//   * СтрокНаДисплее - Число. 
//   * ДисплейОтображаетТекст - Булево.
//   * ДисплейОтображаетГрафику - Булево.
//   * ДисплейОтображаетQRКод - Булево.
//   * ИдентификаторУстройства - УникальныйИдентификатор.
//   * ОбъектДрайвера - Неопределено -
//   * Параметры - Неопределено -
//   * ОбработчикДрайвера - Неопределено -
//   * Клиенты - Массив из СправочникСсылка.РабочиеМеста -
//   * Ссылка - СправочникСсылка.ПодключаемоеОборудование.
//   * СетевоеОборудование - Булево. 
//   * КоличествоПодключенных - Число -
//   * ИменаСобытий - Массив Из Строка -
//   * ИДУстройства - Строка.
//
Функция ПараметрыПодключенияУстройства(ДанныеУстройства) Экспорт
    
    //    Подключение = ПараметрыПодключения(ДанныеДрайвера);
    Подключение = Новый Структура;
    Подключение.Вставить("ОбъектДрайвера"    , Неопределено);
    Подключение.Вставить("Параметры"         , Неопределено);
    Подключение.Вставить("ОбработчикДрайвера", Неопределено);
    
    Подключение.Вставить("Клиенты", Новый Массив());
    //Подключение.Вставить("Ссылка"                  , ДанныеУстройства.Ссылка);
    Подключение.Вставить("Параметры"               , ДанныеУстройства.Параметры);
    //Подключение.Вставить("СетевоеОборудование"     , ДанныеУстройства.СетевоеОборудование);
    Подключение.Вставить("КоличествоПодключенных"  , 0);
    Подключение.Вставить("ИменаСобытий"            , Новый Массив());
    Подключение.Вставить("ИДУстройства"            , "");
    //#Если ВебКлиент Тогда
    //    Подключение.ОбработчикДрайвера = ПодключаемоеОборудованиеДрайверКлиент; 
    //#Иначе
    //    Подключение.ОбработчикДрайвера = ПодключаемоеОборудованиеДрайверСинхронноКлиент; 
    //#КонецЕсли
    
    //ПараметрыПодключенияДрайвера(ДанныеДрайвера)
    
    Возврат Подключение;
    
КонецФункции


Показать


Обязательна глобальная переменная в модуле приложения глПодключаемоеОборудование, без ее приложение просто закрывается, долго не мог понять почему.

// ПодключаемоеОборудование
Перем глПодключаемоеОборудование Экспорт; // Для кэширования на клиенте
// Конец ПодключаемоеОборудование


Затем обрабатываем событие ОбработкаВнешнегоСобытия в модуле приложения или формы.
По теме из базы знаний
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот