gifts2017

[ОБУЧАЛОВКА] Ликбез по сканерам ШК

Опубликовал Сергей (Che) Коцюра (CheBurator) в раздел Программирование - Внешние компоненты

Краткое описание основных принципов работы/настройки сканеров ШК в программе 1С (по мотивам ветки T1C)
По мотивам ветки http://www.kuban.ru/forum_new/forum9/files/299292.html)

Q. Люди, подскажите чайнику принцип работы в проге со сканером штрих-кода. Подключил сканер <модель>, установил драйвера. В программе ТиС тест проходит, а что дальше? Каков принцип работы в номенклатурах и накладных? В номенклатуре написано: "Штрихкоды единиц измерения можно ввести со сканера".

A.
1. Штатная ТиС
2. ШК задается НА КАЖДУЮ ЕДИНИЦУ ИЗМЕРЕНИЯ НОМЕНКЛАТУРЫ. "Единицы" - это справочник "Единицы", подчиненный "Номенклатуре". Базовая и основная единицы "выведены" в карточке товара, остальные - в справочнике "Единицы". ШК в единицы можно вводить как вручную так и сканером.
3. ШК на товар (задается в единице) - должен быть УНИКАЛЬНЫМ в пределах всей базы. Иначе - бяка (для работы с "бякой" - типа http://infostart.ru/profile/174/projects/1211/image.php?img=770 - см. картинки).
4. ШК бывают "в разрыв клавиатуры" и "в порт (USB, COM)".
5. ШК в разрыв клавы работает по умолчанию - но работает очень тяжко, так как эмулирует нажатия клавиш и ENTER в конце ШК - что получится зависит от того, !!!где в момент сканирования находился курсор (фокус)!!!
6. Для сканеров устанавливаются спецдрайвера (как правило - проблем не бывает).
7. При (правильной)установке (правильного)драйвера ШК "в разрыв" и ШК "в порт" они (ШК через драйвер) генерят "внешнее событие", на которое реагирует 1Сина путем выполнения предопределенной процедуры ОбработкаВнешнегоСобытия() (которая может быть как в форме, так и в глоб.модуле). На вход процедуры поступает собственно сам ШК, "имя события" и "имя источника ШК" - а они уже обрабатываются 1Сными ТИПОВЫМИ процедурами, которые наштрямкали программисты.
8. Соответственно, если у вас открыта какая-нибудь форма (элемент справочника, документ и пр) и в этой форме есть процедура ОбработкаВнешнегоСобытия() - отрабатывает она и выполняет действия в зависимости от "ситуации": а) получает ШК б) смотрит "в каком месте" был получен ШК и в зависимости от этого в) вносит ШК в соответствующие поля или осуществляет поиск товара по полученному ШК с "передачей" найденного товара "дальше" - куда "дальше" - зависит от того, что прописано в алгоритме.
9. Сам сканер ШК при сканировании генерит КОД, который может состоять собственно из самого ШК и префикса с суффиксом... Для того, чтобы сработало "внешнее событие" и ОбработкаВнешнегоСобытия() - должен быть в настройках программы(драйвера) корректно описан СУФФИКС ШК - т.е. спец.символ(последовательность спец.символов), которые "говорят" что ШК "закончился"... можно его "обрабатывать"... т.е.
- со сканера идет: <Префикс><ОтсканированныйШК><Суффикс>;
- <Префикс> и <Суффикс> настраиваются по книжке с настройками сканера;
- если правильно В ДРОВАХ настроены <Префикс> и <Суффикс> (т.е. такие же, как у сканера), то дрова их отбрасывают, оставляя <ОтсканированныйШК> для 1С-ны.
- если правильно В ДРОВАХ настроен <Суффикс>, то по его приходу и генерится "Внешнее событие". Иначе - ждем это событие до второго пришествия...
- <Суффикс> - это символ(спец.код), который говорит компу о том, что переданная от железа последовательность закончилась;
- <Префикс> - символ, позволяющий отличать "нашу" последовательность (со сканера) от "не нашей" (с фиг знает еще какого устройства) или, например, <префикс> можно использовать чтобы отличать наши "внутренние" ШК от ШК производителей/поставщиков.

См. также

Подписаться Добавить вознаграждение

Комментарии

1. АЛьФ (АЛьФ) 22.09.07 14:53
Огромная просьба не давать в кратком описании к статье длинных ссылок. Главная страница портала становится кривой :(
2. Drock (d.snissarenko) 22.09.07 19:16
к пункту 5 - могу добавить - это не большой минус по сравнению с перебросом com порта через 2 терминала и по поводу эмуяции интера - ну почитай про заводские настройки, у меня стоят штук 7 сканов по ценам от 100$ до 750$ все с портом ps/2 - нажатие интера только через суффикс,
А вот работают они действительно в интересных условиях
1 Бездисковые терминалы которые получают рабочий стол по xdmcp у линукс сервера
2 И люди работающие в линукс сессии работают по рдп 1с
поэтому я и отказался от усб и rs232 сканов
4. Сhe Burashka (CheBurator) 22.09.07 20:27
Смысл в том, что если поставить в разрыв клавы без доп.настроек(драйверов), то например в форме подбора номенклатуры в типовой ТиС ну очень тяжко по ШК работать... там же на каждое нажатие идет "отработка" быстрого поиска...
5. Владимир Паникаровских (Voldemar) 24.09.07 06:51
Ещё раз к 5 пункту. COM- портовыми сканерами уже дважды сжигали мать. (специфика предприятия - запросто роняют тяжёлую железяку на шнур. Как следствие - питание на COM-порт). Поэтому теперь используем клавиатурные. В качестве <префикса> отправляю <F6> (можно любую другую незадействованную функционалку), а в тех местах, где может использоваться сканер, повесил невидимую кнопку, нажимаемую этой функционалкой и вызывающую процедуру, абсолютно идентичную Процедуре ОбработкаВнешнегоСобытия(). При програмировании сканера кроме префикса перед посылкой кода ставлю задержку 200-300мс (в зависимости от компа, к которому подключен) суффиксом идёт Enter. Работает без проблем. При этом во всех местах, где используется сканер, добавилась возможность ручного ввода ШК нажатием F6. Очень удобно в подборе, когда ШК не читается, но цифры оператор видит нормально.
6. Дмитрий (Mitrich) 24.09.07 08:50
Это, я не понял, а где указание соавторства??? :)
Замечания:
п.4 - "ШК бывают в разрыв..." заменить бы на "Сканеры бывают в разрыв..."
- USB-сканеры все равно эмулируют либо клаву, либо COM, поэтому отдельной настройки "под USB" не найдете
п.6 По драйверам:
- в комплекте с 1С (при установке чистой БД) и на диске ИТС идет "родной" драйвер сканера scanopos.dll, на ИТС есть описание его методов. Нормальный, но не отрабатывает события с клавиатурных сканеров.
- бесплатный хороший драйвер для сканеров любых типов (а также ридеров) предоставляет Атол (http://www.atol.ru/products/programs/trade-work/driver/driver-scaner/), это Scaner1C.dll+у них на сайте очень подробно и хорошо описано подключение оборудования их дровами (http://www.atol.ru/support/encyclopedy/).
- драйвера под сканеры (из тех, что знаю) есть также у Штрих-М (http://www.shtrih-m.ru/downloads/show_prod_103_199_53.html) и Раруса (http://www.rarus.ru/products/soft/127/), но жлобский Рарус требует за него денюжки
- ну и куча самописных драйверов, если поискать на www.proclub.ru и www.infostart.ru
п.8 -для клавиатурных сканеров можно обойтись без дров и ОбработкиВнешнегоСобытия (если, например, самописная конфа, и механизм работы с торг.оборудованием переносить ломает): надо просто предварительно ставить курсов в реквизит формы, куда должен вводится ШК, а у сканера префикс убрать, суффикс выставить Enter
Ну и последнее. ЛЮДИ! Читайте документацию по настройке, идущую со сканером. Меньше будет тупых вопросов :)
u_n_k_n_o_w_n; ivan_luzinov; Shoorik; ivvan; +4 Ответить
7. Сhe Burashka (CheBurator) 24.09.07 10:09
Признаю, облажался!
Хотел выразить благодарность, но зажилил...
Правда, ссылку - указал ;-)
8. V. L. (Vladal) 25.09.07 07:56
Закладочку в браузере поставлю. Купили СШК, нужно будет разбираться.
9. Слава (Бит) 27.11.07 16:31
очередные пять копеек, очень удобно добавлять звукой сигнал в обработке внешнего события если товар с нужным штрих кодом не найден.
что типа:
WshShell = CreateObject("WScript.Shell");
WshShell.Run("%comspec% /c echo "+Симв(7),0,-1);
ЗЫ если работа ведётся в терминале, сигнал идёт на системный динамик клиента (даже если это "тонкий" клиент)
10. Сhe Burashka (CheBurator) 27.11.07 17:48
(9) справедливое замечание.
Именно так у меня сделано, например, вот здесь:
http://infostart.ru/profile/174/projects/1211/
- события озвучиваются более яркими звуками, в случае "бяки" звонить тревожный гунявый телефонный звонок...
11. Сергей (Che) Коцюра (CheBurator) 10.05.10 08:01
13. Алексей Пацура (formula76) 16.06.16 13:27
СПАСИБУЩЕ!!!
Всего одна фраза, пара слов
- если правильно В ДРОВАХ настроен <Суффикс>, то по его приходу и генерится "Внешнее событие". Иначе - ждем это событие до второго пришествия...

Стандартные настройки сбивали суфикс...
14. Андрей Визгин (soft_warrior) 25.10.16 11:42
как то сталкивался с ситуацией в 1С 7.7.
использовался драйвер Атол технологий. сканер USB в эмуляции клавиатуры, работает в терминале RDP.
сканировали ШК, поиск по номеклатуре, внутренне событие отрабатывается легко и непринужденно,
ШК оказывается не найден, выдается соответственное диалоговое сообщение "ШК не найден" с кнопкой "ОК".
фокус ввода соответственно переходит на него.
если в этот момент сканируется еще один ШК, и вот тут начиналась проблема с 1С в плане зависания.
приходилось снимать задачу 1С-ки.
15. Сергей (Che) Коцюра (CheBurator) 25.10.16 18:52
(14) Религия позволяет отладчиком посмотреть куда идет 1Сина при "..если в этот момент сканируется еще один ШК,"..?
16. Сергей (Che) Коцюра (CheBurator) 25.10.16 18:54
и соответственно, если юзверь НЕ ВОСПИТАН чтобы НЕ СКАНИРОВАТЬ тогда КОГДА ЭТОГО НЕ ТРЕБУЕТСЯ - может а) обучить юзера б) перестроить процес, например если юзверю начхать на окно-предупреждение - то нахрена его выдавать - плюнул сообщение в табло или записал в протокол ошибок а юзверь себе сканирует дальше...
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа