|   |   | 
| 
 | Подключение сканера штрихкода к самописке | ☑ | ||
|---|---|---|---|---|
| 0
    
        fatal_error 30.09.14✎ 08:05 | 
        Добрый день. Есть самописная конфа. Необходимо к документу прикрутить  сканер шк. В конфу засунул обработку для СШК. При открытии формы документа подключаю СШК в режиме клавиатуры
 Объект = Неопределено; Модель = "Сканер штрихкода (общий)"; Параметры = Новый Структура; Параметры.Вставить("БитДанных", 8); Параметры.Вставить("Порт", 0); // режим клавиатуры Параметры.Вставить("Префикс", ""); Параметры.Вставить("Скорость", 9600); Параметры.Вставить("СтопБит", 0); Параметры.Вставить("Суффикс", "#13"); Параметры.Вставить("Таймаут", 75); Параметры.Вставить("СовместимыеВерсии", Новый ТаблицаЗначений); Результат = Обработка.СоздатьОбъектДрайвера(Объект, Модель, Параметры); Если ЗначениеЗаполнено(Результат) Тогда Возврат; КонецЕсли; Результат = Обработка.Подключить(Объект); Если ЗначениеЗаполнено(Результат) Тогда Возврат; КонецЕсли; На форму повесил событии Внешнее событие, в которой ищу номенклатуру по штрихкоду и активизирую строку документа с такой номенклатурой. Если номенклатура найдена, то строка активизируется и тут же переходит на следующую строку, если не найдена, то просто переходит на следующую строку табличной части. Как убрать второй переход? Процедура ВнешнееСобытие(Источник, Событие, Данные) Если Не ВводДоступен() Тогда Возврат; КонецЕсли; Штрихкод = ""; НетОшибки = Перечисления.ТООшибкиОбщие.ПустаяСсылка(); Результат = Неопределено; Результат = Обработка.ОбработатьСобытиеСШК(Объект, Событие, Данные, Штрихкод, ПланыВидовХарактеристик.ТипыШтрихкодов.EAN13); Если Не Результат = НетОшибки Тогда Возврат; КонецЕсли; //Если Событие = "ПолученШтрихкод" Тогда // // Штрихкод = Данные; // Если Не ЗначениеЗаполнено(Штрихкод) Тогда // Возврат; // КонецЕсли; Запрос = Новый Запрос; Запрос.УстановитьПараметр("Штрихкод", Штрихкод); Запрос.Текст = "ВЫБРАТЬ | Штрихкоды.Номенклатура |ИЗ | РегистрСведений.Штрихкоды КАК Штрихкоды |ГДЕ | Штрихкоды.Штрихкод = &Штрихкод"; Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда Если ЗначениеЗаполнено(Выборка.Номенклатура) Тогда Парам = Новый Структура("Номенклатура", Выборка.Номенклатура); ст = Товары.НайтиСтроки(Парам); Если ст.Количество() > 0 Тогда ЭлементыФормы.Товары.ТекущаяСтрока = ст[0]; ЭлементыФормы.Товары.ТекущаяКолонка = ЭлементыФормы.Товары.Колонки.Количество; ЭтаФорма.ТекущийЭлемент = ЭлементыФормы.Товары; Возврат; Иначе Сообщить("В документе нет номенклатуры " + Выборка.Номенклатура.Наименование); Возврат; КонецЕсли; Иначе Сообщить("Не найдена номенклатура для штрихкода " + Данные); Возврат; КонецЕсли; Иначе Сообщить("Не найдена номенклатура для штрихкода " + Данные); Возврат; КонецЕсли; //КонецЕсли; Обработка.СобытиеОбработано(Объект); КонецПроцедуры | |||
| 1
    
        fatal_error 30.09.14✎ 08:25 | 
        хелп     | |||
| 2
    
        Обработка 30.09.14✎ 09:07 | 
        если сканер настроил в режиме разрыва клавы то тут нет необходимости обрабатывает событие. Просто содаешь диалог ввода и ее обрабатываешь так если бы с клавы вводил бы числа. И все!     | |||
| 3
    
        fatal_error 30.09.14✎ 09:08 | 
        (2) можно подробнее     | |||
| 4
    
        ИС-2 30.09.14✎ 09:08 | 
        можно и без обработки. При сканировании сканер вставляет текст (открываем блокнот, сканируем - штрих код в блокноте).
 В 1C, с помощью обработчика ожидания, все время держим активным поле куда помещаем штрих-код | |||
| 5
    
        MiniMuk 30.09.14✎ 09:11 | 
        (4) ну все время не надо. можно сделать кнопочку которая активирует нужное поле, подвешать на нее хот-кей, в сканере настроить на сканере префикс     | |||
| 6
    
        Обработка 30.09.14✎ 09:18 | 
        (3) Представь себе что сканера нет. И штирхкод вводишь вручную. При этом в форме выведи реквизит "Вводимыйштрихкод" и в этом реквизите событие "При изменении" обрабатывай поиск по штрихкоду. Ну собственно и все.
 А Сканер настроенный в режиме разрыва клавиатуры обычно генерит циферки как если бы ты вводил с клавиатуры. . Важно чтоб ы в это момент курсор находился в диалоге где это отображается. | |||
| 7
    
        Milok 30.09.14✎ 09:38 | 
        А почему бы не поставить драйвер сканера ШК и отлавливать через внешнее событие, зачем извращения с дополнительными формами?     | |||
| 8
    
        Обработка 30.09.14✎ 09:39 | 
        (7) Можно и так но ведь от простого к сложному двигаться начинающему лучше.
 Если скажут что ручной ввод запретить тогда и драйвер будет искать. | |||
| 9
    
        fatal_error 30.09.14✎ 10:06 | 
        или вы меня не поняли, или я вас)
 драйвер СШК от 1С установил, когда открываю документ и сканирую, то попадаю в процедуру формы ВнешнееСобытие и вижу там сканированный штрихкод. Проблема в том, что после поиска номенклатуры и установки текущей строки табличного поля - текущая строка смещается на 1 вниз. Такое смещение происходит, даже если номенклатура была не найдена или штрихкод не зарегистрирован в базе. | |||
| 10
    
        DGorgoN 30.09.14✎ 10:08 | 
        (9) Мы тебя поняли прекрасно, делай подключение через комп порт. Работает понятнее чем как клавдия.     | |||
| 11
    
        DGorgoN 30.09.14✎ 10:08 | 
        Просто когда ты в разрыв делаешь - шк просто эмулирует клавиатуру.     | |||
| 12
    
        Milok 30.09.14✎ 10:15 | 
        (9) Скорее всего что-то напутано с настройками (суффикс, префикс) копай в эту сторону     | |||
| 13
    
        hhhh 30.09.14✎ 10:29 | 
        (9) это никак не связано со сканером, это ваши программисты чего-то там навояли. Ищи отладчиком.     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |