Получение файла базы данных 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
.cf 9,60Kb
02.03.16
4
.cf 0.1 9,60Kb 4 Скачать

См. также

Комментарии
1. Ярослав Радкевич (WKBAPKA) 200 09.03.16 10:26 Сейчас в теме
гы, хитро придумано :)))
cleaner_it; +1 Ответить
2. Xer shi (Xershi) 225 05.07.16 09:24 Сейчас в теме
Я в своей конфигурации написал обмен и такое боловство мне даже не нужно было. Порекомендую статью горе-кодерам без обмена.
3. Павел Тар (Pabio) 27.02.17 10:30 Сейчас в теме
Скопировать базу с планшета и перенести ее на стационарный компьютер получается, но потом она не открывается (даже конфигуратором). У вас получилось?
4. А С (a45) 45 27.02.17 10:48 Сейчас в теме
(3) задачи такой не было, но где-то как-то мельком слышал (читал) что там формат немного различается .. и вроде бы какие-то значения изменяют и база работает на компьютере.
5. Ruslan Ruslan (flyer) 217 28.02.17 22:41 Сейчас в теме
может попробуете архив базы сделать в 8.3.9 это реализовали и потом в настольной версии его подгрузить. сам не пробовал но может попробуете и нам напишите.
6. Павел Тар (Pabio) 01.03.17 15:41 Сейчас в теме
Поставил 8.3.9.79 и выполнил команду "Создать резервную копию". По сути, данная команда копирует в указанную папку тот же файл 1Cv8.1CD. Проблема осталась, у меня это при попытки войти в конфигуратор - "ошибка формата потока", но вылечить на стационарном компьютере стандартными действиями (утилитой ChDBFl.exe) я не смог.
7. q q (silver_a) 02.03.17 07:53 Сейчас в теме
попробуй сделать выгрузку базы в xml в мобильном приложении
8. Павел Тар (Pabio) 15.03.17 10:29 Сейчас в теме
У меня не получилось, а у вас? Выполнил команду "Создать резервную копию" на мобильном приложении. Сформированные данные перенес на стационарный компьютер. Далее на нем создал чистую конфигурацию и выполнил команду "Конфигурация- Загрузить конфигурацию из файлов". Результат - сообщение " Не удалось определить формат загружаемой конфигурации. Возможно содержимое каталога ..... не является корректной XML схемой.
9. А С (a45) 45 15.03.17 13:10 Сейчас в теме
(8)
Далее на нем создал чистую конфигурацию и выполнил команду "Конфигурация- Загрузить конфигурацию из файлов". Результат - сообщение " Не удал


вы с андроида скопировали 1cv8.1cd - это файл базы, для загрузки конфигурации нужен xxx.cf файл, а его можно получить только из "нормальной" функционирующей базы.

копать я думаю нужно в сторону изменения формата файла 1cv8.1cd (изменения каких то байтов - которые отвечают за тип БД).
10. Павел Тар (Pabio) 16.03.17 11:20 Сейчас в теме
(9)
Да, там был скопированный файл 1cv8.1cd, но в этот раз (командой Конфигурация- Загрузить конфигурацию из файлОВ...) была идея "распознать" файл 1cema.xml. Ведь по сути, это и есть конфигурация.
Можно чуть подробнее про " изменения формата файла 1cv8.1cd (изменения каких то байтов - которые отвечают за тип БД)." - с чего начать?
11. А С (a45) 45 16.03.17 12:27 Сейчас в теме
(10)
Можно чуть подробнее про " изменения формата файла 1cv8.1cd (изменения каких то байтов - которые отвечают за тип БД)." - с чего начать?


самому интересно ... я где-то когда-то на каких-то форумах встречал ... точно не могу сказать .. там кто-то писал что файлы 1cv8.1cd "нормальной" файловой базы и 1cv8.1cd мобильной различаются каким-то байтом - и из за этого не открывается база скопированная с мобильного ...

про достоверность этой информации не могу ни чего сказать.
12. user user (inf012) 17.04.17 11:21 Сейчас в теме
самому интересно ... я где-то когда-то на каких-то форумах встречал ... точно не могу сказать .. там кто-то писал что файлы 1cv8.1cd "нормальной" файловой базы и 1cv8.1cd мобильной различаются каким-то байтом - и из за этого не открывается база скопированная с мобильного ...
про достоверность этой информации не могу ни чего сказать.


Интересно.
Получается, мобильная разработка защищена также слабо, как и для ПК.
То есть, при желании, просто устанавливаем любое приложение, написанное на 1с МП себе на телефон, забираем базу и вуаля-магия, смотрим что она собой представляет в конфигураторе?
так что-ли?
Просто тоже делаю простенькое МП и интересен вопрос защиты?