Общие требования к интеграции:
- Android 5.0 (API 21) и выше.
- 1С Платформа 8.3.16 и выше.
- Прикладное решение 1C должно предоставлять доступ с помощью веб-клиента (опубликовано на веб-сервере).
- Опубликованная база должна быть доступна на устройстве через веб-клиент.
Вопросы и помощь в телеграм t.me/onescan
Преимущества:
- Кроме указания адреса базы опубликованного веб-клиента, в приложении никаких настроек не требуется.
- Вся разработка происходит средствами 1С.
Возможности:
- Запуск веб-клиента 1С в приложении Android.
- Сканирование штрихкода, QR-кода. Получение данных со сканера штрихкода, камеры, Intent событий в коде модуля формы 1С для дальнейшей обработки.
- Фото с камеры, получение двоичных данных в 1С.
- Способы получения данных: Event listener (событие ввода), Data Intent (настраиваемая подписка на широковещательные сообщения), библиотека устройства Honeywell SDK (список моделей будет дополнятся по мере доступности устройств для разработки)
- Запуск на весь экран в режиме "встроенное рабочее место".
Разработка:
Обработка полученных данных происходит в модуле формы. Требуется подключение обработчика сообщений при открытии и отключение при закрытии формы:
&НаКлиенте
Процедура ПриОткрытии(Отказ)
//Подключение обработчика сообщений внешнего сайта
Если ОкноВнешнегоСайта.Доступно Тогда
ОбработчикСобытия = Новый ОписаниеОповещения("ПриПолученииСообщенияОтВнешнегоСайта", ЭтотОбъект);
ОкноВнешнегоСайта.ПодключитьОбработчикСообщений(ОбработчикСобытия);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
//Отключение обработчика сообщений внешнего сайта
Если ОкноВнешнегоСайта.Доступно Тогда
ОбработчикСобытия = Новый ОписаниеОповещения("ПриПолученииСообщенияОтВнешнегоСайта", ЭтотОбъект);
ОкноВнешнегоСайта.ОтключитьОбработчикСообщений(ОбработчикСобытия);
КонецЕсли;
КонецПроцедуры
В примере из обработки Examples1Scan.epf при получении данных с устройства Android в коде 1С срабатывает процедура ПриПолученииСообщенияОтВнешнегоСайта(Сообщение, ДополнительныеПараметры), которая в свою очередь вызывает процедуру ПриПолученииСообщенияОтУстройства(Данные), где параметр "Данные" - структура содержащая сообщение.
// Обработка сообщения полученного от устройсва
//
&НаКлиенте
Процедура ПриПолученииСообщенияОтУстройства(Данные)
//Ваш код...
СтруктураДанные = JsonВСтруктуру(Данные);
Если ЗначениеЗаполнено(СтруктураДанные) И ТипЗнч(СтруктураДанные) = Тип("Структура") Тогда
//Обработка данных по событиям
Если СтруктураДанные.Event = "scanResult" Тогда //результат сканирования
Штрихкод = СтруктураДанные.data;
ЭтотОбъект.ПолученныеДанные = Штрихкод;
ИначеЕсли СтруктураДанные.Event = "getAndroidID" Тогда //результат запроса уникального идентификатора приложения
AndroidID = СтруктураДанные.data;
ЭтотОбъект.ПолученныеДанные = AndroidID;
КонецЕсли;
КонецЕсли;
//
ЭтотОбъект.ПолученныйJson = Данные;
ПоказатьОповещениеПользователя(,,Данные, БиблиотекаКартинок.Информация32);
КонецПроцедуры
Так же есть возможность отправлять сообщения команды устройству. Например, запустить камеру, получить уникальный идентификатор устройства и тп:
&НаКлиенте
Процедура ОткрытьКамеру(Команда)
Сообщение = "startScanCamera"; //Запускает камеру для сканирвания
ОтправитьСообщениеУстройству(Сообщение);
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьКнопкуКамеры(Команда)
Сообщение = "enableScanCameraButton"; //Отображает кнопку камеры для сканирования
ОтправитьСообщениеУстройству(Сообщение);
КонецПроцедуры
&НаКлиенте
Процедура СкрытьКнопкуКамеры(Команда)
Сообщение = "disableScanCameraButton"; //Скрывает кнопку камеры для сканирования
ОтправитьСообщениеУстройству(Сообщение);
КонецПроцедуры
&НаКлиенте
Процедура СообщитьToast(Команда)
ТекстСообщения = "Привет, toast!";
Сообщение = "toast:" + ТекстСообщения; //Всплывающее сообщение, короткий период
//Сообщение = "toastLong:" + ТекстСообщения; //Всплывающие сообщение, длинный период
ОтправитьСообщениеУстройству(Сообщение);
КонецПроцедуры
&НаКлиенте
Процедура СообщитьSnackbar(Команда)
ТекстСообщения = "Привет, snackbar!";
Сообщение = "snackbar:" + ТекстСообщения; //Всплывающее сообщение, короткий период
//Сообщение = "snackbartLong:" + ТекстСообщения; //Всплывающее сообщение, длинный период
ОтправитьСообщениеУстройству(Сообщение);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьНастройки(Команда)
ОтправитьСообщениеУстройству("openSettings");
КонецПроцедуры
&НаКлиенте
Процедура ПолучитьAndroidID(Команда)
ОтправитьСообщениеУстройству("getAndroidID");
КонецПроцедуры
&НаКлиенте
Процедура ПолучитьДанныеПоGPS(Команда)
ОтправитьСообщениеУстройству("getLocation");
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьПриложение(Команда)
ОтправитьСообщениеУстройству("closeApplication");
КонецПроцедуры
Настройки:
Для подключения к базе 1С следует указать "Адрес веб-сайта" (пример. http://192.168.0.100) и "Имя публикуемой базы" (пример. DemoSSL/ru_RU/). Для явного указания языка запуска следует прописать "/ru_RU/", знак "/" обязателен в конце. Так же можно заполнить Пользователь и Пароль для автоматического входа.
Удалять непечатаемые символы при сканирование - очищает данные полученные при сканирование.
Режим запуска: встроенное рабочее место - база запускается в полноэкранном режиме без возможности пользователем закрывать окна и выбирать разделы.
Отображать кнопку настройки - кнопка настройки всегда будет отображатся. Так же настройки можно открыть через долгое или 7 частых нажатий кнопки Назад (Back button) устройства.
Методы сканирования:
Event listener - получает событие ввода данных возникшее на экране. Универсальный метод, работает практически на всех устройствах.
Data intent - в настройках Intent устройства можно прописать в Action свое ключевое слово по которому можно получать данные. Extra Key - имя свойства которое находится в Intent, например для Honeywell это "data". При указание intent обычно другие методы перестают работать.
Honeywell SDK - родная библиотека устройств Honeywell (тестировалось на CN51). Если у вас ТСД этой фирмы - то рекомендуется использовать данный метод сканирования, так как данные всегда получаются корректно независимо какие настройки указаны в самом устройстве.
Сканирование через камеру - используется библиотека сканирования штрих-кода для Android с использованием ZXing для декодирования.
Работоспособность всех указанных методов сканирования можно проверить прямо на экране настроек и выбрать подходящий. После удачного сканирование вверху отобразится результат сканирования с указанием источника.
Полезные ссылки:
Как опубликовать веб-сервера Apache или IIS. Публикация базы 1С.
Пример обработки полученных данных на форме 1C Examples1Scan.epf
Вопросы и помощь в телеграм t.me/onescan
Приложение в Google Play: 1Scan