Имя: Пароль:
1C
 
сканер штрихкодов COM port и разрыв клавиатуры
0 Skom
 
24.12.08
13:16
с ком портом проблем нет
а вот с клавиатурным разрывом не пойму как то не так отрабатывает
1 lalex23
 
24.12.08
13:17
2 Skom
 
24.12.08
13:19
scanopos.dll и встроенная не канают?
3 Skom
 
24.12.08
13:23
?
4 Skom
 
24.12.08
13:27
??
5 Skom
 
24.12.08
13:29
(1) спасибо кстати
6 lalex23
 
24.12.08
17:03
(2) клавиатурники не схватит
(5) спсибо н булькает :)
7 Skom
 
25.12.08
05:34
вопрос.
для клавиатурника блок питания должен быть?

в инструкции нарисован
в комплекте в коробке не было

модель Eclipse MS5145 kb/kbw
8 birkoFFFF
 
25.12.08
05:40
(7) не обязательно, у нас и так работал без проблем, правда сначала думали недокомплект )))
9 Гефест
 
25.12.08
05:45
А что не так отрабатывает?
10 Skom
 
25.12.08
06:11
а кто знает как на оном девайсе переключить режим работы

а то у меня 90 страниц с настроечными штрихкодами
и все на английском языке....
я конечно малость владею им, но такое проделываю в первый раз
что то аж потерялся малость
11 Skom
 
25.12.08
06:13
а то он эмулирует клавиатуру а надо по другому
12 big
 
25.12.08
06:22
(11) Надо было продавцу при покупке это условие озвучивать. А теперь надо на этих 90 страницах искать место, где он перепрограммируется на другой интерфейс. Или в Инете искать визуальную утилиту настройки сканеров метролоджик.
13 Skom
 
25.12.08
06:23
(12) нашел неа русском описание....
14 big
 
25.12.08
06:24
(12) + Кстати, а чем не устраивает клавиатурный? Атол-овский драйвер событие от него генерирует, настраивается на раз-два. Включил - и забыл про него.
15 Skom
 
25.12.08
06:25
(14) у меня не получается настроить.

делаю все как описано в (1) по первой ссылке.

но он не генерит Внешнее событие
а тупо вставляет текст считаный и все

7900001000

вот так в любое текстовое поле, либо,
тупо энтер нажЫмает
16 Skom
 
25.12.08
06:26
+ ко всему....1С работает через терминал.
17 big
 
25.12.08
06:28
(15) А порт "Клавиатура" выставил или как там СОМ1??  :))
(16) а без разницы
18 Skom
 
25.12.08
06:29
Клавиатурный
и Com1 пробовал
19 Skom
 
25.12.08
06:30
+17
ни тот ни другой не работают как надо
20 big
 
25.12.08
06:33
Блин, у всех работает, а у тебя не работает...  В поиске оборудования срабатывает?
21 Skom
 
25.12.08
06:34
+17
в поиске оборудования показывает не COM1
а
Клавиатура, 21
22 Нуф-Нуф
 
25.12.08
06:35
еще раз в чем проблема?
23 Skom
 
25.12.08
06:36
22

сканер подключен через драйвер атол
сканер клавиатурный.
не отрабаттывает ОбработкаВнешнегоСобытия.
а работает как простая эмуляция клавиатуры....
24 big
 
25.12.08
06:36
(21) что значит "Клавиатура, 21" ???
25 Стрелок
 
25.12.08
06:39
берём книжку с настроечными кодами
0. входим в режим настроек (код специальный)
1. скидываем настройки сканера в дефаулт (код специальный)
2. находим код который "записать изменения"
3. опять входим в режим настроек
4. ишем "клавиатура" - их две IBM и PS/2. выбираем вторую
5. сохраняемся
6. в 1С Параметры-драйвер аттола
7. ставим галку "включить устройство"
8. жмём "найти устройство"
9. сканируем любой код - появится штрихкод - анализируем
10. закрываем окно поиска и выставляем префиксы и суфиксы
11. в качестве суфикса чаще всего используем "ентер" кажется #13, сохраняем параметры в 1С
12. открываем текст в 1С (файл/новый/текст)
13. пробуем сканировать, настраиваем сканер до тех пор пока не будет выходитть "чистый" штрих-код и строка будет автоматом переводится на новую


Да, кстати - отключаем штатную загрузку родного драйвера и грузим при старте атоловскую длл

кроме того - у штатной и атоловской библиотеки разные форматы данных - смотри примеры на сайте аттола
26 Skom
 
25.12.08
06:39
oyaebu
27 Стрелок
 
25.12.08
06:41
(21) всё у него верно показывает. осталось самая малость. выполнить п.с 10
(23) кто тебе сказал что не отрабатывает? точку останова поставь в этой процедурке (в форме нужной) - там формат данных другой

кстати, чтобы сработала обработка внешнего события обязательно ввод должен заканчиваться ентером (для клавиатурных сканеров)
28 Стрелок
 
25.12.08
06:41
мда......
29 Skom
 
25.12.08
06:42
(27) заканчивается энтером.
30 Стрелок
 
25.12.08
06:44
(29) значит должна срабатывать. если ты процедуру не переписал - то ничего не будет - говорю же - формат данных другой
31 big
 
25.12.08
06:45
(30) чтобы не париться с лазанием по сайту атола, скажи - а что в том формате другого?
32 Skom
 
25.12.08
06:46
(30)

Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные)
   
   Если Событие = "BarCodeValue" Тогда
       Если глСканерВключен() = 1 Тогда
           глСканерПосылкаДанных(1);
       КонецЕсли;
   Иначе
       глОбработкаВнешнегоСобытия(Источник, Событие, Данные);    
   КонецЕсли;
   
КонецПроцедуры // ОбработкаВнешнегоСобытия()

точка останова стоит в этой процедуре...
не обрабатывает
33 Skom
 
25.12.08
06:46
процедуру не переписывал.
34 Стрелок
 
25.12.08
06:47
щас найду пример
35 Skom
 
25.12.08
06:47
+30

в поиске оборудования ваыдает такую строку

7900001000 #13

прот - Клавиатура, 21
36 Стрелок
 
25.12.08
06:49
Процедура ОбработкаВнешнегоСобытия(Источник,Событие,Данные)
   // Процедура разбирает штрих-код, считанный сканером
   // и заполняет строки накладной
   Перем Упаковка,ТекКоличество;
   
   
   Упаковка=0;
   Данные=УстройствоВвода.ScanData;

.........
КонецПроцедуры
37 Стрелок
 
25.12.08
06:50
(35) прелестно. тыкай в префиксах (в настроках выбираешь из списка) #13 ставишь галку "включать при входе" и "устройство включено"
38 Стрелок
 
25.12.08
06:51
вот пример подключения сканера

Процедура Подключение()
   Если ЗагрузитьВнешнююКомпоненту(КаталогИБ()+"\ExtDLL\Scaner1C.dll") = 0 Тогда
       Предупреждение("Неудачная попытка загрузить Scaner1C.dll (драйвер сканера ""Атол"")"+РазделительСтрок+РазделительСтрок+
       "Вы сможете пользоваться сканером, подключенным"+РазделительСтрок+
       "в разрыв клавиатуры только в обычном режиме.",1);
       глУстройствоВРазрывАтол=0;  
       Возврат;
   КонецЕсли;
   УстройствоВвода = СоздатьОбъект("AddIn.Scaner45");
   Если УстройствоВвода.УстройствоВключено=1 Тогда  
       глУстройствоВРазрывАтол=1;
       Предупреждение("Устройство ввода, подключенное в разрыв клавиатуры"+РазделительСтрок+
       "с помощью драйвера ""Атол"" успешно подключено и готово к работе",1);
   Иначе
       глУстройствоВРазрывАтол=0;
       Предупреждение("Устройство ввода, подключенное в разрыв клавиатуры через драйвер ""Атол"" не обнаружено!");
       УстройствоВвода.ПоказатьСтраницуСвойств ();
       Если УстройствоВвода.УстройствоВключено=1 Тогда
           глУстройствоВРазрывАтол=1;
           Предупреждение("Устройство ввода, подключенное в разрыв клавиатуры"+РазделительСтрок+
           "с помощью драйвера ""Атол"" успешно подключено и готово к работе",1);
       Иначе
           глУстройствоВРазрывАтол=0;
           Предупреждение("Устройство ввода, подключенное в разрыв клавиатуры через драйвер ""Атол"" не обнаружено!");
       КонецЕсли;    
   КонецЕсли;
КонецПроцедуры
39 Стрелок
 
25.12.08
06:52
всё это в том или ином виде есть в примерах на сайте атола
40 Skom
 
25.12.08
06:53
вопрос тупой!!! но.....
на локальном компе ведь не обязательно дрова ставить...
я в терминале
41 Skom
 
25.12.08
06:54
+39
примерно то же самое
в обработке Scaner1C_7_7.ert
42 Стрелок
 
25.12.08
06:54
(40) да по барабану где дрова ты ставил. главное чтобы при старте 1С грузилась библиотека-драйвер. а откуда она грузится будет - пофигу
43 Стрелок
 
25.12.08
06:54
(41) и?
44 Skom
 
25.12.08
06:55
не останавливается отладчиком
45 Skom
 
25.12.08
06:56
ни в одном месте где есть обработка внешнего события
и в глобальнике поставил и в справочнике и в документе
нигде не стопится
46 Стрелок
 
25.12.08
06:56
выдай мне процедуру ОбработкаВнешнегоСотыия по копипасте из формы где не получается сканировать (НЕ ГЛОАБЛЬНИКА А ФОРМЫ)
47 Стрелок
 
25.12.08
06:57
заодно дай мне модуль подключения сканера к системе (как в 38)
48 Skom
 
25.12.08
06:58
Перем ОписаниеРезультата;

//******************************************************************************
Функция Подключить(Компонента, ПрогИд, Сканер)
   Рез = 0;
   Рез = 0;
   
   Если ЗагрузитьВнешнююКомпоненту("Scaner1C.DLL") = 0 Тогда
       ОписаниеРезультата = "Не удалось загрузить внешнюю компоненту Scaner1C.DLL";
   Иначе
       Попытка
           Сканер = СоздатьОбъект("AddIn.Scaner45");
       Исключение
       КонецПопытки;
       
       Если ПустоеЗначение(Сканер) = 1 Тогда
           ОписаниеРезультата = "Не удалось создать объект внешней компоненты с программым идентификатром AddIn.Scaner45";
       Иначе  
           
           Сканер.AutoDisable = 1;
           Сканер.DataEventEnabled = 1;
           //Сканер.УстройcтвоВключено = 0;
           Сканер.УстройствоВключено = 1;
           
           Если Сканер.Результат <> 0 Тогда
               ОписаниеРезультата = "Не удалось включить устройство";
           Иначе
               Рез    = 1;
           КонецЕсли;
       КонецЕсли;
   КонецЕсли;
   
   Возврат Рез;
КонецФункции  // Подключить(()

//******************************************************************************
Функция Отключить(Сканер)
   //Сканер.УстройствоВключено = 0;      
   Возврат 1;
КонецФункции // Отключить()
           
//******************************************************************************
// Параметры:
//  Сканер     - ссылка на объект внешней компоненты.
//  Флаг
//
// Возвращаемое значение:
//  1 - успешное завершение, 0 - произошла ошибка
//
// Описание:
//  Если параметр Флаг = 1, компонента при получении штрихкода срузу будет
//  посылать в Предприятие. Если Флаг = 0, компонента будет сохранять
//  полученные штрихкод в очереди.
//
Функция ПосылкаДанных(Сканер, Флаг)
   Сканер.DataEventEnabled = Флаг;
   
   Если Сканер.Результат = 0 Тогда
       Рез = 1;
   Иначе
       Рез = 0;
   КонецЕсли;
   
   Возврат Рез;
