(2) gorevg, Добрый день, в воскресенье выложу сервис. Не стал этого делать так как достаточно специфичное решение под конкретный аппарат, под каждый аппарат придется его переделывать, использовать свои библиотеки и так далее. Основной задачей было рассказать как можно реализовать вызов внешнего события в Мобильной Платформе.
Это здорово и очень полезно. Было бы, вот только "внешний сервис, работающий в фоновом режиме" для Андроида я не напишу :( ибо я просто 1с-ник. И таких миллион.
(3) bulpi, Исходники как уже писал выше, выложу в воскресенье, это как раз и есть сервис работающий в фоновом режиме, 1С запускает сервис, а дальше этот сервис отправляет ей сообщения.
Это если можно сделать приложение на android которое будет это сообщение отправлять.
А бывает что только активное приложение может работать с оборудованием.
Тогда только потрошить платформу и внедрять код.
(4) Tahallus, Хм, тогда встает вопрос если это отдельное приложение, которое работает с оборудованием, неужели оно никак не передает данные? А если приложение этого не делает то тогда для чего оно? Такое узкоспециализированное оборудование тогда никак не может быть внедрено в учетную систему компании. Поправьте меня если это не так.
(7) проблема в том что только активное приложение может работать с СШК по serialport. можно сделать отдельное приложение которое будет работать и отправлять сообщение в 1с, но когда оно активно. Это как с аппаратными клавишами, их нажатие может ловить только активное приложение, если конечно прошивка не изменена.
(8) Tahallus, Тут согласен, но это как раз ограничение аппаратных средств, тут надо смотреть, может у производителя есть библиотеки для работы с этим аппаратом, изучать их возможности и если это становится не возможным тогда решать нужен вообще такой аппарат или нет, хотя я бы сказал что нет ничего не возможного, я не отношусь к гуру android программистов, но если бы у меня стояла такая задача я бы копал в сторону сервиса, который бы перехватывал нажатие клавиш, думаю что это вполне возможно. А ели можно перехватить нажатие клавиш тогда их обработка и передача это дело техники.
Как тут все глубоко ошибаются :)
На счет статьи - таки да, надо отправлять ID, чем это чревато? Создайте две базы в списке и увидите.
Мы (я про фирму ACODE) сделали проще в своих терминалах - у нас не надо нарушать лицензионной соглашение 1С, что делает автор в данной статье :)
Это конечно прикол, я не думаю что реально это будет кто-то проверять, но иди и знай :)
Вопрос номер два - зачем вы выдумывали велосипед? Видь есть Acode Tools, которые не только умею работать с блютуз сканерами, но и умеют еще кучу всего, из без танцев с бубном, как сделали вы сейчас.
З.Ы. Велосипед это хорошо, но все же - вы просто не знали про утилиты, или они вам чем-то не подошли?
(9) DitriX, Добрый день, насчет нескольких баз, в списке несколько баз доступно только в платформе для разработчика, которую кстати нельзя использовать для конечного приложения, поэтому в какой роли выступает ID для отдельного приложения не понятно. Я кстати описал это ограничение в статье. Ваши утилиты это круто, мы их тоже изучали, но я так понял считывание штрих кода все равно происходит в отдельном окне, а не внешним событием, что нас не устраивало. По поводу вмешательства в платформу, это спорный вопрос, ведь исходный код платформы не изменен, изменены только лишь разрешения, которые кстати говоря определяет сам разработчик.
По поводу сканеров, у нас СШК встроенный и в его настройках можно выбрать не эмуляцию клавиатуры, а передачу данных BroadCast сообщением, для него есть SDK под андроид, что и дало возможность использование такого метода, с блютуз сканерами боюсь так действительно не получится, хотя наверное и тут все зависит от конкретной модели и ее возможностей.
Ну и опять же я не пытался привязаться к конкретной задаче, просто работа с торговым и складским оборудованием это наилучший пример. Я хотел лишь показать как можно вызвать пресловутое внешнее событие из внешней компоненты или любого другого приложения на андроид.
(10) не смотрели вы утилиты, так как там именно через уведомления, неужели вы думали, что мы выпустим такой бред - сканирование в активное поле?
Мало того, еще с 8.3.4, где не было уведомлений - мы эмулировали через смс :) И даже в нескольких релизах 8.3.х - был баг с уведомлениями, они тупо не работали, так что при тестах - надо это учитывать, но мы выключивались тем, что было резервное - смс. Так что у нас там немерянно приколов было.
А про утилиты - всеравно обратите внимание, ибо там куча функций, которые точно нужны на ТСД :)
На счет сканера штрихкода - не понял до конца, наши утилиты поддерживают все сканеры штрихкодов, которые можно подключить по блютузу в SPP режиме, т.е. не в режиме эмуляции. И для этого не надо ковырять ничего.
В вашем случае - я так понял что у вас именно тсд на андроид. Ну тут да, мы для своих тоже отдельные модули пишем, но они имеют обратную совместимость и таки опять - без ковыряния манифестов :)
Ну в целом - да, статья ценная для тех, кому потребуется аналогичное решение проблем. :)
Теперь будет куда отправлять народ с аналогичными вопросами :)
(13) DitriX, Тогда примите мои извинения, значит что-то я упустил. Мне почему-то показалось что сканирование происходит в отдельном окне. Правда один из вариантов, который я еще вижу это push- уведомления ), для которых можно поднять свой сервер и гонять их через него, а что делать если нет соединения с интернет и мобильной связи? Я конечно понимаю, что сейчас это звучит дико, но все же бывает всякое, как тогда быть?
(14) нет, опять не верно поняли, у нас механизм работает так же, как и вы свой описали, только мы дергаем строенны в 1с бродкасты, а вы их перименовываете.
Так что никаких пушей и интрнетов не надо :)
(15) я же вверху исправился, и сказал, что да - это для наших терминалов, но утилиты работают с любыми блютух сканерами по такому же принципу, т.е. аля "внещнее событие", и вот утилиты идут под все устройства. Конечно, в данном случае на ТСД они работать не будут :)
Так ID вы не прочитаете, у вас 2 базы, и все. Какой ID брать? Правильней - получать путь временного каталога и из него вырезать конкретный ID :)
(17) DitriX, как то пытался получить у вас информацию как работают утилиты, как подключить другой ТСД (не ACODE), предлагал доработать силами нашей команды взамен исходного когда, но вы так и не захотели ничего давать, в результате мы тоже начали разрабатывать свою утилиту. А тут человек дал дельное решение, спасибо ему.
(18) я ж не говорю что это плохо, это выход из ситуации. И мы никогда не скрывали используемой технологии, даже в коде вы могли наблюдать названия соответствующие (SMS и GCM), другое дело, что мы не разрабатываем ни для кого, и не потому что мы плохие или хорошие, а потому что с каждым релизом вылазят новые чудеса. И ваш бы комментарий мог звучать сейчас не так. что мы ничего не делаем, а так, что мы сделали и нифига теерь не работает :)
Тем более что мы сейчас вообще переходим на внешние компоненты, так как такой способ нарушает лицензию 1с, и в более менее крупных внедрениях - руководство просто может не пойти на это, а самое страшное - если такое сделать и их не предупредить. Это чисто медвежья услуга.
Поэтому еще раз повторюсь - механизм рабочий, конечно требует более детального подхода и изучения, не без этого. НО! Это подойдет для лавочников или компаний, которые готовы сэкономить, но при этом на свой страх нарушить лицензии.
Выбирайте сами. Но я считаю важным предупредить про это, иначе поплнится в ряду тех, кто "не переваривает" мобильную 1С.
(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
(15) shakmaev, Добрый день, большое спасибо за подсказку по поводу ID. Я до него так и не докопался, да и в моем случае мне это было не нужно по крайне мере в текущей задаче.
Маленький нюанс при использовании такого подхода: нельзя использовать вариант отладки с Android Debug Bridge. Платформа, которую ставит конфигуратор, почему-то игнорирует изменения в манифесте. Файл с платформой указывается в настройках, но, видимо, конфигуратор просто использует готовый APK из архива. Этот же архив платформы при использовании со сборщиком работает в соответствии со статьей. Конфигуратор 8.3.9.1850.
А вообще надеюсь, что коллеги из 1С в новых релизах исправят досадную необщительность мобильной платформы.
Отличная статья. Спасибо.
Использую для сборки конфигурацию "Сборщик мобильных приложений". Соответственно она постоянно заменяет permissions.xml. Какими командами собрать приложение?
И сейчас вроде появились внешние компоненты. Вы копали в эту сторону?
(22) Файл permissions.xml заменяется в файлах самой платформы, которая потом используется в сборщике и он не должен каждый раз изменяться. По поводу внешних компонент, как раз сейчас разбираюсь, но проблема состоит в том, что внешние компоненты появились, а вот обработчика "внешне событие" пока нет, по крайне мере на сколько мне известно.
(30) Я сейчас занимаюсь написанием конфигурации для ТСД. Весь функционал работает, но только сенсорно. Застрял на том, что не могу перехватить как раз таки эти клавиши(F.., стрелки и цифры). Нужно дорабатывать permissions или AndroidManifest? Или нужно вносить корректировки в драйвер ТСД для 1С?
Можете подсказать как и где это допиливается? Буду очень признателен.
(31) Если честно мы не изучали данный вопрос ), у нас нет функциональных клавиш, ну кроме "Назад", "Домой" и список открытых приложений. Поэтому в данном случае, первое что мне приходит на ум дописать сервис и вставить туда перехват нажатия клавиш. Вот только здесь нужно более подробно изучать материал по работе Android, я вчера полистал для интереса интернет, с лету не нашел ничего подходящего, но думаю если углубиться, то можно что-то нарыть. Можно дописать permission и сделать свой сервис )
Я уже три дня не могу ничего подходящего найти). Приходит на ум тоже что и вам, изучать Android. Чем сейчас постепенно и занимаюсь.
Но ведь должно же быть где-то решение.
У нас получилось разработать драйвер для АТОЛ SmartDroid.
1. Получение штрихкода с аппаратного сканера в обход клавиатуры.
2. Обработка нажатия аппаратных кнопок устройства.
3. Получение и обработка всех данных в мобильном приложении 1С.
(43) Добрый день. Это не готовый сервис, это исходники сервиса их можно открыть в android studio и собрать собственный apk. Идея статьи была не выложить готовый универсальный сервис, а описать способ реализации внешнего события.
(45) Это исходники сервиса, который является прокладкой между аппаратным сканером штрихкода и 1с. Суть заключается в том, что сервис перехватывает считывание штрихкода и передает его в 1с.
Я писал под Scorpio X4. У них свой API под Андроид. Делал на чистой Java. Судя по граблям, что наступают в мобильной платформе, по времени наверное даже быстрее в реализации + все возможности Андроид. Обмен с 1С через HTTP сервис.
Кто нить обращался к в андройде к keychain из Мобильного приложения 1С. ???? ( Сертификаты SSL есть, про лаунч то что нет знаю.) Приложение открывается и сразу закрывается .