|   |   | 
| 
 | Сканер штрихкода сканирует только 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; | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |