Перехват клавиш, штрихкода и других событий в ТСД (на базе Аndroid) в 1С

12.12.24

Разработка - Разработка внешних компонент

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Программа для перехвата событий для Аndroid в 1С:
.apk 5,47Mb
2
2 Скачать (1 SM) Купить за 1 850 руб.

Начну сразу с терминологии. Хотя здесь речь пойдет об Android, здесь попытаюсь использовать термины, использованные программистами в 1С, чтобы для них все стало более понятным и привычным. Так что, писатели кода для Android, не судите строго.

Одно из понятий и терминологий Android - это Intent - "намерение", которое генерирует приложение Android. Позволю переименовать этот термин в понятный для программиста 1С - "Оповещение" и буду использовать его дальше. Для программистов 1С укажу еще: каждое такое оповещение имеет имя данных и сами данные. Причем для каждого оповещения мы можем указать несколько данных и придать им имена.

На свой работе я как-то столкнулся с проблемой передачи данных о коде нажатой клавиши в приложение для Android "Мобильный клиент" и сканируемый штрихкод. Очень хорошую идею о том, как это сделать, я посмотрел в статье "Обработка нажатия аппаратных кнопок на ТСД в мобильной платформе." На обзор было выставлено приложение, которое отлавливает код  клавиши и генерирует оповещение с определенным именем и в данных которого, передается код клавиши.  Если есть внешняя компонента, которая может отловить это оповещение, то с ее помощью мы можем прочитать код клавиши уже непосредственно в клиентском приложении 1С. Так я и поступил. Поставил на ТСД программу из вышеуказанной статьи и поставил очень замечательную внешнюю компоненту Игоря Кисиля из его статьи "Многофункциональная компонента для мобильной платформы: широковещательные сообщения (broadcasts), буфер обмена (clipboard), Bluetooth", которая может перехватить оповещение с любым именем и прочитать его данные. И все бы было хорошо, но почему то некоторые терминалы в одной и той же программе для одного и того же сервера выдавали ошибку "код ошибки "0", а другие работали.  Хотя в комментариях автор давал некоторые общие рекомендации, но все же проблема оставалась (причем для одних моделей сканеров все работало, для других нет). Тогда я попробовал установить другую внешнюю компоненту для сканера: "Использование встроенного сканера ТСД на Android в мобильном клиенте и мобильном приложении (драйвер сканера Android для 1С)". Она у меня запускалась и работала очень стабильно. Беда заключалась в том, что эта компонента может перехватить только одно оповещение и только данные, именованные одним именем. Допустим, что я настрою сканер штрихкода так, чтобы имя оповещения и имя данных при сканировании штрихкода совпадали с именем оповещения и данных, передаваемые от компоненты "Обработка нажатия аппаратных кнопок на ТСД в мобильной платформе." Но тогда, как мне понять, была ли нажата клавиша с кодом, например "123" или отсканирован штрихкод "123"?

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

Всё это побудило меня написать свой аналог приложения "Обработка нажатия аппаратных кнопок на ТСД в мобильной платформе", которое называется "Intents Catcher", которое может делать следующее.

1) Перехватывает код нажатой клавиши, кроме тех, которые добавлены в исключении

2) Перехватывает практически любое событие в Android

3) Перенаправляет данные, взятые из пп. 1) и 2) в новое событие с новым именем данных

4) Позволяет перенаправляемым данным добавить префикс и суффикс (окончание), чтобы потом по префиксу можно было понять, какое событие передано

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

6) Позволяет посмотреть код клавиши, штрихкод в самом приложении.

 

Прилагаю инструкцию, как это все должно работать на примере компоненты из статьи  "Использование встроенного сканера ТСД на Android в мобильном клиенте и мобильном приложении (драйвер сканера Android для 1С)".

 Допустим нас есть ТСД, на котором при чтении штрих-кода генерируется оповещение c именем, например "android.intent.barcode" и данными с именем "barcode" и поменять это никак нельзя. При этом нам надо  еще умудриться в приложение передать код нажатой клавиши и что-то еще другое...

1. Ставим приложение "Intents Catcher". В нем включаем возможность перехватывать клавиши и задаем имя единого оповещения, выходящего из приложения "android.intent.catcher", чтобы внешняя компонента получила ответ из этого приложения. В компоненте устанавливаем параметр "ActionName" с таким же значением:

ОбъектДрайвера.УстановитьПараметр("ActionName", "android.intent.catcher");

 

Выбираем "Output Intent"

 

 

Экран основного окна и меню.

  Настройка имени выходящего оповещения

 

 

2. Включаем возможность перехватывать коды клавиш из пункта меню "Keys trap". Присваиваем имя данных о коде, совпадающим с именем данные, которые способна обработать внешняя компонента - "data". Добавляем префикс, например: "key=<", и суффикс ">". Тогда внешняя компонента будет получать при нажатии клавиши и кодом "8" такие данные "key=<8>"

 

Настройки перехвата клавиш. "Exclude keys" означает, что не надо обрабатывать клавиши с указанными кодами

 

3. Добавляем в приложении возможность отловить событие от сканера штрихкода, а именно событие с именем "android.intent.barcode" и именем данных "barcode" и тоже пересылаем эти данные, но уже с другим именем "data" и добавляем префикс "barcode=<" и суффикс ">". В результате внешняя компонента будет получать штриход "1234567890" как "barcode=<1234567890>".

 

   
Список перехватчиков оповещений.
Сейчас он пуст. Нажимаем "ADD INTENT"
  Настройка перехвата оповещения от сканера   Список перехватчиков после добавления перехвата оповещения от сканера

 

Далее в программе 1С по префиксу мы уже понимаем, с чем мы имеем дело с клавишей или штрихкодом. Аналогичным способом можно будет добавить практически любое событие.

4. Возвращаемся в основное окно приложения. Теперь на надо запустить сервис, который будет отлавливать нажатие клавиш и настроенные оповещения, а затем пересылать их как новое оповещение. Переходим к сервису через пункт меню "Go to service".

Соглашаемся запустить сервис(нажимаем Allow)

 

   
Список сервисов.
Наш называется "Intents catcher service".
Переходим в него.
  Переводим ползунок "Use Intents catcher service" во включенное положение.   Сервис запущен.

 

Если мы вновь захотим изменить настройки, тогда после изменения настроек программы будет необходимо перезапустить сервис, т.к. он считывает настройки при старте сервиса. Для этого надо перейти к сервису, выключить ползунок "Use Intents catcher service", а затем снова его включить.

 

5. Теперь мы сможем проверить результаты своих настроек не только в 1С, но и в самом приложении в главном окне. При нажатии клавиши или при сканировании штрихкода в окне будет отображаться данные.

 

Данные при нажатии клавиш

 

 

6. Теперь необходимо указать имя принимаемых данных компоненте:

ОбъектДрайвера.УстановитьПараметр("ExtraName", "data");

 

6. Теперь необходимо внести изменения в обработчик внешнего события от драйвера в 1С, например, так:
 

Процедура ОбработатьСобытие(Источник, Событие, Данные) Экспорт
	Если Лев(Данные,5)="key=<" И Прав(Данные,1)=">" Тогда
		КодКлавиши = Сред(Данные,6,стрДлина(Данные)-7);
		//Обрабатываем нажатие клавиши
	ИначеЕсли Лев(Данные,9) = "barcode=<" И Прав(Данные,1)=">" Тогда
		Штрихкод = Сред(Данные,10,стрДлина(Данные)-10);
		//Обрабатываем штрихкод
	КонецЕсли;
КонецПроцедуры

 

И напоследок хочу поблагодарить всех авторов указанных мною выше статей за их огромный вклад в наше общее дело!

Android "Мобильный клиент" ТСД Штрихкод "Код клавиши"

См. также

Мобильная разработка Сканер штрих-кода Терминал сбора данных Управляемые формы Мобильная платформа 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Сбор заказов, инвентаризация, проверка ценников, просмотр полной информации об остатках и ценах со смартфона Онлайн - все это содержит в себе решение 1С "Штрихкод-информер" (штрих-код чекер). Отправка данных со смартфона выполняется либо напрямую в открытую форму документа, отсканировав QR-код, либо в общую корзину учетной системы, не подходя к компьютеру. Кассир или оператор сможет просмотреть список присланных данных и загрузить в любую форму, поддерживающую работу с ТСД. Для работы с мобильным приложением требуется опубликовать HTTP-сервис из поставляемого расширения.

3000 руб.

03.12.2018    60116    199    103    

174

Сканер штрих-кода Терминал сбора данных Мобильная разработка Монитор заказов Оптовая торговля Розничная торговля Ценообразование, анализ цен Программист Пользователь Платформа 1С v8.3 Мобильная платформа 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)

Простой мобильный ТСД (терминал сбора данных) сканер для 1С для смартфонов на iOS и Android, не требующий сложных настроек и установки дополнительных программ. Обмен между Вашей 1С и мобильным приложением осуществляется через облачный сервис и расширение конфигурации. Работает с конфигурациями УТ 11, ERP, КА2, Розница 2, Розница 3, УНФ 1.6, УНФ 3.0. Полнофункциональный демо-доступ для своей конфигурации можно запросить в настройках мобильного приложения - все необходимое придет на почту автоматически.

2000 руб.

22.04.2019    98721    599    189    

325

Логистика, склад и ТМЦ Сканер штрих-кода Терминал сбора данных Мобильная разработка Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

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

18550 руб.

28.04.2023    9962    15    2    

9

Разработка внешних компонент POS терминал Рабочее место Розничная торговля Программист Пользователь Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Рестораны, кафе и фаст-фуд Реклама, PR и маркетинг Управленческий учет Платные (руб)

Медиадисплей покупателя может отображать текущую покупку на кассовом месте, показывать видеорекламу, баннеры, во время простоя разворачивать рекламу на весь экран. Экран можно использовать в качестве графического меню-борда в кафе и видеовывески. В качестве устройства отображения можно использовать Android-планшеты, смарт-телевизоры с Android, мониторы или проекторы под управлением Windows или Linux-компьютера. Linux-версия успешно запускается на одноплатных компьютерах Raspberri Pi и Orange Pi. Настраивается ЛЮБОЙ ДИЗАЙН экрана при помощи встроенного графического редактора! Решение можно масштабировать от одного экрана до тысяч экранов с централизованным управлением.

18000 руб.

30.05.2017    54039    9    69    

46

Разработка внешних компонент Программист Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Платные (руб)

Внешняя компонента для конвертации PDF файлов в картинки без использования дополнительных программ. Работает на сервере и в тонком клиенте.

2400 руб.

25.06.2024    1126    3    4    

3

Разработка внешних компонент Телефония, SIP Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Внешняя компонента выполнена по технологии Native API для 1С 8.х, обеспечивает доступ к программным АТС Asterisk (FreePBX, Elastix) через AMI интерфейс. Через него можно управлять многими функциями Asterisk (определение номеров, перевод звонков, набор телефона и т. д.)

2400 руб.

04.05.2018    47297    124    66    

67

Разработка внешних компонент Программист Платформа 1С v8.3 Платформа 1C v8.2 Платные (руб)

Внешняя компонента, позволяющая посылать команды и получать ответы по GraphQL протоколу из 1С.Может быть использована при интеграции. В 1С работает на стороне "клиента".

4600 руб.

27.06.2023    3598    3    0    

5
Оставьте свое сообщение