gifts2017

Получение файла базы данных 1С: мобильная платформа (android)

Опубликовал А С (a45) в раздел Программирование - Мобильные приложения

Как получить файл базы данных 1C: мобильная платформа с устройства Android без рутирования устройства.

Задача:

Была написана небольшая конфигурация для ведения простенького учёта на планшете (android). Смотрины и тестирование решили провести на эмуляторе (чтобы в случае неудовлетворительного результата не тратиться на планшет). Посмотрели, повносили данные и вроде как решили положительно. Купили планшет, и захотелось сохранить внесенные на эмуляторе данные (данных немного, но хотелось). Так как “поделка” находилась в ещё непонятном состоянии, никаких механизмов выгрузки реализовано не было. Пошарив “яндекси/или “гугл- выяснилось, что базы мобильной 1С есть ни что иное, как файлы 1Cv8.1CD, и находятся они тут:

\data\data\com.e1c.mobile\files\ … \xxxx-xxx …. xxxx\1Cv8.1CD

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


Проблема:

Заглянув “проводником по указанному выше пути.  ничего не обнаружим, и это понятно - нужен “root”. Рутирование устройства android - не вариант.


Решение:

Углубленно в особенности системы безопасности android вдаваться не будем, но отметим, что само приложение имеет доступы к файлам в “своей папке”, а 1С даже в мобильном варианте “умеет” вполне себе неплохо работать с файлами. Поэтому почему бы не написать конфигурацию, которая будет работать с файлами других конфигураций.

Создаём конфигурацию для мобильного приложения, создаем общую форму, размещаем на форме поле ввода для указания "папки обмена" и список значений для вывода найденных баз:

&НаКлиенте
Процедура ОбновитьСписокБаз()
	
	СписокБаз.Очистить();

	МасП = НайтиФайлы(
		"/data/data/com.e1c.mobile/files/", 
		"*.1CD", 
		Истина	
	);
	
	Для каждого СтрМ Из МасП Цикл		
		СписокБаз.Добавить(СтрМ.ПолноеИмя);							
	КонецЦикла;	

КонецПроцедуры

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	ПутьКПапке = "/sdcard/1cbackup"
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)	
	ОбновитьСписокБаз();    	
КонецПроцедуры

Создадим команду "Забрать базу" и "Восстановить базу"

&НаКлиенте
Процедура ЗабратьБазу(Команда)
	
	Попытка
	
		КопироватьФайл(
			Элементы.СписокБаз.ТекущиеДанные.Значение,
			ПутьКПапке + "/1Cv8.1CD"
		);
			
	Исключение
		Сообщить("Ошибка копирования базы (" + ОписаниеОшибки()+")");		
	КонецПопытки;
			
КонецПроцедуры
&НаКлиенте
Процедура ВостановитьБазу(Команда)
	
	Если Вопрос("Востановить базу ?",РежимДиалогаВопрос.ДаНет) <> КодВозвратаДиалога.Да Тогда
		Возврат;	
	КонецЕсли; 
	
	Попытка
	
		КопироватьФайл(
			ПутьКПапке + "/1Cv8.1CD",
			Элементы.СписокБаз.ТекущиеДанные.Значение
		);
			
	Исключение
		Сообщить("Ошибка Востановления базы (" + ОписаниеОшибки()+")");		
	КонецПопытки;
	
КонецПроцедуры

Публикуем конфигурацию и добавляем приложение в 1С

 

Скачать файлы

Наименование Файл Версия Размер
1Cv8.cf 3
.cf 9,60Kb
02.03.16
3
.cf 0.1 9,60Kb Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Ярослав Радкевич (WKBAPKA) 09.03.16 10:26
гы, хитро придумано :)))
cleaner_it; +1 Ответить
2. Xer shi (Xershi) 05.07.16 09:24
Я в своей конфигурации написал обмен и такое боловство мне даже не нужно было. Порекомендую статью горе-кодерам без обмена.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа