Включение обновления мобильных конфигураций via http

10.05.16

Разработка - Мобильная разработка

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

Существует два варианта мобильного приложения:

  1. для разработчика со списком баз и обновлением через http
  2. конечное приложение с одной конфигурацией

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

Покопавшись немного во внутренностях МП нашел интересную вещь: платформа одна и та же, механизмы есть, просто они недоступны. По сути есть файл ibases.v8i (как и в десктопной версии) со списком конфигураций и в нем путь к шаблону конфигурации прописан в параметре "AdditionalParameters=".

В конечном приложении в параметре ссылка на локальный шаблон, в приложении для разработчика это http ссылка. Попытался заменить одну на другую - заработало. Но можно ли это сделать на планшетах торговых? Они-то не рутованы как мой телефон. Помогла статья //infostart.ru/public/464479/. Оказалось, что МП имеет полный доступ к своей папке. Осталось только внедрить замену текста.

В строке нужно прописать полный путь к файлу с конфигурацией:

AdditionalParameters=http://mysite.ru/1cema.xml

Если у вас файл отдается с авторизацией, то так:

AdditionalParameters=http://login:password@mysite.ru/1cema.xml

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

И на кнопку прописан патч нужного нам файла:

&НаКлиенте
Процедура кмПатч(Команда)
    #Если МобильноеПриложениеКлиент Тогда
    масФайлы = НайтиФайлы("/data/data/<ИДЕНТИФИКАТОР ПРИЛОЖЕНИЯ КАК УКАЗАН В СБОРЩИКЕ>/files/","*.v8i",Истина);
    ФайлСпискаБаз = Новый ЧтениеТекста(масФайлы[0].ПолноеИмя);
    Текст = ФайлСпискаБаз.Прочитать();
    ФайлСпискаБаз.Закрыть();
    
    перПозиция = СтрНайти(Текст,"AdditionalParameters=");
    Если перПозиция>0 Тогда
        ФайлСпискаБаз = Новый ЗаписьТекста(масФайлы[0].ПолноеИмя);
        ФайлСпискаБаз.Записать(Лев(Текст,перПозиция+20)+ПутьОбновленияКонфигурации);
        ФайлСпискаБаз.Закрыть();
    КонецЕсли;    
    #КонецЕсли
КонецПроцедуры

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

и обновлять свою конфигурацию до последней когда нужно стандартным методоб "Обновить". При этом не теряется запуск сразу нужной конфигурации.

 Код не оптимальный и будет переписан - в статье пытался передать сам вариант решения.

См. также

Мобильная разработка Мессенджеры и боты Платформа 1С v8.3 1С:Конвертация данных Платные (руб)

Теперь создать telegram-бота - элементарно. Достаточно просто нарисовать блок-схему телеграм-бота, и он сразу заработает. Это возможно при использовании Графического конструктора телеграм-ботов. Это единственный конструктор ботов для telegram, чье качество и функционал подтверждены фирмой 1С, есть сертификат 1С:Совместимо. Расширение в интерактивном режиме, с помощью блок-схем, позволяет с минимальными трудозатратами создать телеграм-ботов в любой конфигурации, работающей на платформе «1С:Предприятие 8.3».

13200 руб.

27.12.2021    38234    108    161    

201

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

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

3000 руб.

03.12.2018    59324    192    103    

172

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

322

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

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

3450 руб.

28.04.2023    9487    15    0    

9

Мобильная разработка Платформа 1С v8.3 Конфигурации 1cv8 Финансовые услуги, инвестиции Управленческий учет Платные (руб)

Мобильное приложение и конфигурация 1С для автоматической торговли на бирже через API Тинькофф банка. Достаточно задать настройки, нажать «Пуск», и робот сам торгует ежедневно.

7000 руб.

25.05.2022    4662    1    0    

6

Мобильная разработка WEB-интеграция Программист Мобильная платформа Абонемент ($m)

Экспериментальный релиз и простенький скрипт к нему закрывает потребности в любых видах синхронизации между устройствами Simple и между Simple и бек-системами (например 1С). По сути – это очень простой python-скрипт, который можно запустить на доступной машине, сервере или VPS и он будет связывать клиентские устройства между собой и с 1С или другими бек-системами. В самой платформе появилось для этого множество доработок для поддержки стабильного постоянного соединения, докачки больших файлов и работе в фоне. Дополнение к основной статье https://infostart.ru/1c/tools/1153616/

1 стартмани

23.08.2024    1224    6    informa1555    1    

13

Мобильная разработка Мобильная платформа Абонемент ($m)

В этом релизе собрано много нового из области интерфейса, связи, хранения и важные новые способы управления. Дополнение к основной статье https://infostart.ru/1c/tools/1153616/

1 стартмани

25.06.2024    2621    29    informa1555    0    

33
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. dablack 11.05.16 20:21 Сейчас в теме
Спасибо! Отличный нюанс AdditionalParameters который я пропустил. Пытался обновить мобильное приложение загружая с сервера 1cema.xml и подменять его на тот который в папке и с базой и шаблоном. При перезапуске обновление вроде как происходит, а по факту - нет. Я уже стал подозревать, что это специально т.к. во вчерашней статьи на хабрре об этом писали, что такой способ обновления противоречит лицензионным соглашениям.
Еще раз спасибо! Вовремя как то прям для меня получилось.
5. SirStefan 55 12.05.16 06:19 Сейчас в теме
(1) И сами 1С пишут, что это противоречит лицензионному соглашению google play. "...Это запрещают делать лицензионные ограничения на приложения, которые распространяются через магазины приложений. Например, если ваше приложение будет загружать исполняемый код (в виде скрипта) через Интернет, то оно никогда не появится в магазине приложений Apple..."
Т.е. фактически они сами не против такого удобства, просто это ограничение сторонней компании к их продукту. А поскольку мы не собираемся выкладывать свою конфу на google - мы не сможем дискредитировать 1С :)
2. dablack 11.05.16 22:17 Сейчас в теме
Что то рано я обрадовался...
Получается, но как то не адекватно.
Из приложения правлю файлик v8i.
Перезапускаю.
после перезапуска приложения, начинается установка новой базы (по файлам вижу что добавляется еще одна база)
причем в v8i она добавляется с тем же именем, что и оригинал. (У вас файл v8i не изменяется сам?)
Потом захожу в приложение в список баз и там либо давлю "обновить" либо ставлю переключатель "перезапуск конфигуратора"
После этого становить как надо, но как избежать добавления еще одной базы, которой даже в списке нет, не могу разобраться...
3. SirStefan 55 12.05.16 06:05 Сейчас в теме
(2),Способ противоречит, но удобство работы то нужно. И возможно в новых версиях платформы отключат эту возможность.
Никакой новой базы не появляется, обновляется текущая. Платформа 8.3.7.70. В папке 1cem никаких новых папок не появляется тоже.
Покажите, что в файлике у вас написано после патча? И свой код патча.
4. SirStefan 55 12.05.16 06:14 Сейчас в теме
(2), по поводу двух баз пришла идея - надо проверить. Прописать несколько баз и каждой свой путь к файлу обновления, проверить можно ли в конечном продукте использовать различные конфигурации.
6. dablack 12.05.16 10:25 Сейчас в теме
Проблема решена! Оказывается из за того, что я на рутовом устройстве руками правил файл v8i - вылезали такие глюки, а если все делаю из мобильной платформы - все ок. В чем разница не понимаю, но тем не менее работает. Кстати если еще заменить в файле WA=0 на WA=1 то обновление будет проходить автоматом при запуске. Попробую еще из платформы заменять 1cema.xml, а то может у меня опять же это не получалось из-за того что я это делал не средствами платформы.
7. odineskin2 201 23.05.16 06:55 Сейчас в теме
очень полезное решение, спасибо автору.
а не подскажите для айфонов не заморачивались с аналогичным вопросом? лам логи в аналогичном виде?
8. SirStefan 55 24.05.16 04:49 Сейчас в теме
(7), нет, у меня все торговые на android.
Сомневаюсь, что на айфоне так же.
9. dablack 24.05.16 11:07 Сейчас в теме
На яблоках путь к v8i вот такой:
"\Library\1C\1cem\ibases.v8i"
Далее все тоже самое...
SirStefan; odineskin2; +2 Ответить
10. AganinEvgeniy 2 29.06.17 11:59 Сейчас в теме
Спасибо огромное за статью! Очень оказалась полезна.

З.Ы.: А никто не в курсе случаем, есть ли возможность сделать загрузку обновы с FTP ресурса? По сути ведь мало чем отличается по идее функционал, но увы, во всяком случае у меня на мобильной платформе 8.3.9.91 и 8.3.10.51 не удалось это сделать.
11. markers 277 13.06.18 06:48 Сейчас в теме
На Android 7 путь к папке изменился, в нашем случае он стал /data/user/0/ вместо прежнего /data/data/
В 1С 8.3.12 изменился параметр, теперь это UpdateURL и его по умолчанию нет в файле, так-же есть параметр AutoUpdate=1 который разрешает автоматическое обновление, его тоже нет в файле.
user613049_stanislav.ovchar; SirStefan; +2 Ответить
12. user602678_maxipunchik 98 24.04.20 12:20 Сейчас в теме
Спасибо, друг, от себя добавлю, что абсолютный путь к внутреннему хранилищу приложения можно узнать методом ПолучитьИмяВременногоФайла("txt"). В Возвращенном пути будет путь до создаваемого текстового файла во внутреннем хранилище
user613049_stanislav.ovchar; lisov; +2 Ответить
13. Goody 130 07.08.20 11:49 Сейчас в теме
Отличная идея! Сделал себе такое и просто ловлю кайф!
Спасибо за идею!!!
14. KAV2 157 26.11.20 11:35 Сейчас в теме
А можно ли интересно как-то программно выполнить обновление (из внешней программы, написанной не на 1С)? То есть идея такая: пишем свой ланчер для андроида. Этот ланчер будет запускать уже 1с, и также при запуске будет проверять необходимость обновления и если нужно, то запускать обновление конфигурации автоматически.
15. SirStefan 55 27.11.20 14:25 Сейчас в теме
(14), ну по идее если за версией не лезть в 1С, а хранить отдельно то можно. Сверяешь номер версии с новой выложенной, если не совпадает - качаешь и запускаешь. Пользователь сам нажимает кнопку "Установить". А чтобы залезть в БД, посмотреть номер версии, и без вопросов самому обновить 1С андроид прав, ИМХО, не даст.
16. drasp 02.03.21 20:18 Сейчас в теме
Спасибо автору, прекрасный механизм, пользовался им какое-то время. В начале этого года, после обновления платформы изменение файла и прописывание своего адреса обновления отключается функциональности у приложения. Никак не могу победить. Никто не сталкивался?
17. Dales 03.03.21 01:49 Сейчас в теме
(16) да, на платформе 8.3.18 что то случилось ((( не реагирует на смену файла.
Не работает обновление, и не работают методы уведомления, тупо программа уходит в исключения и вырубается.
18. drasp 03.03.21 10:37 Сейчас в теме
(17) На сколько я понимаю, "уходит в исключения" потому что после изменения файла - отключаются функциональности ."... ● При отключенной функциональности: исключение.." https://its.1c.ru/db/v8318doc#bookmark:dev:TI000002363
Остается непонятным вот что : в мобильной плтаформе, которуй мы устанавливаем на устрйство как приложение и прописываем там несколько баз для тестирования или эксплуатации в текстовм файле указаны такиеже пути для обновления, какие указываем мы в АПК. В мобильной платформе функциональности не отключаются
19. Dales 06.03.21 01:06 Сейчас в теме
(18) будем надеяться, что это глюк платформы и это будет исправлено
20. Gessekai 23.03.21 16:51 Сейчас в теме
(16) Заметил, что на новой платформе строка UpdateURL прописывается сама и там указывается:
UpdateURL=v8res://templates/conf.xml
Если изменить на другой путь, то приложение уходит в исключение, как вы и сказали. Если поменять строку обратно в первоначальный вид, то загружается конфигурация, хранящееся в телефоне и приложение перестает уходить в исключения.
Также изменился файл 1cema.xml, теперь там содержатся подключаемые модули, которые определяются на основе разрешений приложения.
Но что делать со всем этим пока не понял. Не хочется отказываться от такого механизма в приложении.
21. drasp 23.03.21 17:38 Сейчас в теме
(20) Интригует и оставляет надежду то , что на мобильной платформе обновляется же все по прежнему. В UpdateURL стоит по прежнему тот адрес где опубликовано мобильное приложение. Я был убежден , что та мобильная платформа , которая устанавливается как отдельное приложение и используется для отладки - ровно она же и используется при сборке приложения и встроена в собраное приложение. Но что-то идет не так.
22. Gessekai 23.03.21 17:49 Сейчас в теме
(21) Может если подменять файл по этому пути (v8res://templates/conf.xml), то что-то выйдет? Но я не понял, где он хранится и есть ли туда доступ.
23. oslokot 194 20.05.21 16:17 Сейчас в теме
Добрый день! Есть такой вопрос:

У меня платформа 8.3.15 и приложение установлено в режиме для разработчика. Посмотрел я содержимое файла ibases.v8i, но там нет параметра "AdditionalParameters=", вместо него есть параметр "UpdateURL=" в котором уже указан путь к моей базе http://мой_сервер.ru/1cema.xml

То есть если я соберу конечное приложение apk, затем найду ibases.v8i то в нем будет параметр "AdditionalParameters" ? В него пропишу путь, то приложение будет обновляться автоматом или нет?
Спасибо.
24. oslokot 194 09.06.21 14:16 Сейчас в теме
(23) Сам и отвечу.
После сборки приложения на мобильной платформе 8.3.15.62, в файле ibases.v8i я обнаружил вот такую строку UpdateURL=v8res://templates/conf.xml
Затем заменил эту строку на UpdateURL=http://мой_сервер.ru/1cema.xml и добавил еще строку AutoUpdate=1

После этого, сразу при запуске приложения идет обращение к моему ресурсу и если есть обновление, автоматически обновляется. А так же стал доступен список баз из меню самого приложения

В общем все получилось как надо.
Спасибо автору статьи!
eeeio; Agrozentr; akR00b; docfoxik; +4 Ответить
25. akR00b 24 13.02.22 10:05 Сейчас в теме
на 8.3.17 пробовал кто нибудь?
27. 17808849 58 11.11.22 01:52 Сейчас в теме
4 часа танцев с бубном привели к следующему результату:
Тестировал на 8.3.20. Если редактировать файл в ручную, ничего не получится. 1С вылетает с ошибкой.
Работает только если редактировать этот файл из 1С. Причины не понятны.
Немного исправил приведенную выше процедуру, выполнил и все заработало

&НаКлиенте
Процедура Автообновление(Команда)
    #Если МобильноеПриложениеКлиент Тогда
    масФайлы = НайтиФайлы("/data/data/com.e1c.mobile/files/","*.v8i",Истина);
    ФайлСпискаБаз = Новый ЧтениеТекста(масФайлы[0].ПолноеИмя);
    Текст = ФайлСпискаБаз.Прочитать();
    ФайлСпискаБаз.Закрыть();
    
    перПозиция = СтрНайти(Текст,"UpdateURL=");
    Если перПозиция>0 Тогда
        ФайлСпискаБаз = Новый ЗаписьТекста(масФайлы[0].ПолноеИмя);
        ФайлСпискаБаз.Записать(Лев(Текст,перПозиция-1) + 
		"UpdateURL=http://мойсервер/1cema.xml
		|AutoUpdate=1");
        ФайлСпискаБаз.Закрыть();
	КонецЕсли;
    #КонецЕсли

КонецПроцедуры
Показать
26. пользователь 15.03.22 19:14
Сообщение было скрыто модератором.
...
28. user613049_stanislav.ovchar 03.02.23 15:03 Сейчас в теме
А кто-то поборол проблему что после такого обновления не работает функционал с камерами, звуком и т.п. ?
29. PaulSparrow 20.09.23 17:02 Сейчас в теме
Получилось решить проблему с неработающим функционалом?
Оставьте свое сообщение