Работа со сканером

  • Автор темы IngWar2008
  • Дата начала
I

IngWar2008

#1
Здравствуйте.

очень большая к вам просьба. помогите разобраться как подвязать сканер штрих кода к самописной конфе.
слышал , что тма должны использоваться специальные библиотеки...шрифт...
нужно самое простое: на документе чтоб печатался штрих код, сканер брал его и записывал, что документ прошел. т.е. штрихкод здесь просто как идентификатор документа. помогите, если не сложно.
я не прошу сделать за меня что-то...решить.
прошу только помочь разобраться.
как работать со сканером. какой-нить пример функций чтоли...как выхватывать со сканера, то что у него на входе...как печатать сам код шьтиха, для этого ж нужен специальный шрифт как я понимаю, чтоб сканер его разобрал. может необходимы специальные библиотеки подключать...
сканер Metrologic MS9520.
прошу вас помочь.
 
P
#2
возьми ТиС для примера, там и формирование штрих кода есть и считывание.
если морочиться на тему именно шрифта при печати, то в свое время помог из Бухгалтерии там на квартальных отчетах печатается штрих код.
считывание обрабатывается в процедуре Обработкавнешнихсобытий(<пер>) покапайся в ТиСе там все понятно...
 
L
#3
Держи мегапак для работы со сканером.
В нем есть всё необходимое для подключения, сканирования и печати штрих-кодов.
 

Вложения

I

IngWar2008

#4
Спасиб. вот еще такой интересный вопрос появился...
Дело в том, что сканер скорее всего будет работать с двумя конфигурациями.
Т.е. будет одновременно запущено два приложения. Оператор сам будет выбирать приложение в котором ему работать. Вазможна ли работа сканера в двух приложениях одновременно?
Т.е. ввел сначала в одном приложении, потом перешел на другое ввел там. Чтоб два приложения были одновременно запущены, ну и чтоб поочередно можно было работать в них с одним сканером?
 
J

jcnby

#5
Держи мегапак для работы со сканером.
В нем есть всё необходимое для подключения, сканирования и печати штрих-кодов.

Прикрепленные файлы
___________________.rar ( 295.11 килобайт ) Кол-во скачиваний: 4

выкини плз в Зипе((( рар не пахаеть у мну(( а мегапак хочецца иметь)
 
P
#8
IngWar2008
насколько я знаю comий нет, с клавиатурным можно поэксперементировать...
 
L
#9
IngWar2008
Можно реализовать через подключение - отключение сканера.
То есть, в первой конфе, зашел, открыл обработку, нажал кнопку - сканер подключился, отсканировал, нажал кнопку - сканер отключился
Открыл вторую конфу - проделал те же действия.
Благо, подключение - отключение осуществляется мгновенно.
Либо, как предложил Про, через прерывание клавиатуры.
 
I

IngWar2008

#10
нужна помощь:
разобраться со сканеров штрих кодов в разрыв клавиатуры.

хочу сделать, что б при печати документа формировался штрих код, который потом считывали б сканером в другом месте.
и после того как считали его в этом документе бы допустим проставлялся бы статус, что мол договор вернули.
т.е. вот напечатали договор, в нем есть штрих код. потом этот договор сканируют сканером(после того как все подпишут, как он пройдет все инстанции...)
и в этом же документе проставлялся бы статус возврата. ну что б было понятно, что договор вернули, что мол все инстанции обошли вс готово.
ну там просто организавать поиск по значению считанного штриха , открыть этот документ и изменить в нем реквезит.


как я понял, мне надо
1. сформировать глобальную функцию формирования штрих кода(ну там получается что в нем ток номер договора будет передоваться, в штрих коде)
которая будет записывать в штрих код номер документа.

2. функцию сканирования, которая будет получать данные при реагировании сканера.

я там смотрел примеры...что-то не очень разобрался...


ну здесь впринципе понятно:
а вот еще, нужен же еще специальный шрифт?

Функция глСформироватьШтрихКод(кДоку) Экспорт
//формат штрих кода
// стандарт кодировки - Code-39, произвольной длины код, ограничивается символом "звездочка"
// с двух сторон. поддерживает произвольную длину.
// использовать будем
// 1 код базы (для этой - "1")
// 2-6 код элемента справочника "Проекты"
// 7-12 сумма рубли
// 13-14 сумма копейки
// 15-20 номер документа Квитанция
НомерКвитанции = ДополнитьЛидирующимиНулями(кДоку.номерДок,6);
кДоку = кДоку.кДокументу.текущийДОкумент();
тДок = СоздатьОбъект("Документ."+кДоку.вид());
тДок.НайтиДокумент(кДоку);
тДок = тДок.текущийДокумент();
Если тДок.Выбран()=0 Тогда
Сообщить("Ошибка поиска документа!");
Возврат 0;
КонецЕсли;
//начинаем формировать штрихкод
barcode="*";
//код этой базы
barcode=barcode+"1";
//формируем 5 символьный номер проекта. Все параметры фиксированной длины
// поэтому их необходимо дополнять нулями
Если тДок.кПРоекту.выбран()=1 тогда
НомерПроекта = тДок.кПроекту.Код;
Иначе
//квитанция на привязана к проекту
НомерПроекта = 99999;
КонецЕсли;
НомерПроекта = ДополнитьЛидирующимиНулями(НомерПроекта,5);
barcode = barcode + НомерПроекта;
СуммаПоДокументу = глПолучитьСуммуПоДокументу(тДок);
СуммаРуб = Цел(СуммаПоДокументу);
СуммаРуб = ДополнитьЛидирующимиНулями(СуммаРуб,6);
barcode=barcode+СуммаРуб;
СуммаКоп = ДополнитьЛидирующимиНулями((СуммаПоДокументу - СуммаРуб)*100,2);
barcode=barcode+СуммаКоп;
barcode=barcode+НомерКвитанции;
//заканчиваем штрих-код
barcode=barcode+"*";
Возврат barcode;
КонецФункции

здесь в принципе понятно...функция заноса данных в штрих код.
вот ток не очень понятно: СуммаРуб = ДополнитьЛидирующимиНулями(СуммаРуб,6);
т.е. получается что надо что б штрих был записан полностью значениями?
т.е. если переменная короткая , то ее надо дополнять нулями?

потом вызываем эту функцию:
barCode = глСформироватьШтрихКод(Док);
и собственно печатаем "barCode" - это ж и есть наш штрих код.

а вот как потом его считать, после того как распечатали?

можете помочь?
очень надо...
 
I

IngWar2008

#11
большая просьба. может кто-нить привести простенький примерчик процедуры закодирования числа в штрих код
и процедуры чтения сканером?
 
K
#12
[codebox]Процедура ОбработкаВнешнегоСобытия(Источник,Событие,Данные)
Перем СЗ, Товар, ШК, СпрТов, СпрШК;
Если ( Событие = "BarCodeValue") Тогда
СканерШК.ПосылкаДанных=0;
СпрШК = СоздатьОбъект("Справочник.ПартииТовара");
ШК=Прав(Данные,13);
Если СпрШК.НайтиПоКоду(ШК,0)=0 Тогда
ШК=СокрЛП(Данные);
СпрТов = СоздатьОбъект("Справочник.Номенклатура");
Если СпрТов.НайтиПоРеквизиту("ШтрихКод", ШК, 1)=0 Тогда
Предупреждение(" Товар с кодом "+ШК+" не найден !!!");
СканерШК.ПосылкаДанных=1;
Возврат;
Иначе
СЗ=СоздатьОбъект("СписокЗначений");
СЗ.УдалитьВсе();
СЗ.ДобавитьЗначение(0,"ШтрихКод");
СЗ.ДобавитьЗначение(СпрТов.ТекущийЭлемент(),"Товар");
СЗ.ДобавитьЗначение(1,"Количество");
СканерШК.ПосылкаДанных=1;
ОткрытьФорму("Документ.Чек", СЗ);
КонецЕсли;
Иначе
СЗ=СоздатьОбъект("СписокЗначений");
СЗ.УдалитьВсе();
СЗ.ДобавитьЗначение(ШК,"ШтрихКод");
СЗ.ДобавитьЗначение(СпрШК.ТекущийЭлемент().Владелец,"Товар");
СЗ.ДобавитьЗначение(1,"Количество");
СканерШК.ПосылкаДанных=1;
ОткрытьФорму("Документ.Чек", СЗ);
КонецЕсли;
КонецЕсли;
КонецПроцедуры[/codebox]
[codebox]Функция ШТ_КОД(товар) экспорт
ШтрКод = Строка(товар.ШтрихКод);
Префикс = "10";
Если СтрДлина(ШтрКод) <12 Тогда
Предупреждение("Печать данного типа штрих-кода не поддерживается");
возврат("");
ШтрКод =Префикс+ДобавитьСлева(Строка(товар.Владелец.код),5,"0")+ДобавитьСлева(Строка(товар.Код),5,"0");
ИначеЕсли (Лев(ШтрКод,2)="10") или (лев(ШтрКод,2)="21") Тогда
ШтрКод =Префикс+ДобавитьСлева(Строка(товар.Владелец.код),5,"0")+ДобавитьСлева(Строка(товар.Код),5,"0");
ИначеЕсли (СтрДлина(ШтрКод)<13) и (СтрДлина(ШтрКод)>8) Тогда
ШтрКод=ДобавитьСлева(ШтрКод,12,"0");
Иначе
ШтрКод=Лев(ШтрКод,12);
КонецЕсли;
ШтрКод = EAN13CodeGenerate(Число(ШтрКод));
возврат(ШтрКод);
КонецФункции[/codebox]