Имя: Пароль:
1C
1С v8
v8: подключение ШК
0 _Dynamic_
 
31.01.14
18:17
Есть самописная база.

На розничный магазин необходимо подключить сканер ШК. Для реализации продукции, инвентаризации и так далее.

Сканер MERCURY. Подключается через COM-порт. В программке "Hypertrm" проверил, что сканер работает, считывает штрих-код.

Скачал Scaner1C.dll. Запустил. На вкладке Сервис - Параметры появилась вкладка "Сканер штрих-кода". Делаю настройки. Жму "Поиск...". Сканер видит. Делаю тестовый пик, но в строчку "Данные" ничего не появляется...

Не говоря уже про то, что не выполняется ВнешнееСобытие() в формах.

В чем может быть косяк? Есть подозрение что в дровах. Может кто даст ссылку на нормальные дрова. Буду рад любой информации. Спасибо.
1 _Dynamic_
 
31.01.14
18:25
Никогда раньше Сканер ШК не подключал, не внедрял. Весь инет уже перелопатил - получается. Помогите. SOS !
2 _Dynamic_
 
31.01.14
18:37
ап!
3 neosfen
 
31.01.14
18:43
К чему подключаете? Платформа, конфигурация?
4 _Dynamic_
 
31.01.14
18:45
(3) 8.2 толстый клиент
Конфигурация самописная
5 _Dynamic_
 
31.01.14
18:46
в COM-порт подключаю
6 neosfen
 
31.01.14
18:55
Scaner1C.dll - это старая атоловская вк? Если так, то она, насколько помню, не работает в 8.2 с какой-то там версии. Нужно использовать стандартную компоненту 1с: Сканер штрихкода.

Сейчас поищу как с ней приблизительно работать
7 _Dynamic_
 
31.01.14
18:58
(6) Да. Что то атоловское скачивал.
А "1с: Сканер штрихкода" можно откуда то скачать? или где мне ее взять?
8 Tatitutu
 
31.01.14
19:03
Драйвера АТОЛ - скачай и установи
http://www.magazka.com/MAGAZKAHelp/scr/nastroikato.html
9 BarakuzA
 
31.01.14
19:08
(8) - делал аналогичное, но для управляемых форм. но принцип тот же могу помочь.
10 neosfen
 
31.01.14
19:10
ПрогИД = "AddIn.Scanner";
ПодключитьВнешнююКомпоненту(ПрогИД);
Драйвер = Новый (ПрогИД);


Драйвер.Подсоединить("BarCodeScaner");
Драйвер.УстройствоВключено = 1;
Драйвер.ПосылкаДанных      = 1;
Драйвер.Порт = <номер ком-порта>;
Драйвер.БитДанных = 8;
Драйвер.Скорость = 9600;
Драйвер.СтопБит = 0;
Драйвер.СтопСимвол = <код суффикса>;
Драйвер.ИмяСобытия = "ПолученШтрихкод";
Драйвер.Занять(1) = 0 Тогда
Драйвер.УстройствоВключено = 1;
Драйвер.ПосылкаДанных      = 1;
Драйвер.ОчиститьВход();
Драйвер.ОчиститьВыход();

Где-то так.

После этого будет срабатывать ВнешнееСобытие()

Стандартный есть на диске ИТС и в интернете полно их.
scanopos.exe или 1cbarcode.exe
11 BarakuzA
 
31.01.14
19:11
&НаКлиенте
Перем Драйвер;

&НаКлиенте
Процедура ПриНачалеРаботыСистемы()
    Попытка
        ПрогИД="AddIn.Scanner";
        ПодключитьВнешнююКомпоненту(ПрогИД);
        Драйвер = Новый (ПрогИД);
        Сообщить("Компонента для сканера штрих-кодов загружена!");
    Исключение
        Сообщить ("Невозможно подключить внешнюю компоненту!");
    КонецПопытки;
    
    Попытка
        ВерсияИзДрайвера = Драйвер.ПолучитьНомерВерсии();
    Исключение
        Сообщить ("Невозможно определить версию драйвера!");
    КонецПопытки;
    
    Если Лев(СокрЛП(ВерсияИзДрайвера), 5) <> "8.0.8" Тогда
        Сообщить ("Версия драйвера не поддерживается. Требуемая версия компоненты 1С:Сканер ШК - 8.0.8!");
    КонецЕсли;
    
    Если Драйвер.Подсоединить("Сканер штрихкода") <> 0 Тогда
        Сообщить ("Ошибка (1) при подключении устройства!");
    КонецЕсли;
    
    //при подключении USB-сканера с эмуляцией COM-порта указывать порт 5 в свойствах виртуального COM-порта в диспетчере устройств
    //сканер настроить - префикса нет, суффикс - CR
    Драйвер.БитДанных  = 8;
    Драйвер.Порт       = 1;
    Драйвер.Скорость   = 9600;
    Драйвер.СтопБит    = 1;
    Драйвер.СтопСимвол = 13; //CR - carriage return
    
    
    
    Драйвер.ИмяСобытия = "ПолученШтрихкод";
    
    Если Драйвер.Занять(1) = 0 Тогда
        Драйвер.УстройствоВключено = 1;
        Драйвер.ПосылкаДанных      = 1;
        Драйвер.ОчиститьВход();
        Драйвер.ОчиститьВыход();
        Сообщить("Сканер подключен и готов к работе!");
        Если Драйвер.УстройствоВключено <> 1 Тогда
            //Отключить();
            Драйвер.УстройствоВключено = 0;
            Драйвер.Освободить();
            Драйвер.Отсоединить();
            Сообщить ("Ошибка (2) при подключении устройства!");
        КонецЕсли;
    Иначе
        //Отключить();
        Драйвер.УстройствоВключено = 0;
        Драйвер.Освободить();
        Драйвер.Отсоединить();
        Сообщить ("Ошибка (3) при подключении устройства!");
    КонецЕсли;
    
КонецПроцедуры

&НаКлиенте
Процедура ПриЗавершенииРаботыСистемы()
    Если Драйвер <> Неопределено Тогда
        Драйвер.УстройствоВключено = 0;
        Драйвер.Освободить();
        Драйвер.Отсоединить();
    КонецЕсли;
КонецПроцедуры

&НаКлиенте
Функция ОбработатьСобытие(Данные) Экспорт
    ШтрихКод = Данные;
    Драйвер.ПосылкаДанных = 0;
    Возврат СокрЛП(ШтрихКод);
КонецФункции

&НаКлиенте
Функция СобытиеОбработано() Экспорт
    Драйвер.ПосылкаДанных = 1;
КонецФункции
12 _Dynamic_
 
31.01.14
19:11
(10) Спасибо! Сейчас буду пробовать
13 BarakuzA
 
31.01.14
19:12
&НаКлиенте
Процедура ВнешнееСобытие(Источник, Событие, Данные)
    //Сообщить ("Внешнее событие"+Событие);
    Если Событие = "ПолученШтрихкод" Тогда
        //Сообщить("ШтрихКодПолучен");
        ШК = ОбработатьСобытие(Данные);
        //Сообщить("Код карты "+ШК);
        Объект.ТекущаяДК = СокрЛП(ШК);
        ДискКартаПриИзменении(Объект.ТекущаяДК);
        СобытиеОбработано();
    КонецЕсли;
КонецПроцедуры
14 _Dynamic_
 
31.01.14
19:14
(11) Спасибо за помощь! Будет сегодня ночью чем заняться! А то ваще беда какаета с этими Сканерами ШК :))
15 BarakuzA
 
31.01.14
19:15
(14) - сам долго мучился. теперь работает нормально.
16 neosfen
 
31.01.14
19:21
(15) С ними похоже все в своё время помучились )
17 _Dynamic_
 
31.01.14
19:23
(16) Вот и мой черед настал :)
18 0level
 
31.01.14
20:04
есть прога comkey. в ней можно установить порт и скорость, после чего comсканер будет работать как сканер с интерфейсом "Разрыв клавиатуры" (клавиатурный).

http://www.sbarcode.com/soft/comkey/comkey.html