Android cервис для передачи штрихкода в мобильное приложение 1С

Приложение android (сервис), реализованное для перехвата события считывания штрихкода и передачи события в мобильное приложение 1С.

Компания закупила ТСД от компании Urovo (i6200s), но с утилитами Acode Tools данный сканер штрихкодов не работает, поэтому было реализовано android приложение, которое работает как сервис перехвата событий считывания штрихкодов и передачи его в мобильное приложение 1С.

В отличие от того же Acode Tools приложение не умеет, к сожалению, передавать корректно штрихкод в 1С, если в списке баз указано больше одной базы: в этом случае мобильное приложение выдает ошибку.

Обработку событий произвожу следующим образом:

Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "1" Тогда
//Параметр уже содержит текстовое представление штрихкода
ОбработатьПолучениеШтрихкода(Параметр);
КонецЕсли;
КонецПроцедуры

Так как у нас в конфигурации мобильного приложения используются утилиты Acode tools, т.е. в процедуре ПриНачалеРаботыСистемы() модуля управляемого приложения вызывается обработчик глобального оповещения:

УтилитыACODEМодульДляОповещений.ПодключитьГлобальноеСобытиеОповещения();

 

Update 2024.12.07. Добавлена новая apk для работы со сканерами iData (протестировано на iData 95W)

P.S. Данное приложение работает без установки утилит Acode, главное чтобы был подключен обработчик глобального оповещения о событиях.

P.P.S. Может быть, кому-нибудь пригодится.

35 Comments

  1. flyer

    но с утилитами Acode Tools данный сканер штрихкодов не работает.

    не выясняли причину почему не работает? acode штука популярная не видел чтобы кто то написал что у него не работает.

    Reply
  2. Meteorage

    (1) Там свои intent’ы перехватываются, а тут они другие, поэтому пришлось писать дополнительное приложение. Я списывался на форме Acode tools, но результата это не принесло.

    Reply
  3. bulpi

    В 1с штрихкод передается, вызывая внешнее событие ?

    Reply
  4. Meteorage

    (3) Нет. Обработку событий я обрабатываю так:

    Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
    Если ИмяСобытия = «4» ИЛИ ИмяСобытия = «1» Тогда
    //Что-то делаем
    КонецЕсли;
    КонецПроцедуры
    

    P.S. Обновил публикацию.

    Reply
  5. bulpi

    (4)

    Непонятно…

    Вот из синтакс-помошника:

    ОбработкаОповещения(<ИмяСобытия>, <Параметр>, <Источник>)

    Описание:

    Возникает при оповещении всех созданных форм методом глобального контекста Оповестить.

    Если не секрет, а как Вы вызываете метод Оповестить(), на который реагирует Процедура ОбработкаОповещения ? Через Com ? А разве так можно на мобиле ?

    Reply
  6. Meteorage

    (5) Прошу прощения за не совсем полный ответ. Я вчера был не совсем адекватный.

    Все просто: у нас используется утилиты Acode Tools и в модуле управляемого приложения расположен код:

    УтилитыACODEМодульДляОповещений.ПодключитьГлобальноеСобытиеОповещения();
    

    И еще небольшое уточнение: ИмяСобытия = «1»

    Reply
  7. bulpi

    Спасибо.

    Но об этом надо бы в публикации написать, тогда не было бы вопроса.

    Reply
  8. Meteorage

    (7) Вам спасибо за уточнения, публикацию поправил.

    Reply
  9. nytlenc

    Не работает проводной сканер HoneyWell MS5145, брал ACODE отсюда http://infostart.ru/public/310565/ стоит версия 2.08 в списке всего одна база (ACODE тестовая) в их конфигурации добавил только проверку на «ИмяСобытия = «1»». Сервисы ACODE и Ваш запущены. Ничего не происходит. Если считывать в текстовое поле то сканер разумеется считывает как клавиатура — тоесть сканер подключен и работает.

    //УтилитыACODEМодульДляОповещений — тут идет подключение глобального оповещения.
    &НаКлиенте
    Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
    Сообщить(ИмяСобытия + » » + Параметр + » » + Источник);
    Если ИмяСобытия = «4» ИЛИ ИмяСобытия = «1» Тогда //если это событие блютуз сканера, то записываем штрихкод.
    ПолучениеСообщения(Параметр)
    КонецЕсли;
    КонецПроцедуры
    

    Показать

    Reply
  10. Meteorage

    (9) А мое приложение и не рассчитано на работу с этим сканером, оно предназначено только для ТСД Urovo i6200 и подобные ему.

    Reply
  11. nytlenc

    (10) а вы не могли бы поделиться исходником, чтобы я доработал для своих нужд?

    Reply
  12. AlexF1983

    Добрый день, Всеволод!

    Мы задумались о приобретении Urovo i6200s.

    Данный ТСД выпускается с тремя вариантами считывателя, что можно понять по первым двум буквам в модели:

    Mindeo (SL), Honeywell N3134 (SH), Motorola SE955 (SS).

    Не могли бы вы уточнить, какая именно модель используется у Вас? Думаю другим таким же «задумавшимся» тоже будет интересно…

    В идеале будет если получится сообщить полную модель, например: Urovo MC6200S-SH1S2E000H

    А то купим в надежде на ваш сервис, а он «не взлетит»…

    Reply
  13. Meteorage

    (12) Добрый день! Единственное чем могу помочь, это скинуть фото с коробки в которой наша компания его купила. Просто все эти ТСД шли непосредственно из китая. Если будут еще вопросы и я в силах ответить на них, то я отвечу.

    Reply
  14. AlexF1983

    (13) Так коробка и ТСД на фото — это i6300, а в статье речь про i6200.

    Reply
  15. Meteorage

    (14) Все просто. На момент написания статьи, мне предоставляли этот же ТСД (кустарного производства), но с маркировкой i6200. Для него я и разрабатывал приложение. После пилотного проекта компания закупила ТСД и их привезли вот с такой маркировкой. Так что прошу прощения, я сам нахожусь в легком диссонансе от этой ситуации.

    Reply
  16. Grivba

    Прошу уточнить.

    Какие настройки необходимо установить в DataWedge для передачи штрихкода и корректного перехвата.

    Reply
  17. Grivba

    Ошибка при синтаксическом анализе пакета.

    Android 4.1.

    Reply
  18. Meteorage

    (16) никакие, мое приложение перехватывает интент и передает его в 1с. Оба файла протестированы на рабочих тсд.

    (17) Вы что именно скачивали?

    Reply
  19. Grivba

    Scaner_barcode.apk

    Reply
  20. Meteorage

    (19) Он предназначен для работы со сканерами UROVO, у Вас какой фирмы ТСД?

    Reply
  21. Grivba

    Symbol MC32

    На Android 4.1

    Работа со сканером через DataWedge

    Reply
  22. Meteorage

    (21) Мои текущие публикации, не помогут Вам, Но я могу попробовать помочь Вам.

    Reply
  23. Grivba

    Было бы очень хорошо.

    Reply
  24. ritd

    Добрый день!

    А вот это «УтилитыACODEМодульДляОповещений.ПодключитьГлобальноеСобытиеОповещения();» откуда взять? Нужно еще что-то от acode устанавливать?

    Reply
  25. Meteorage

    (24) Добрый день. У нас на предприятии используется утилиты ACODE только для push-уведомлений. По сути можно самому определить этот обработчик глобального оповещения и все.

    Reply
  26. AlexF1983

    Добрый день.

    В связи с выходом мобильного клиента, задумались о переводе ТСД на мобильный клиент.

    Есть возможность доработать Ваше приложение?

    Насколько хватает моих дилетантских познаний, нужно передавать ШК не в приложение com.e1c.mobile а в приложение com.e1c.mobile.client. В остальном все должно работать также.

    Заранее спасибо за помощь!

    Reply
  27. Meteorage

    (26) доброго времени суток. На Ваш вопрос пока не могу дать ответ. Мне нужно посмотреть более детально.

    Reply
  28. user708791_ared2000

    (27) Тоже интересует этот вопрос

    Reply
  29. Meteorage

    (28) нельзя) пробовал не в моих силах из-за того что закрыли дырку которой я пользовался для написание текущего приложения

    Reply
  30. marat3581525

    Автор, приветствую тебя!

    Установил компоненту из твоей публикации на свой ТСД.

    Захотел протестировать: создал конфигурацию для мобильного приложения, создал в ней обработку и добавил форму. Потом к этой форме добавил процедуру «Обработка оповещения». Запускаю на своем тсд, нажимаю на кнопку сканирования — а форма на 1С не реагирует никак. Что делаю не так, подскажи!

    Reply
  31. Meteorage

    (30) Приветствую. Ты подключил при старте системы подключение глобального обработчика оповещения? И какая платформа на мобилке?

    Reply
  32. marat3581525

    (31)Привет.

    1. Да, в модуле управляемого приложения в ПриНачалеРаботы системы прописал эту процедуру подключения глобального обработчика оповещения, которая ссылается на клиентский модуль.

    Также пробовал брать другие уже готовые мобильные типовые решения где тоже это прописано сразу — также не срегариовал на сканер.

    2. Платформа стоит 8.3.15, т.е. свежая.

    Reply
  33. Meteorage

    (32) При использовании свежей платформы это не работает, так как с обновлением политики безопасности google был прикрыт механизм глобального оповещения. Следовательно нужно использовать более позднюю платформу

    Reply
  34. marat3581525

    (33) Вот оно что, понятно. Спасибо. Автор, не подскажешь какую версию мобильной платформы ставить?

    Версия Андроида получается тоже влияет на это?

    Reply
  35. Meteorage

    (32) для более поздних релизов я пробовал:

    https://forum.infostart.ru/forum28/topic186089/

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *