gifts2017

Подключение сканера к 1С Предприятие 8.3

Опубликовал Денис Чумак (dchumak) в раздел Оборудование - Сканер штрих-кода

Подключение сканера к 1С Предприятие 8.3 (обычные и управляемые формы)

Сначала с подключением к конфигурации на обычных формах. 


Открываем модуль обычного приложения и пишем вот такой код:

 

Перем Сканер Экспорт;

 

Процедура ПриНачалеРаботыСистемы() 

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

Попытка
   // Загрузка внешней компоненты
   ЗагрузитьВнешнююКомпоненту("D:\ChumakDV\БАЗЫ\8.2\Сканер\Scaner1C.dll");
Попытка
  // Создание объекта
  Сканер = Новый("AddIn.Scaner45");
  Сканер.OldVersion = 1;
  Исключение
  Сообщить("Объект не найден!");
КонецПопытки;
Исключение
  Сообщить("Внешняя компонента драйвера не найдена");
КонецПопытки;

КонецПроцедуры

 

Процедура ПриЗавершенииРаботыСистемы()

   // Отсоединение объекта
   Если Константы.СканерИспользуется.Получить() Тогда
      Сканер = 0; 
   КонецЕсли;

КонецПроцедуры

Перед этим нужно в каталог информационной базы скопировать файл Scaner1C.dll и зарегистрировать его через regsvr32.exe

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

 

 

Получение информации со сканера.

Для этого используется процедура ВнешнееСобытие(Источник, Событие, Данные), где:

Источник - источник события

Событие - вид события, нам нужно событие BarCodeValue

Данные - данные, полученные со сканера.

Примеры обработок внешних событий:

// получаем штрихкод товара

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

// открываем документ по штрихкоду

Процедура ВнешнееСобытие(Источник, Событие, Данные)

// данные со сканера ШК
Если Событие = "BarCodeValue" Тогда
ШКДок = СокрЛП(Данные);
НайтиИОткрытьДокумент(ШКДок);
КонецЕсли;

КонецПроцедуры

Процедура НайтиИОткрытьДокумент(ШКДок)

Попытка
ДокПриходная = Документы.Приходная.НайтиПоРеквизиту("ШКДокумента", ШКДок);
ДокПриходная.ПолучитьФорму("ФормаДокумента").Открыть();
Исключение
Сообщить("Документ со штрихкодом " + СокрЛП(ШКДок) + " не найден!");
КонецПопытки;

КонецПроцедуры

 

Подключение сканера в режиме управляемого приложения.

Осуществляется такой же функцией ЗагрузитьВнешнююКомпоненту. Единственное отличие - код для загрузки нужно прописать в модуле управляемого приложения. Запуск программы нужно производить в режиме толстого клиента, иначе компонента не загрузится.

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

 

Работа с данными сканера осуществляется также с помощью процедуры ВнешнееСобытие.

См. также

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

Комментарии

1. Сергей Галюк (dj_serega) 19.11.14 10:15
А учитываются Не модальные вызовы?
Список можно посмотреть тут.
2. Павел Алексеенко (qwinter) 19.11.14 10:27
и зачем БПО придумывали...........
androgin; vi.rus; +2 Ответить 1
3. Сергей Галюк (dj_serega) 19.11.14 11:05
4. Виталий Барилко (Diversus) 19.11.14 11:15
(3) Библиотека подключаемого оборудования
5. Сергей Галюк (dj_serega) 19.11.14 11:21
6. Павел Алексеенко (qwinter) 19.11.14 12:43
(5) dj_serega, БПО это такая же библиотека, как и БСП. Встраивается в конфу или в БСП в течении получаса.
7. VVV (V_V_V) 19.11.14 17:27
(6) Ну вот зачем секрет выдал? Теперь все кому не лень будут использовать решения из БПО. А если узнают что оттуда можно выдрать и терминалы, и электронные весы, и фискальные регистраторы и еще массу вкусностей - пропадет проект...
8. Роман Морозов (vertkov2010) 20.11.14 08:47
Статья очень хорошая, автор напиши пожалуйста статью по подключению дисплея покупателя к 1С Предприятие 8.3
9. Денис Чумак (dchumak) 20.11.14 09:23
(8) vertkov2010,
с таким оборудованием в нашей организации не работают, поэтому ничего написать не могу.
10. Денис Чумак (dchumak) 20.11.14 09:25
(7) V_V_V,
(6) qwinter,
статья написана в ознакомительных целях, либо для людей, только начинающих изучать 1С, либо для небольших авторских разработок. Если вам удобнее работать через БПО - пожалуйста, но, я думаю, найдутся и те, кому будет полезна данная публикация.
Aleksandtmt; +1 Ответить 1
11. Павел Алексеенко (qwinter) 20.11.14 13:56
(10) dchumak, не только мне, но и еще примерно 80% разработчиков 1С. А по поводу полезности, есть замечательная статья про точку абсурда: http://infostart.ru/public/308140/
12. Денис Чумак (dchumak) 21.11.14 05:32
(11) qwinter,
Этот бесконечный холивар. Все зависит от условий, в которых функционирует программный продукт, срок его действия и прочие факторы. Одно дело, когда внедряется конфигурация в т.н. "идеальных условиях" - типовой продукт, находящийся на поддержке, минимум доработок и т.д. - конечно, удобнее использовать стандартные библиотеки БСП, БПО и т.д. В том случае, если конфигурация используется долгое время (больше 10 лет), большим количеством пользователей, идут постоянные доработки, работает много программистов в штате - не всегде все идет так гладко, как хотелось бы. И достаточно часто используются не совсем "правильные" методы. Увы, не все так гладко в жизни, как хотелось бы. Так сказать, суровые жизненные реалии. Спасибо за комментарии.
13. Олег (oleg_km) 26.11.14 09:39
(12) Это вера истинных внедренцев в непогрешимость различных Библиотек Подсистем от 1С. Еще они забывают, когда появилась 1С 8, а когда эти Библиотеки. Они может все это время сидели и ждали, когда же 1С снизойдет до разработки Библиотеки Подсистем. Нормальные разработчики уже давно свои написали
14. Павел Алексеенко (qwinter) 26.11.14 10:19
(13) oleg_km, ну так давайте вспомним в каком году 1С выпустила "Обработка обслуживания "1С: Сканер штрихкода", в 2005? в 2006? БПО вышла два года назад. Но такие "гении внедрения" как вы продолжаете писать велосипеды, аналоги которых 1С выпустила еще 8-9 лет назад.
GreenDragon; orfos; адуырщдв; identificator; +4 Ответить
15. Роман Анисимов (RomanBor) 27.11.14 07:25
При подключении сканера в 7.7 по похожему алгоритму столкнулся с проблемой, через openvpn были соединены два цеха база одна все работают по rdp(терминал), сканер настроен в разрез клавиатуры, и в настройках есть такая штука как чувствительность, и на удаленной точке время прохода пакета плавает, и компонента думала что это не сканер а клава и считала что ШК(Штрих-код) кончился,и ШК приходит урезанный.
Поборол только тем что на клиентах которые стоят удаленно делалась форма обработки в которую без всякой компоненты в поле ввода вводился шк со сканера, символ "возврат коретки" посылался сканером как префикс шк, и все коды собирались в таблицу, после кнопки принять весь набор штрих-кодов обрабатывался

ЗЫ: это просто для информации
16. Андрей Тарлыков (Tarlich) 27.11.14 10:33
(15) RomanBor, Спасибо! самая полезная инфа с сей страницы -))
17. Сергей Карташев (Elisy) 27.11.14 14:45
(0) Форма, которая появилась в Сервис-Параметры очень похожа на настройку драйвера считывания штрих-кодов АТОЛ. Есть подозрение, что в статье описана не работа с драйвером от 1С, а работа АТОЛ-драйвера. Последний драйвер от 1С можно выдернуть из БПО. Инициализируется он через ПрогИД = "AddIn.Scanner" (а не AddIn.Scaner45, как в статье).
Удалось выяснить, что сканер штрих-кода 1С может считывать также RFID-метки через считыватель с эмуляцией клавиатуры. А вот АТОЛ-драйвер не может справиться с такой задачей.
orfos; sir.wbg; +2 Ответить 1
18. Роман Ложкин (webester) 29.11.14 12:35
(12)Так и не понял, что мешает подключить библиотеку? Суровые реалии или другие программисты против? Кто из них встал между вами и библиотекой?
19. Роман Ложкин (webester) 29.11.14 12:41
(17)Да вроде драйвер от 1С загружает. Грузить библиотеку с "D:\ChumakDV\БАЗЫ\8.2\Сканер\Scaner1C.dll", особенно в базе с "суровыми реалиями", "большим количеством пользователей" и "работает много программистов в штате" вообще не вариант да и смысла как то не могу найти.
20. sir wbg (sir.wbg) 01.12.14 07:26
Читаю хор!
Все поют о своем.
Для человека пришедшего со стороны.
Видно. Что обзор методов подключения оборудования.
Который прекратил бы этот "базар" всем лень написать.
Приходится поддерживать разные конфигурации.
Созданные в разное время. С разными библиотеками.
С rdp и без. По сom и в разрыв.
Набирается приличная статья.
Судя по актуальности вопроса, нужная статья!
Достойные половинчатых статей полный инфостарт.
Реально тратим время на просеивание крупиц.
А споры вообще не к лицу.
Ни одному не под силу?
Всем слабо?!!!
Давайте вместе писать!
Не для себя ради.
21. Роман Анисимов (RomanBor) 04.12.14 09:41
(20) sir.wbg,
А на хрена она статья то, вся информация в "Библиотеке Подключаемого оборудования", там все есть, и сканер желательно цеплять по com порту
ВСЕ
22. Виктор Назаров (androgin) 10.12.14 16:07
Для себя я сделал так:

////////////////////////////////////////////////////////////­///////////////

Процедура ПодключениеСканера() Экспорт
    Если НЕ ПодключитьВнешнююКомпоненту("ОбщийМакет.ДрайверАТОЛСканерШтрихкода", "АТОЛСканер", ТипВнешнейКомпоненты.COM) Тогда
        Оповещение = Новый ОписаниеОповещения("УстановитьСканер", ЭтотОбъект);
        НачатьУстановкуВнешнейКомпоненты(Оповещение, "ОбщийМакет.ДрайверАТОЛСканерШтрихкода");
        Возврат;    
    КонецЕсли;
    ПодключитьСканер();
КонецПроцедуры

Процедура УстановитьСканер(Параметры) Экспорт
    ПодключитьВнешнююКомпоненту("ОбщийМакет.ДрайверАТОЛСканерШтрихкода", "АТОЛСканер", ТипВнешнейКомпоненты.COM);
    ПодключитьСканер();
КонецПроцедуры

Процедура ПодключитьСканер()
    Попытка
        глСканер = Новый ("AddIn.АТОЛСканер.Scaner45");
    Исключение
        ПоказатьПредупреждение(, "Компонента сканера не подключена");
    КонецПопытки; 
КонецПроцедуры
...Показать Скрыть
23. Денис Чумак (dchumak) 11.12.14 05:32
(22)
Спасибо, я читал, что так через макеты тоже можно подключать.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа