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

Тема в разделе "1C и всё что с ней связано", создана пользователем IngWar2008, 15 апр 2008.

  1. IngWar2008

    IngWar2008 Гость

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

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

    Pro Гость

    возьми ТиС для примера, там и формирование штрих кода есть и считывание.
    если морочиться на тему именно шрифта при печати, то в свое время помог из Бухгалтерии там на квартальных отчетах печатается штрих код.
    считывание обрабатывается в процедуре Обработкавнешнихсобытий(<пер>) покапайся в ТиСе там все понятно...
     
  3. LSH

    LSH Гость

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

    Вложения:

  4. IngWar2008

    IngWar2008 Гость

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

    jcnby Гость


    выкини плз в Зипе((( рар не пахаеть у мну(( а мегапак хочецца иметь)
     
  6. IngWar2008

    IngWar2008 Гость

    Держи
     

    Вложения:

    • ______.zip
      Размер файла:
      411,9 КБ
      Просмотров:
      136
  7. jcnby

    jcnby Гость

  8. Pro

    Pro Гость

    IngWar2008
    насколько я знаю comий нет, с клавиатурным можно поэксперементировать...
     
  9. LSH

    LSH Гость

    IngWar2008
    Можно реализовать через подключение - отключение сканера.
    То есть, в первой конфе, зашел, открыл обработку, нажал кнопку - сканер подключился, отсканировал, нажал кнопку - сканер отключился
    Открыл вторую конфу - проделал те же действия.
    Благо, подключение - отключение осуществляется мгновенно.
    Либо, как предложил Про, через прерывание клавиатуры.
     
  10. IngWar2008

    IngWar2008 Гость

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

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


    как я понял, мне надо
    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" - это ж и есть наш штрих код.

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

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

    IngWar2008 Гость

    большая просьба. может кто-нить привести простенький примерчик процедуры закодирования числа в штрих код
    и процедуры чтения сканером?
     
  12. kaa

    kaa Гость

    [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]
     
Загрузка...
Похожие Темы - Работа со сканером
  1. morpheus
    Ответов:
    0
    Просмотров:
    5.787
  2. gx6060
    Ответов:
    2
    Просмотров:
    414
  3. alexas1
    Ответов:
    1
    Просмотров:
    448
  4. Amfion
    Ответов:
    7
    Просмотров:
    661
  5. Trafik
    Ответов:
    0
    Просмотров:
    533

Поделиться этой страницей