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

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

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

Получаю на телефоне ошибку после выбора файла :
Ошибка доступа к файлу '/storage/emulated/0/DCIM/Camera/202/10212_14101.jpg'
Ошибка при создании двоичных данных.
Подскажите куда копать)
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. Xershi 1473 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 11 02.08.23 12:18 Сейчас в теме
так заработало

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

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

Надо в справочник или регистр и сразу записывать
Оставьте свое сообщение
Вакансии
Программист 1С
Казань
зарплата от 150 000 руб.
Полный день

Программист 1С:ERP
Москва
зарплата от 100 000 руб.
Полный день

Разработчик 1С
Москва
зарплата от 200 000 руб. до 300 000 руб.
Полный день

Программист 1С (удаленно)
Самара
зарплата от 230 000 руб. до 230 000 руб.
Полный день

Руководитель группы разработки 1С
Москва
зарплата от 250 000 руб. до 250 000 руб.
Полный день