КонецФункции // ПосылкаДанных

//******************************************************************************
// Параметры:
//  Сканер     - ссылка на объект внешней компоненты.
//
// Возвращаемое значение:
//  1 - успешное завершение, 0 - произошла ошибка
//
// Описание:
//  очищает входную очередь сканера
//
Функция ОчиститьВход(Сканер)

   Для i = 1 По Сканер.DataCount Цикл
       Сканер.EventNumber = i;
       Сканер.DeleteEvent();
   КонецЦикла;    
   
   Если Сканер.Результат = 0 Тогда
       Рез = 1;
   Иначе
       Рез = 0;
   КонецЕсли;
   
   Возврат Рез;
КонецФункции // ОчиститьВход

////////////////////////////////////////////////////////////////////////////////
// ПРЕДОПРЕДЕЛЕННЫЕ ПРОЦЕДУРЫ
//
Процедура ПриОткрытии()
   Перем Сканер, Вкл, Парам;
   
   СтатусВозврата(0);
   Форма.Параметр.Выгрузить(Парам);
   Форма.Параметр.УдалитьВсе();
   
   Если Парам.РазмерСписка() = 0 Тогда
       Рез = 0;
   Иначе
       
       Процесс = НРег(Парам.Получить("Процесс"));
       
       Если Процесс = "подключить" Тогда
           Компонента = Парам.Получить("Компонента");
           ПрогИд     = Парам.Получить("ПрогИд");
           Рез        = Подключить(Компонента, ПрогИд, Сканер);
           
           Форма.Параметр.Установить("Объект"    , Сканер);
           
       ИначеЕсли Процесс = "отключить" Тогда
           Рез = Отключить(Парам.Получить("Объект"));
       
       ИначеЕсли Процесс = "посылка_данных" Тогда
           Сканер = Парам.Получить("Объект");
           Флаг   = Парам.Получить("Флаг");
           
           Рез = ПосылкаДанных(Сканер, Флаг);
           
       ИначеЕсли Процесс = "очистить_вход" Тогда
           Сканер = Парам.Получить("Объект");
           Рез    = ОчиститьВход(Сканер);
       
       Иначе
           Рез = 0;
       КонецЕсли;
   КонецЕсли;

   Форма.Параметр.Установить("ОписаниеРезультата", ОписаниеРезультата);
   Форма.Параметр.Установить("Результат"        , Рез);
           
   
КонецПроцедуры // ПриОткрытии
49 Skom
 
25.12.08
06:59
Процедура ОбработкаВнешнегоСобытия(Источник,Событие,Данные)
   // Процедура разбирает штрих-код, считанный сканером
   // и заполняет строки накладной
   Перем ВремКарта; //Слава
   Перем КонтекстДокумента;                      
   
   Если Событие = "BarCodeValue" Тогда
       Если глПолучитьКартуПоШтрихкоду(Данные, ВремКарта, "БонусныеКарты") <> 0 Тогда
           БонуснаяКарта = ВремКарта;
           ПосчитатьСуммуБонуса();
       Иначе
           БонуснаяКарта = ПолучитьПустоеЗначение("Справочник.БонусныеКарты");
       КонецЕсли;
       
       ОбновитьНадписи();
       
       // Обработка закончена. Готовы к получению нового штрихкода.
       глСканерПосылкаДанных(1);
   КонецЕсли;

КонецПроцедуры // ОбработкаВнешнегоСобытия()
50 Стрелок
 
25.12.08
07:01
нет слов. человек который не слышит что ему говорят в помощи не нуждается. я пассссссссссс
51 Стрелок
 
25.12.08
07:02
автор внимательно посмотри примеры конфигураци с атоловского сата.

или пригласи специалиста
52 Skom
 
25.12.08
07:06
(51)

погоди...
обработка подключения....взята из ДРАЙВЕРОВ с сайта АТОЛа
т.е. все как в (1) по ссылке номер раз
53 Skom
 
25.12.08
07:07
т.е. сканер подключается.
библиотека подключена.

вход то в процедуру ОбработкаВнешнегоСобытия()
все равно должна быть? так?

или я что то не понимаю.
54 Стрелок
 
25.12.08
07:07
(52) а обработка мля внешнего события из какой жопы взята? я тебе чо тут попугай что раз талдычить?
55 Skom
 
25.12.08
07:10
(54) нек открывается у меня мессаг по стрелочке
56 Skom
 
25.12.08
07:14
(54)

подключаю сканер с помощью внешней обработки
из комплекта драйверов с сайта АТОЛ
ОбработкаВнешнегоСобытия()
из конфиги которая была.
штатная обработка.
57 Skom
 
25.12.08
07:18
конфа для примера работы с драйвером сканера штрих кода

вот кусок глоб модуль

// Пример для 7.7
Перем Scaner Экспорт;  //Переменная для работы со сканером

Процедура ОбработкаВнешнегоСобытия(Источник,Событие,Данные);
Если Scaner.OldVersion<>0 Тогда
//Работа драйвера совместима с предыдущей версиией
// Источник="BarCodeScaner" (для других устройств свои названия)
//Событие="BarCodeValue", Данные=ПолученныеДанные
   Сообщить("Old Version <> 0");
   Сообщить("Источник: "+Строка( Источник ));
   Сообщить("Событие: "+Строка( Событие ));
   Сообщить(Строка("Данные от устройства: "+ Данные));
Иначе
//Работа драйвера не совместима с предыдущей версиией
// Источник="BarCodeScaner" (для других устройств свои названия)
//Событие="BarCodeValue", Данные=НомерСобытия
    Сообщить("Old Version = 0");
    Scaner.EventNumber=Число(Данные);
    Сообщить("Данные от устройства: "+Scaner.ScanData);
    Сообщить("Порт: "+Scaner.PortDescription);
    Сообщить("Модель: "+Scaner.DeviceDescription);
    Сообщить("Лог. устройство: " + Строка(Scaner.CurrentDeviceNumber) + " | " + Scaner.CurrentDeviceName);
    Scaner.DeleteEvent();
КонецЕсли;
 Scaner.DataEventEnabled = 1;
 Сообщить("Количество сообщений "+Строка(Scaner.DataCount));
КонецПроцедуры


Процедура ПриЗавершенииРаботыСистемы()
   // Отсоединение объекта
   Scaner = 0;
КонецПроцедуры

Если ЗагрузитьВнешнююКомпоненту("Scaner1C.DLL")<>0
Тогда
 Scaner = СоздатьОбъект("AddIn.Scaner45"); // Создание объекта сканера из внешней компоненты
 Scaner.AutoDisable = 1;
 Scaner.DataEventEnabled = 1;
 Scaner.OldVersion = 0;
 Сообщить("Внешняя компонента сканера штрих-кода успешно загружена");
Иначе
 Сообщить("Внешняя компонента сканера штрих-кода - Scaner1C.DLL не найдена");
КонецЕсли;

   
   
в отладчике ОбработкаВнешнегоСобытия()

НЕ ОСТАНАВЛИВАЕТСЯ.
сканер подключен. все норм
58 Стрелок
 
25.12.08
07:20
где "не останавливается"? в глобальнике?
59 Skom
 
25.12.08
07:45
всем пасиб...особенно
(58)
за консультацию в аське
60 Стрелок
 
25.12.08
07:47
истина проста - слушайте что вам говорят и делайте то что вам говорят.

топтались вс время рядом а оказывается автор не сделал то что я ему пять раз говорил. наука набудущее ;)
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший