IE 2017

"Внешнее событие" и мобильная платформа 1С

0. dewersia dewersia (dewersia) 52 08.09.16 23:05 Сейчас в теме
Внешние компоненты в Android для Мобильной Платформы 1С или как вызвать внешнее событие, когда его нет.

Перейти к публикации

Комментарии
1. Evgeny Goryachev (gorevg) 8 09.09.16 06:15 Сейчас в теме
Интересно. Сейчас мы тоже пишем мобильное приложение под ТСД. Надо иметь ввиду. Спасибо!
2. Evgeny Goryachev (gorevg) 8 09.09.16 10:25 Сейчас в теме
Возможно ли купить у вас получившийся внешний сервис? или выложите его...
3. bulpi bulpi (bulpi) 113 09.09.16 12:19 Сейчас в теме
Это здорово и очень полезно. Было бы, вот только "внешний сервис, работающий в фоновом режиме" для Андроида я не напишу :( ибо я просто 1с-ник. И таких миллион.
4. Вова Вишин (Tahallus) 421 09.09.16 15:54 Сейчас в теме
Это если можно сделать приложение на android которое будет это сообщение отправлять.
А бывает что только активное приложение может работать с оборудованием.
Тогда только потрошить платформу и внедрять код.
5. dewersia dewersia (dewersia) 52 09.09.16 17:56 Сейчас в теме
(2) gorevg, Добрый день, в воскресенье выложу сервис. Не стал этого делать так как достаточно специфичное решение под конкретный аппарат, под каждый аппарат придется его переделывать, использовать свои библиотеки и так далее. Основной задачей было рассказать как можно реализовать вызов внешнего события в Мобильной Платформе.
6. dewersia dewersia (dewersia) 52 09.09.16 17:58 Сейчас в теме
(3) bulpi, Исходники как уже писал выше, выложу в воскресенье, это как раз и есть сервис работающий в фоновом режиме, 1С запускает сервис, а дальше этот сервис отправляет ей сообщения.
7. dewersia dewersia (dewersia) 52 09.09.16 18:04 Сейчас в теме
(4) Tahallus, Хм, тогда встает вопрос если это отдельное приложение, которое работает с оборудованием, неужели оно никак не передает данные? А если приложение этого не делает то тогда для чего оно? Такое узкоспециализированное оборудование тогда никак не может быть внедрено в учетную систему компании. Поправьте меня если это не так.
8. Вова Вишин (Tahallus) 421 10.09.16 20:55 Сейчас в теме
(7) проблема в том что только активное приложение может работать с СШК по serialport. можно сделать отдельное приложение которое будет работать и отправлять сообщение в 1с, но когда оно активно. Это как с аппаратными клавишами, их нажатие может ловить только активное приложение, если конечно прошивка не изменена.
9. Дмитрий Шерстобитов (DitriX) 2499 11.09.16 00:14 Сейчас в теме
Как тут все глубоко ошибаются :)
На счет статьи - таки да, надо отправлять ID, чем это чревато? Создайте две базы в списке и увидите.

Мы (я про фирму ACODE) сделали проще в своих терминалах - у нас не надо нарушать лицензионной соглашение 1С, что делает автор в данной статье :)
Это конечно прикол, я не думаю что реально это будет кто-то проверять, но иди и знай :)

Вопрос номер два - зачем вы выдумывали велосипед? Видь есть Acode Tools, которые не только умею работать с блютуз сканерами, но и умеют еще кучу всего, из без танцев с бубном, как сделали вы сейчас.

З.Ы. Велосипед это хорошо, но все же - вы просто не знали про утилиты, или они вам чем-то не подошли?
10. dewersia dewersia (dewersia) 52 11.09.16 11:24 Сейчас в теме
(9) DitriX, Добрый день, насчет нескольких баз, в списке несколько баз доступно только в платформе для разработчика, которую кстати нельзя использовать для конечного приложения, поэтому в какой роли выступает ID для отдельного приложения не понятно. Я кстати описал это ограничение в статье. Ваши утилиты это круто, мы их тоже изучали, но я так понял считывание штрих кода все равно происходит в отдельном окне, а не внешним событием, что нас не устраивало. По поводу вмешательства в платформу, это спорный вопрос, ведь исходный код платформы не изменен, изменены только лишь разрешения, которые кстати говоря определяет сам разработчик.

По поводу сканеров, у нас СШК встроенный и в его настройках можно выбрать не эмуляцию клавиатуры, а передачу данных BroadCast сообщением, для него есть SDK под андроид, что и дало возможность использование такого метода, с блютуз сканерами боюсь так действительно не получится, хотя наверное и тут все зависит от конкретной модели и ее возможностей.

Ну и опять же я не пытался привязаться к конкретной задаче, просто работа с торговым и складским оборудованием это наилучший пример. Я хотел лишь показать как можно вызвать пресловутое внешнее событие из внешней компоненты или любого другого приложения на андроид.
11. dewersia dewersia (dewersia) 52 11.09.16 11:37 Сейчас в теме
(8) Tahallus, Тут согласен, но это как раз ограничение аппаратных средств, тут надо смотреть, может у производителя есть библиотеки для работы с этим аппаратом, изучать их возможности и если это становится не возможным тогда решать нужен вообще такой аппарат или нет, хотя я бы сказал что нет ничего не возможного, я не отношусь к гуру android программистов, но если бы у меня стояла такая задача я бы копал в сторону сервиса, который бы перехватывал нажатие клавиш, думаю что это вполне возможно. А ели можно перехватить нажатие клавиш тогда их обработка и передача это дело техники.
12. dewersia dewersia (dewersia) 52 11.09.16 11:38 Сейчас в теме
Как и обещал, исходники сервиса разместил.
13. Дмитрий Шерстобитов (DitriX) 2499 12.09.16 00:13 Сейчас в теме
(10) не смотрели вы утилиты, так как там именно через уведомления, неужели вы думали, что мы выпустим такой бред - сканирование в активное поле?
Мало того, еще с 8.3.4, где не было уведомлений - мы эмулировали через смс :) И даже в нескольких релизах 8.3.х - был баг с уведомлениями, они тупо не работали, так что при тестах - надо это учитывать, но мы выключивались тем, что было резервное - смс. Так что у нас там немерянно приколов было.

А про утилиты - всеравно обратите внимание, ибо там куча функций, которые точно нужны на ТСД :)

На счет сканера штрихкода - не понял до конца, наши утилиты поддерживают все сканеры штрихкодов, которые можно подключить по блютузу в SPP режиме, т.е. не в режиме эмуляции. И для этого не надо ковырять ничего.
В вашем случае - я так понял что у вас именно тсд на андроид. Ну тут да, мы для своих тоже отдельные модули пишем, но они имеют обратную совместимость и таки опять - без ковыряния манифестов :)

Ну в целом - да, статья ценная для тех, кому потребуется аналогичное решение проблем. :)
Теперь будет куда отправлять народ с аналогичными вопросами :)
14. dewersia dewersia (dewersia) 52 12.09.16 06:06 Сейчас в теме
(13) DitriX, Тогда примите мои извинения, значит что-то я упустил. Мне почему-то показалось что сканирование происходит в отдельном окне. Правда один из вариантов, который я еще вижу это push- уведомления ), для которых можно поднять свой сервер и гонять их через него, а что делать если нет соединения с интернет и мобильной связи? Я конечно понимаю, что сейчас это звучит дико, но все же бывает всякое, как тогда быть?
15. Александр Шакмаев (shakmaev) 331 12.09.16 10:48 Сейчас в теме
(9) DitriX, на сколько я понимаю, ваше решение - это решение только для ваших терминалов. Например, Chainway 2D Soft без SDK не будет ничего слать, кроме как Keyboard Emulator.
В случае с параметром base, Дмитрий прав, 2 и более базы будут работать некорректно, но это не проблема.

Чтобы подставить значение base, можно при старте системы прочитать его из файла bases.v8i, и передать интент в сервис, например.
Вот так выглядит список файлов:
https://yadi.sk/i/a-sooEt8v44tv
Вот так читать например ПриОткрытии:
/data/data/"+ПолныйИД+"/files/1C/1cem/ibases.v8i
16. dewersia dewersia (dewersia) 52 12.09.16 19:27 Сейчас в теме
(15) shakmaev, Добрый день, большое спасибо за подсказку по поводу ID. Я до него так и не докопался, да и в моем случае мне это было не нужно по крайне мере в текущей задаче.
17. Дмитрий Шерстобитов (DitriX) 2499 14.09.16 02:17 Сейчас в теме
(14) нет, опять не верно поняли, у нас механизм работает так же, как и вы свой описали, только мы дергаем строенны в 1с бродкасты, а вы их перименовываете.
Так что никаких пушей и интрнетов не надо :)

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

Так ID вы не прочитаете, у вас 2 базы, и все. Какой ID брать? Правильней - получать путь временного каталога и из него вырезать конкретный ID :)
18. vasek (iliabvf) 21.09.16 15:56 Сейчас в теме
(17) DitriX, как то пытался получить у вас информацию как работают утилиты, как подключить другой ТСД (не ACODE), предлагал доработать силами нашей команды взамен исходного когда, но вы так и не захотели ничего давать, в результате мы тоже начали разрабатывать свою утилиту. А тут человек дал дельное решение, спасибо ему.
elephant_x; +1 Ответить 1
19. roman kalynchuk (romak78) 10.10.16 17:59 Сейчас в теме
подскажите com.cipherlab.barcode где взять, у меня только com.cipherlab.clbarcodeservice есть в приложениях ?
20. Дмитрий Шерстобитов (DitriX) 2499 15.10.16 20:02 Сейчас в теме
(18) я ж не говорю что это плохо, это выход из ситуации. И мы никогда не скрывали используемой технологии, даже в коде вы могли наблюдать названия соответствующие (SMS и GCM), другое дело, что мы не разрабатываем ни для кого, и не потому что мы плохие или хорошие, а потому что с каждым релизом вылазят новые чудеса. И ваш бы комментарий мог звучать сейчас не так. что мы ничего не делаем, а так, что мы сделали и нифига теерь не работает :)

Тем более что мы сейчас вообще переходим на внешние компоненты, так как такой способ нарушает лицензию 1с, и в более менее крупных внедрениях - руководство просто может не пойти на это, а самое страшное - если такое сделать и их не предупредить. Это чисто медвежья услуга.
Поэтому еще раз повторюсь - механизм рабочий, конечно требует более детального подхода и изучения, не без этого. НО! Это подойдет для лавочников или компаний, которые готовы сэкономить, но при этом на свой страх нарушить лицензии.

Выбирайте сами. Но я считаю важным предупредить про это, иначе поплнится в ряду тех, кто "не переваривает" мобильную 1С.
21. Михаил (mental86) 18.12.16 19:23 Сейчас в теме
Большое спасибо автору!

Маленький нюанс при использовании такого подхода: нельзя использовать вариант отладки с Android Debug Bridge. Платформа, которую ставит конфигуратор, почему-то игнорирует изменения в манифесте. Файл с платформой указывается в настройках, но, видимо, конфигуратор просто использует готовый APK из архива. Этот же архив платформы при использовании со сборщиком работает в соответствии со статьей. Конфигуратор 8.3.9.1850.

А вообще надеюсь, что коллеги из 1С в новых релизах исправят досадную необщительность мобильной платформы.
22. Александр Гладких (zavbak) 29.01.17 05:09 Сейчас в теме
Отличная статья. Спасибо.
Использую для сборки конфигурацию "Сборщик мобильных приложений". Соответственно она постоянно заменяет permissions.xml. Какими командами собрать приложение?

И сейчас вроде появились внешние компоненты. Вы копали в эту сторону?
23. dewersia dewersia (dewersia) 52 30.01.17 11:04 Сейчас в теме
(22) Файл permissions.xml заменяется в файлах самой платформы, которая потом используется в сборщике и он не должен каждый раз изменяться. По поводу внешних компонент, как раз сейчас разбираюсь, но проблема состоит в том, что внешние компоненты появились, а вот обработчика "внешне событие" пока нет, по крайне мере на сколько мне известно.
24. Дамир Садретдинов (d_sdr) 4 05.06.17 15:35 Сейчас в теме
подскажите, в процедуре "ПриОткрытии" вызывается такая интересная вещь, как
ДоставляемыеУведомления.ПодключитьОбработчикУведомлений(...)

Что это за модуль - "ДоставляемыеУведомления" и где его достать? В типовых конфигурациях его не нашёл, в ACode Tools тоже нету.
25. Дамир Садретдинов (d_sdr) 4 05.06.17 16:11 Сейчас в теме
(24) Вопрос снят, разобрался
26. Александр Иванов (koks17v) 16.06.17 02:11 Сейчас в теме
Автор, спасибо большое! Очень полезный материал!

А бродкастить в 1С нажатие аппаратных кнопок вы не реализовывали?
27. dewersia dewersia (dewersia) 52 19.06.17 11:29 Сейчас в теме
(26) Добрый день. Не пробовал. Но думаю можно сделать по такому же принципу. Словить его в своем сервисе и перенаправить в 1С.
28. Дмитрий Федоров (demONx7) 28.06.17 03:23 Сейчас в теме
Да, материал действительно полезен.

А по поводу этого:
(26)
А бродкастить в 1С нажатие аппаратных кнопок вы не реализовывали?

Тоже очень интересен данный момент.
Особенно хотелось бы отследить клавиши стрелок и F..

Есть мысли как это можно сделать?
29. Александр Иванов (koks17v) 28.06.17 11:51 Сейчас в теме
(28) Да. Решение почти готово. Для АТОЛ SmartDroid.
30. Александр Иванов (koks17v) 28.06.17 19:35 Сейчас в теме
(28) Функциональные клавиши F... тоже перехватываем, а так же - цифры и стрелки.
31. Дмитрий Федоров (demONx7) 29.06.17 02:40 Сейчас в теме
(30) Я сейчас занимаюсь написанием конфигурации для ТСД. Весь функционал работает, но только сенсорно. Застрял на том, что не могу перехватить как раз таки эти клавиши(F.., стрелки и цифры). Нужно дорабатывать permissions или AndroidManifest? Или нужно вносить корректировки в драйвер ТСД для 1С?
Можете подсказать как и где это допиливается? Буду очень признателен.
32. dewersia dewersia (dewersia) 52 29.06.17 08:21 Сейчас в теме
(31) Если честно мы не изучали данный вопрос ), у нас нет функциональных клавиш, ну кроме "Назад", "Домой" и список открытых приложений. Поэтому в данном случае, первое что мне приходит на ум дописать сервис и вставить туда перехват нажатия клавиш. Вот только здесь нужно более подробно изучать материал по работе Android, я вчера полистал для интереса интернет, с лету не нашел ничего подходящего, но думаю если углубиться, то можно что-то нарыть. Можно дописать permission и сделать свой сервис )
33. Дмитрий Федоров (demONx7) 29.06.17 08:50 Сейчас в теме
Я уже три дня не могу ничего подходящего найти). Приходит на ум тоже что и вам, изучать Android. Чем сейчас постепенно и занимаюсь.
Но ведь должно же быть где-то решение.
34. Александр Иванов (koks17v) 16.07.17 16:57 Сейчас в теме
У нас получилось разработать драйвер для АТОЛ SmartDroid.

1. Получение штрихкода с аппаратного сканера в обход клавиатуры.
2. Обработка нажатия аппаратных кнопок устройства.
3. Получение и обработка всех данных в мобильном приложении 1С.

Готовим публикацию.
35. Дмитрий Федоров (demONx7) 17.07.17 01:49 Сейчас в теме
Отлично. С нетерпением ждём.
Оставьте свое сообщение