Работа с файлами на мобильном клиенте

1. irlandets1980 24.02.21 20:45 Сейчас в теме
Всем доброго времени суток. Столкнулся с проблемой - написал мобильный клиент к самописной конфигурации. Не могу выбрать файл на устройстве(андроид).

#Если МобильныйКлиент Тогда
		Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
		Если Диалог.Выбрать() Тогда
			БинДанные = Новый ДвоичныеДанные(Диалог.ПолноеИмяФайла);
			АдресВременногоХранилища = ПоместитьВоВременноеХранилище(БинДанные, ЭтаФорма.УникальныйИдентификатор);
		КонецЕсли;
  #КонецЕсли

Получаю на телефоне ошибку после выбора файла :
Ошибка доступа к файлу '/storage/emulated/0/DCIM/Camera/202/10212_14101.jpg'
Ошибка при создании двоичных данных.
Подскажите куда копать)
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Xershi 1484 24.02.21 23:49 Сейчас в теме
(1) очевидно у 1с нет доступа к файловой системе.
3. pavel06 2 25.02.21 09:04 Сейчас в теме
(2)
очевидно у 1с нет доступа

У его программы нет доступа. Обычно при запуске на андроиде программы спрашивают про разрешение доступа, может пропустили?. Там в свойствах конфигурации вроде выставляется.
4. Nubsdale 25.02.21 09:30 Сейчас в теме
(1) разрешить просмотр файлов на телефоне
5. irlandets1980 25.02.21 10:11 Сейчас в теме
В конфигураторе включены все требования какие есть. В моем случае речь не о собранном apk моего приложения а о платформе для разработки установленной на телефон. Может в этом дело. Попробую собрать. На эмуляторе нет проблем. На телефоне разрешены для приложения 1с-камера и память.
6. pavel06 2 25.02.21 18:30 Сейчас в теме
(5)
На телефоне разрешены для приложения 1с-камера и память.


Еще хранилище надо разрешить.
Может вам не РежимДиалогаВыбораФайла.Открытие а РежимДиалогаВыбораФайла.Сохранение нужно?
8. irlandets1980 26.02.21 09:34 Сейчас в теме
Разрешил все что только можно больше нечего разрешить, проблема возможно именно с моим самсунг.
7. Grivba 14 26.02.21 09:09 Сейчас в теме
Советую покапать в сторону - ЗапуститьМобильноеПриложение
9. irlandets1980 26.02.21 09:35 Сейчас в теме
Я с этого начал) решение только для андроид и проблема такая же
10. eda76 05.03.21 22:51 Сейчас в теме
у меня через ДиалогВыбораФайла работало но не давало получить расширение, в итоге сделал через допформу
ПутьКФайлу = ОткрытьФормуМодально("ОбщаяФорма.ВыбратьФайл", Новый Структура("ВыборКаталога", Ложь));
в этой форме заполняю дерево значений файлами и возвращаю имя выбранного файла, после чего Файл = Новый Файл(ПутьКФайлу); и вроде работает
11. irlandets1980 07.03.21 00:01 Сейчас в теме
(10) Есть такой метод для расширения Файл.ПолучитьПредставлениеФайлаБиблиотекиМобильногоУстройства()
12. irlandets1980 07.03.21 00:02 Сейчас в теме
В общем проблема на одном телефоне. Походу глюк
13. sir 14 02.08.23 12:18 Сейчас в теме
так заработало

&НаКлиенте
Процедура ВыбратьФайлСДискаИЗаписать() 
	
	Перем ВыбранноеИмя; 
	Перем АдресВременногоХранилища; 
	
	Если ПоместитьФайл(АдресВременногоХранилища, "", ВыбранноеИмя, Истина) Тогда
		
		Файл = Новый Файл(ВыбранноеИмя); 
		
		ПутьКФайлу = Файл.ПолноеИмя;
		ПредставлениеФайла = Файл.ПолучитьПредставлениеФайлаБиблиотекиМобильногоУстройства();
				
		ПоместитьФайлОбъекта(АдресВременногоХранилища, ПредставлениеФайла, ПутьКФайлу);
	КонецЕсли; 
	      
КонецПроцедуры 

&НаСервере
Процедура ПоместитьФайлОбъекта(АдресВременногоХранилища, ИмяФайла, ПутьКФайлу) 
	
    ДокументОбъект = РеквизитФормыВЗначение("Объект"); 
	
    ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресВременногоХранилища);  
	  
	НовыйПрикрепленныйФайл = ДокументОбъект.ПрикрепленныеФайлы.Добавить();
	НовыйПрикрепленныйФайл.ИмяФайла    = ИмяФайла;
	НовыйПрикрепленныйФайл.ПутьКФайлу  = ПутьКФайлу;
	
    НовыйПрикрепленныйФайл.ДанныеФайла = Новый ХранилищеЗначения(ДвоичныеДанные, Новый СжатиеДанных());
    НовыйПрикрепленныйФайл.Подпись     = Новый ХранилищеЗначения(Неопределено, Новый СжатиеДанных());
    НовыйПрикрепленныйФайл.Зашифрован  = Ложь;
    НовыйПрикрепленныйФайл.Подписан    = Ложь;
   	
    Модифицированность = Ложь;
    УдалитьИзВременногоХранилища(АдресВременногоХранилища);
	
    ЗначениеВРеквизитФормы(ДокументОбъект, "Объект"); 
	
КонецПроцедуры 
Показать
14. sir 14 02.08.23 14:21 Сейчас в теме
Но в этом коде некорректно писать ХранилищеЗначения в реквизит документа, он очиститься после передачи на форму.

Надо в справочник или регистр и сразу записывать
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот