|
Подключение сканера штрихкода к самописке | ☑ | ||
---|---|---|---|---|
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
naïve
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) это никак не связано со сканером, это ваши программисты чего-то там навояли. Ищи отладчиком.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |