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

12.12.24

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

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
Программа для перехвата событий для Аndroid в 1С:
.apk 5,47Mb
8
8 Скачать (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    61401    209    103    

178

Сканер штрих-кода Терминал сбора данных Мобильная разработка Монитор заказов Оптовая торговля Розничная торговля Ценообразование, анализ цен Программист Пользователь Платформа 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    101032    618    189    

330

Учет ОС и НМА Сканер штрих-кода Терминал сбора данных Логистика, склад и ТМЦ Платформа 1С v8.3 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Приложение Инвентаризация ОС и ТМЦ предназначено для инвентаризации основных средств и товарно-материальных ценностей, закреплённых за конкретным материально ответственным лицом или складом. В конфигурации 1С:Бухгалтерии 3.0 отсутствуют возможности генерации и работы со штрих-кодами для основных средств. Приложение позволяет генерировать и обрабатывать штрих-коды как для основных средств, так и для товарно-материальных ценностей (материалы, товары). В новом релизе появилась возможность работы с фотографиями объектов учета.

07.07.2023    3877    2    alfanika    0    

6

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

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

21000 руб.

28.04.2023    10633    17    3    

10

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

Позволяет автоматизировать работу с картинками. С помощью компоненты можно измерять размер изображений, поворачивать их, наносить водяные знаки, конвертировать из одного формата в другой. Будет очень полезна для интернет-магазинов и всех, кому постоянно требуется работать с различными графическими форматами. Выполнена по технологии NativeAPI. Работает с форматами: jpg (jpeg), png, bmp, gif, tif

3600 руб.

02.09.2010    77826    73    257    

191

Разработка внешних компонент Программист Платформа 1С v8.3 1C:Бухгалтерия 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 Платные (руб)

Внешняя компонента позволяет работать c TWAIN-совместимым оборудованием (сканерами, камерами) . Полностью совместима со стандартной TWAIN-компонентой из БСП и может применяться как ее замена без изменения вызовов, при этом может работать с 64-разрядной платформой, а так же имеет расширенную функциональность, например, сохранение результата непосредственно в PDF без использования сторонних утилит. Прекрасно работает на сервере, тонком клиенте и веб-клиенте (проверена работа в браузерах Google Chrome, Mozilla Firefox и Microsoft Internet Explorer).

3000 руб.

12.05.2020    29158    139    100    

92

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

Внешняя компонента позволяет печатать PDF файлы непосредственно из 1С, не используя при этом сторонних программ. Прекрасно работает на сервере, тонком клиенте и веб-клиенте. Основана на проекте PDFium из состава проекта Chromium/Chrome

1500 руб.

17.09.2018    37167    115    128    

116
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. vik070777 273 07.03.25 13:50 Сейчас в теме
А Ваша программа работает для Мобильного клиента?
3. chekonst 67 19.03.25 12:51 Сейчас в теме
(1) Она для Amdroid. Ее цель - пересылать собщения в том числе и клиенту.
2. vik070777 273 09.03.25 21:54 Сейчас в теме
я так понимаю что оно должно работать на 100% с компонентой "Использование встроенного сканера ТСД на Android в мобильном клиенте и мобильном приложении (драйвер сканера Android для 1С)". которая была удалена?
4. chekonst 67 19.03.25 12:52 Сейчас в теме
(2) Да и с другими компонентами тоже, которые могут получать сообщения из Андроид.
Оставьте свое сообщение