Существует два варианта мобильного приложения:
- для разработчика со списком баз и обновлением через http
- конечное приложение с одной конфигурацией
Но у конечного приложения есть один нюанс - нет обновления конфигурации. Торговые представители постоянно в полях, да еще и по городам раскиданы. Периодическая передача нового 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)+ПутьОбновленияКонфигурации);
ФайлСпискаБаз.Закрыть();
КонецЕсли;
#КонецЕсли
КонецПроцедуры
В патче не предусмотрено, что у пользователя могут быть прописаны несколько конфигураций. Да и поиск файла лучше заменить на прямой путь. В результате после применения патча пользователи могут заходить в список приложений
и обновлять свою конфигурацию до последней когда нужно стандартным методоб "Обновить". При этом не теряется запуск сразу нужной конфигурации.
Код не оптимальный и будет переписан - в статье пытался передать сам вариант решения.