сканер штрихкода и серийный номер #526171


#0 by Hotlis
Прошу помочь мне решить проблему. Конфигурация 7.7 "Торговля+склад для Казахстана". В конфигурации добавлен документ "Гарантийный талон", там есть поле для  товара и поле для серийного номера (обычное поле для ввода текста). При продаже продавец через "Подбор" выбирал товар и переписывал руками серийник с упаковки в поле "Серийный номер". Подключили USB сканер штрихкода установленный как клавиатура (драйвер АТОЛ). Сканер нормально работает, товар подбирает, но серийник в текстовое поле с него ввести не получается - он считывается с упаковки,  программа считает что серийник это штрихкод товара и начинает искать его в справочнике номенклатуры и естественно не находит. Причем руками, с клавиатуры в это поле серийник вписать можно. Как бы обойти это, чтобы можно было и товар сканером подбирать и серийник с упаковки считывать?
#1 by big
надо изменить процедуру ОбработкаВнешнегоСобытия, где ты будешь определять, что это серийник и соответственно обрабатывать его по другому алгоритму
#2 by Neg
Я понял так, что его не зря назвали сканер ШТРИХкода.
#3 by Hotlis
big Как его можно определить что это серийник? Обычный набор цифр-букв же? Или же надо как-то определить, что активно текстовое поле для ввода серийника, и прекратить подбор товара правильно понимаю?
#4 by big
тут надо смотреть в разных направлениях, ИМХО. Длина стандарнтого EAN13 - 13 символов. Но сдается мне, что серийника тоже бывают такие, поэтому имеет смысл смотреть первые 3 цифры. Смотреть отсутствие букв в штрихкоде. И т.д и т.п. з.ы. а можно проще - не нашел в штрихкодах - ищешь в серийниках
#5 by Neg
"Принцип работы сканеров штрих-кода Главной функцией сканера штрих-кода является прочтение штрих-кода, который изображается чередованием белых и черных полос (линейный штрих-код) или композицией из светлых и тёмных пятен (двухмерный штрих-код), впоследствии преобразовывая его в цифровой сигнал. Эту функцию выполняет специальный декодер, обычно встроенный в сканер. Декодер также может быть выполнен отдельным устройством, которое подключается между сканером и компьютером, кассовым аппаратом или POS-системой." И как он вам будет цифры и буквы считывать? Пустая затея...
#6 by Neg
Это нужен обычный сканер и ABBYY FineReader. :)
#7 by big
элементарно всё считывает. Даже без всяких настроек
#8 by Neg
Ну если серийник отображен ввиде штрихкода, тогда другое дело.
#9 by big
дык, вроде в это и подразумеватеся. Сейчас редко когда увидишь серийник без штрихкода. ЗАчастую он сразу "вписан" в длиннющий штрихкод на упаковке и т.п. Когда-то хотел автоматизировать торговлю бытовой техникой в части прихода-расход по штрихкодам и "обнаружил", что каждый производитель лепит всё что считает нужным. А китаское НО-НЭЙМ там вообще песня )))
#10 by Hotlis
Neg Продаю комп. технику, естественно все серийники в виде штрих кода, типа так  (первая попавшаяся картинка) Я похоже не совсем правильно выразился. В гарантийном талоне таблица значений ( в колонку Номенклатура вводится товар вручную или сканером, а если дважды щелкнуть мышью в поле Примечание, то курсор мигает и например с клавиатуры можно ввести серийник. А вот если дважды щелкнуть мышью в поле Примечание и считать сканером серийник с упаковки - начинается подбор номенклатуры. А надо чтобы серийник записался в эту ячейку.
#11 by Torquader
Серийник - это Штрих-код, только он обычно не EAN, а CODE39 или CODE25. Поэтому, берём инструкцию к сканеру, включаем передачу символа типа штрих-кода - тогда перед самим штрих-кодом будет передаваться символ, обозначающий его тип. По этому "типу" мы в процедуре ОбработкаВнешнегоСобытия можем смело понять, что мы считывали и записать наши данные именно в то поле, в которое надо. Другой вариант - поискать в Штрих-Кодах считанное значение - если оно там есть, то это не серийник, а если нету, то вероятнее, что именно он.
#12 by Hotlis
А можно ли как-то определить, что курсор стоит в колонке "Примечание" (для ввода серийника) и определив, не искать штрих-код, а записать в эту ячейку серийник считаннный сканером?
#13 by Torquader
Синтаксис: Форма.АктивныйЭлемент Назначение: Возвращает строковое значение -  идентификатор активного элемента диалога. Замечание: Доступ к методу возможен только в контексте Модуля формы через атрибут Форма.
#14 by МастерВопросов
Из области вредных советов: отключи Атоловский драйвер. И просто работай в разрыв клавиатуры. ОбработкаВнешнегоСобытия возникать не будет, но надо будет вручную курсор ставить в нужное поле и для поиска товара жать Ф7.
#15 by big
слишком вредный совет, который надо пристрелить ещё в самом зародыше
#16 by skunk
из очень вредных советов ... выкинуть атоловский драйвер ... скачать драйвер с сайта 1С
#17 by Hotlis
А если, как вариант, использовать: ТекущаяКолонка Установить/определить текущую колонку таблицы в элементе диало¬га типа «ТаблицаЗначений». Синтаксис: ТекущаяКолонка(<НоваяКолонка>, <ТекущаяКолонка>) Англоязычный синоним: CurrentColumn Параметры: <НоваяКолонка>    Необязательный параметр. Номер или иден¬тификатор колонки для элемента диалога типа «ТаблицаЗначений», на которую требу¬ется установить курсор. Если параметр не задан, то текущая колонка в поле диалога не меняется. <ТекущаяКолонка>    Необязательный параметр. Идентификатор переменной, куда система возвращает номер текущей колонки. Возвращаемое значение: Идентификатор текущей колонки поля диалога (до его изменения) или "" (пустая строка), если ее нет. Можно было бы проверить номер колонки, и если курсор стоит в колонке для серийников, то не запускать подбор товаров. Как считаете? Правда я попробовал так определить колонку, мне всегда возвращается значение "-1", разбираюсь.
#18 by skunk
текущаяКолонка не поможет
#19 by Hotlis
skunk Можно ссылку? Драйвер от 1С поддерживает USB сканеры ШК ?
#20 by Torquader
Драйвер - не драйвер - какая разница. Если Штрих-код и Серийный номер визуально ни чем не отличаются (ни длиной ни форматом), то система не сможет отличить один от другого. Соответственно, или использовать определение текущей колонки или поля ввода - или использовать различные режимы формы - например, на форму размещаем кнопку "Ввод серийного номера", которая выставляет флаг серийного номера - при считывании следующего штрих-кода он будет заноситься в поле "Серийный номер" и после этого флаг будет сбрасываться. Дальше остаётся только кнопку "подключить" на F5 или тому подобное.
#21 by Hotlis
Да, верно. Буду пробовать делать дополнительную форму для ввода.
#22 by Hotlis
Torquader Не дадите ли пример как это реализовать: на форму размещаем кнопку "Ввод серийного номера", которая выставляет флаг серийного номера - при считывании следующего штрих-кода он будет заноситься в поле "Серийный номер" и после этого флаг будет сбрасываться.     ?
#23 by МастерВопросов
драйвер от 1С поддерживает юсб сканеры, только в режиме эмуляции com-порта, т.е. в режиме разрыва клавиатуры работать не будет. Да и причем тут замена драйвера...
#24 by МастерВопросов
я тут на форуме встречал советы в качестве префикса у разрывного сканера назначить символы "f7+энтер", лишь бы драйвер по человечески не настраивать. Причем адепты решения позиционировали его как дюже прогрессивное- мол работает в любой комбинации софта и не требует настроек при подключении.
#25 by Torquader
Ну что мне за вас и код писать ? Примерно где-то так.
#26 by Hotlis
Torquader Спасибо большое! Не злитесь, у меня мало опыта, но я очень хочу разобраться.
#27 by Hotlis
На данный момент сделал так: проверяется активный элемент формы, и если курсор не стоит в колонке для ввода серийного номера(она у меня называется "Примечание") то запускается стандартный подбор. и далее стандартный подбор товара. Работает. Почти. Вылезла новая засада - сканер стал считывать штрихкод кусками. Экспериментально определил, что влияет параметр "Чувствительность" в настройках сканера. Стандартно стоит "30" - так сканер без проблем читает штрих-код и подбирается товар, но данные в поле для серийника вписываются произвольными кусками. Если поставить чувствительность например "10" - то обратная ситуация - для подбора товара код считывается обрывками, зато в поле для серийника читается без проблем! ((( Что такое может быть? За что отвечает параметр "Чувствительность" ?
#28 by big
хватит троллить уже, а? Что ты людей путаешь?? Тебе уже не раз говорили, что ты не прав.
#29 by Torquader
Чувствительность - это время ожидания прихода очередного символа со сканера для того чтобы считать их одной последовательностью. Надо правильно настроить суффикс и префикс - тогда чувствительность будет не при чём.
#30 by Hotlis
F7 + Enter - это не для 7.7?  У меня по нажатию F7 ничего не происходит...
#31 by big
суффикс надо устанавливать тот, который в поиске оборудования после штрихкода пишется. А эту комбинацию Ф7+Ентер вообще выброси из головы. Это всё из оперы сканера в РАЗРЫВ клавиатуры. Кстати, при поиске оборудования какой порт выступает источником? Клавиатура?
#32 by Torquader
Так у него и есть сканер в разрыв клавиатуры. Просто F7 как префикс и Enter как суффикс используют для сканера в разрыв клавиатуры, если не хочется использовать драйвер. Тогда на какую-то кнопку вешаем горячую клавишу F7, по нажатию на кнопку открываем поле ввода текста, куда вводится сам штрих-код от сканера, а Enter закрывает поле ввода. В первом приближении всё работает очень хорошо.
#33 by Hotlis
Да, порт  "Клавиатура"
#34 by big
это понятно. Тогда и "обработка внешнего события" не нужна, всё по-другому же делать надо. А какая модель сканера, кстати?? Если светодиодный, то его надо вплотную к ШК подносить, а то некоторые начинают именно кусками считывать.
#35 by Hotlis
Сканер Zebex-3051HS, считывает он замечательно. Тут же открываю блокнот - считывает нормально. Подскажите, как записать данные в текущую ячейку таблицы? Хотел попробовать сделать: Тип ячейки Примечание - Строка
#36 by Torquader
Таки не тип нужно, а Идентификатор. Если текущая строка выбрана, то надо просто сделать Идентификатор=Значение; Ещё можно перед этим убедиться, что строка выбрана, то есть НомерСтроки<>0
#37 by Hotlis
Получилось. Работает так: Спасибо огромное всем за помощь и терпение!
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С