Включение обновления мобильных конфигураций 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С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

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

2880 руб.

03.12.2018    54639    137    102    

161

SALE! 25%

Что нам стоит бота построить? Нарисуем - будет жить! Графический конструктор телеграм-ботов/Telegram

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

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

13200 9900 руб.

27.12.2021    33320    80    157    

174

"Мобильный ТСД" - инвентаризация и сбор штрихкодов для iOS и Android

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

Простой мобильный терминал сбора данных для смартфонов на iOS и Android, не требующий сложных настроек и установки дополнительных программ. Обмен между Вашей 1С и мобильным приложением осуществляется через облачный сервис и расширение конфигурации. Работает с конфигурациями УТ 11, ERP, КА2, Розница 2, Розница 3, УНФ 1.6, УНФ 3.0. Полнофункциональный демо-доступ для своей конфигурации можно запросить в настройках мобильного приложения - все необходимое придет на почту автоматически.

2000 руб.

22.04.2019    91965    512    186    

293

Магазин 15 - приемка товара по штрихкодам или инвентаризация в торговом зале

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

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

12950 руб.

30.05.2023    3390    2    0    

4

Работа с графикой в браузере (SimpleWEB). Векторный редактор

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

В SimpleWEB добавились средства для работы с графикой и отслеживание событий мыши, в онлайн редактор https://seditor.ru:1555/ добавился «Векторный редактор» на этом API. Теперь можно нарисовать схемы складов на ПК, сделать карты (*.sug-файлы) для мобильной платформы SimpleUI, выводить данные из 1С в графическом виде. Таким образом, API для работы с векторными файлами теперь есть и в веб- и в мобильной платформе, а также средства для создания и редактирования векторных файлов есть тоже в обеих платформах.

1 стартмани

20.03.2024    1490    0    informa1555    1    

39

Зачем нам 1С:Элемент

Мобильная разработка Языки и среды Бесплатно (free)

Flutter может быть использован с 1С:Предприятием для разработки кроссплатформенных мобильных приложений, обеспечивая единый интерфейс и функциональность на устройствах под управлением iOS и Android. Это позволяет создавать приложения с высокой производительностью благодаря использованию собственного движка рендеринга Flutter. Интеграция Flutter с 1С:Предприятием позволяет создавать мобильные приложения любого уровня сложности, интегрировать их в корпоративные информационные системы, а также реализовывать бизнес-логику

19.03.2024    7029    ROk_dev    56    

37

JavaScript в Simple

Мобильная разработка Бесплатно (free)

В SimpleUI и SimpleWEB, наряду с обработчиками на python и онлайн (1С и т.д.) добавляется интерпретатор JavaScript. В андроид платформе он скорее играет на поле python, т.к. является оффлайновым решением для самостоятельной обработки и расширяет аудиторию разработчиков для разработки самостоятельных решений. Дополнение к основной статье https://infostart.ru/1c/tools/1153616/

12.02.2024    1630    informa1555    0    

25
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. dablack 11.05.16 20:21 Сейчас в теме
Спасибо! Отличный нюанс AdditionalParameters который я пропустил. Пытался обновить мобильное приложение загружая с сервера 1cema.xml и подменять его на тот который в папке и с базой и шаблоном. При перезапуске обновление вроде как происходит, а по факту - нет. Я уже стал подозревать, что это специально т.к. во вчерашней статьи на хабрре об этом писали, что такой способ обновления противоречит лицензионным соглашениям.
Еще раз спасибо! Вовремя как то прям для меня получилось.
5. SirStefan 53 12.05.16 06:19 Сейчас в теме
(1) И сами 1С пишут, что это противоречит лицензионному соглашению google play. "...Это запрещают делать лицензионные ограничения на приложения, которые распространяются через магазины приложений. Например, если ваше приложение будет загружать исполняемый код (в виде скрипта) через Интернет, то оно никогда не появится в магазине приложений Apple..."
Т.е. фактически они сами не против такого удобства, просто это ограничение сторонней компании к их продукту. А поскольку мы не собираемся выкладывать свою конфу на google - мы не сможем дискредитировать 1С :)
2. dablack 11.05.16 22:17 Сейчас в теме
Что то рано я обрадовался...
Получается, но как то не адекватно.
Из приложения правлю файлик v8i.
Перезапускаю.
после перезапуска приложения, начинается установка новой базы (по файлам вижу что добавляется еще одна база)
причем в v8i она добавляется с тем же именем, что и оригинал. (У вас файл v8i не изменяется сам?)
Потом захожу в приложение в список баз и там либо давлю "обновить" либо ставлю переключатель "перезапуск конфигуратора"
После этого становить как надо, но как избежать добавления еще одной базы, которой даже в списке нет, не могу разобраться...
3. SirStefan 53 12.05.16 06:05 Сейчас в теме
(2),Способ противоречит, но удобство работы то нужно. И возможно в новых версиях платформы отключат эту возможность.
Никакой новой базы не появляется, обновляется текущая. Платформа 8.3.7.70. В папке 1cem никаких новых папок не появляется тоже.
Покажите, что в файлике у вас написано после патча? И свой код патча.
4. SirStefan 53 12.05.16 06:14 Сейчас в теме
(2), по поводу двух баз пришла идея - надо проверить. Прописать несколько баз и каждой свой путь к файлу обновления, проверить можно ли в конечном продукте использовать различные конфигурации.
6. dablack 12.05.16 10:25 Сейчас в теме
Проблема решена! Оказывается из за того, что я на рутовом устройстве руками правил файл v8i - вылезали такие глюки, а если все делаю из мобильной платформы - все ок. В чем разница не понимаю, но тем не менее работает. Кстати если еще заменить в файле WA=0 на WA=1 то обновление будет проходить автоматом при запуске. Попробую еще из платформы заменять 1cema.xml, а то может у меня опять же это не получалось из-за того что я это делал не средствами платформы.
7. odineskin2 249 23.05.16 06:55 Сейчас в теме
очень полезное решение, спасибо автору.
а не подскажите для айфонов не заморачивались с аналогичным вопросом? лам логи в аналогичном виде?
8. SirStefan 53 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 274 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 95 24.04.20 12:20 Сейчас в теме
Спасибо, друг, от себя добавлю, что абсолютный путь к внутреннему хранилищу приложения можно узнать методом ПолучитьИмяВременногоФайла("txt"). В Возвращенном пути будет путь до создаваемого текстового файла во внутреннем хранилище
user613049_stanislav.ovchar; lisov; +2 Ответить
13. Goody 128 07.08.20 11:49 Сейчас в теме
Отличная идея! Сделал себе такое и просто ловлю кайф!
Спасибо за идею!!!
14. KAV2 156 26.11.20 11:35 Сейчас в теме
А можно ли интересно как-то программно выполнить обновление (из внешней программы, написанной не на 1С)? То есть идея такая: пишем свой ланчер для андроида. Этот ланчер будет запускать уже 1с, и также при запуске будет проверять необходимость обновления и если нужно, то запускать обновление конфигурации автоматически.
15. SirStefan 53 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 190 20.05.21 16:17 Сейчас в теме
Добрый день! Есть такой вопрос:

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

То есть если я соберу конечное приложение apk, затем найду ibases.v8i то в нем будет параметр "AdditionalParameters" ? В него пропишу путь, то приложение будет обновляться автоматом или нет?
Спасибо.
24. oslokot 190 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 22 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 Сейчас в теме
Получилось решить проблему с неработающим функционалом?
Оставьте свое сообщение