Имя: Пароль:
1C
1С v8
Сканер штрихкода сканирует только 1 раз
0 degot
 
10.04.17
10:10
Всем привет! Есть самописная конфигурация и есть сканер honeywell mk3580 quantum подключенный в режиме эмуляции COM. В модуле приложения такой код:


Функция ПриНачалеРаботыСистемы()
    
    
    
    Если Пользователи.ТребуетсяПодключениеСканераШтрихКодов()   Тогда
        глСканерШК = ПодключитьСканерШК();    
    Иначе    
        глСканерШК = Неопределено;
    КонецЕсли;
        
КонецФункции


Функция ПриЗавершенииРаботыСистемы()
    
    Если глСканерШК <> Неопределено Тогда
        ОтключитьСканерШК();
    КонецЕсли;
    
КонецФункции


Функция ПодключитьСканерШК() Экспорт
    
    Перем  barcodeScanner;
    Попытка
        #Если ВебКлиент Тогда
            УстановитьВнешнююКомпоненту("ОбщийМакет.СканерШтрихкода");
             ПодключитьВнешнююКомпоненту("ОбщийМакет.СканерШтрихкода", "AddIn.Scanner");
        #Иначе
            ПодключитьВнешнююКомпоненту("AddIn.Scanner");
        #КонецЕсли
        barcodeScanner = new("AddIn.Scanner");        
        barcodeScanner.Open("СканерШК");
        barcodeScanner.EventName="BarCodeValue";
        
        
        barcodeScanner.БитДанных  = 8;
        barcodeScanner.Порт       = 3;
        barcodeScanner.Скорость   = 9600;
        
        barcodeScanner.ClearInput();
        barcodeScanner.ClearOutput();
        barcodeScanner.AutoDisable       = 0;  
        barcodeScanner.DataEventEnabled  = 1;  
        barcodeScanner.DeviceEnabled     = 1;
        barcodeScanner.FreezeEvents      = 0;          
        barcodeScanner.Claim(1);        
    Исключение
        Message(ОписаниеОшибки());
    КонецПопытки;
    
    Возврат barcodeScanner;
    
КонецФункции


Процедура ОтключитьСканерШК() Экспорт
                           
    глСканерШК.ClearInput();
    глСканерШК.ClearOutput();
    глСканерШК.DeviceEnabled = 0;
    глСканерШК.Release();
    глСканерШК.Close();    
    
КонецПроцедуры


При первом запуске 1с все работает как надо. Если закрыть 1с и заново открыть, то сканирует только 1 раз, потом внешнее событие не срабатывает. Помогает только перезагрузка компа. В чем может быть дело?
1 LienXo
 
10.04.17
10:18
Процедуру обработкавнешнегособытия покажи
2 degot
 
10.04.17
10:30
(1) Глобальной нету, в модуле формы что-то типа

&НаКлиенте
Процедура ВнешнееСобытие(Источник, Событие, Данные)
    
    Если Событие = "BarCodeValue" Тогда
        
        Результат = РаботаСоШтрихкодами.ПолучитьСсылкуНаОбъектПоШтрихкоду(Данные);
        
        Если ТипЗнч(Результат) = Тип("СправочникСсылка.Сотрудники") Тогда
            ТекущийСотрудник = Результат;
            ЗаполнитьДокументыВРаботе();
        Иначе
            ТекущийСотрудник = Неопределено;
            Информация       = "Не удалось идентифицировать штрихкод";
            Объект.ДокументыВРаботе.Очистить();
        КонецЕсли;
        
    КонецЕсли;
    
КонецПроцедуры
3 degot
 
10.04.17
11:10
ап
4 LienXo
 
10.04.17
11:19
Если не ошибаюсь, после отработки необходимо очистить вход сканера. Что то типа
     barcodeScanner.ClearInput();
     barcodeScanner.ClearOutput();
5 Широкий
 
10.04.17
11:34
(4) Да. да. Надо вызвать функцию очистки очереди
6 LienXo
 
10.04.17
12:07
+(4) добрался до рабочего компа. В типовой УТ 10 вроде так

Объект.Драйвер.ПосылкаДанных = 0;