Как отобразить полученное фото на форме мобильного клиента?

1. spezc 782 06.08.14 15:52 Сейчас в теме
Добрый день. Вот таким кодом я фотографирую на мобильном клиенте и добавляю фото в реквизит элемента справочника. Однако не получается на этом же мобильном клиенте посмотреть это фото.

&НаКлиенте
Процедура ДобавитьФото(Команда)
	
	#Если НЕ МобильноеПриложениеКлиент Тогда
		Сообщить("Функция не поддерживается");
		Возврат;
	#Иначе
		
		Результат = Неопределено;
		
		Если СредстваМультимедиа.ПоддерживаетсяФотоснимок() Тогда
			Результат = СредстваМультимедиа.СделатьФотоснимок();
		Иначе
			Сообщить("Не поддерживается фото!");
		КонецЕсли; 
		
		Если Результат = Неопределено Тогда Возврат КонецЕсли;
		
		Данные = Результат.ПолучитьДвоичныеДанные();
		РасширениеФайла = Результат.РасширениеФайла;
		ДобавитьФотоНаСервере(Данные);   
		Модифицированность = Истина;
		
	#КонецЕсли
	
КонецПроцедуры

&НаСервере
Процедура ДобавитьФотоНаСервере(Данные)
	
	ОбъектФормы = РеквизитФормыВЗначение("Объект");
	ОбъектФормы.ДанныеСтрокой = Base64Строка(Данные);
	ЗначениеВРеквизитФормы(ОбъектФормы, "Объект");
	
КонецПроцедуры

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	ОписаниеОшибки = "";
	
	Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
		
		Возврат;
		
	КонецЕсли;
	
	ОбновитьКартинкуНаСервере(ОписаниеОшибки);
	
	Если НЕ ОписаниеОшибки = "" тогда
		
		Сообщить(ОписаниеОшибки);
		
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура ОбновитьКартинкуНаСервере(ОписаниеОшибки)
	
	ОбъектФормы = РеквизитФормыВЗначение("Объект");
	Этап = "";
	
	Попытка
		
		Этап = "Получение двоичных данных."+Символы.ПС;
		ДвоичныеДанные = Base64Значение(ОбъектФормы.ДанныеСтрокой);
		Этап = Этап+"Получение картинки. Тип: "+ТипЗнч(ДвоичныеДанные)+" Размер: "+ДвоичныеДанные.Размер()+Символы.ПС;
		Картинка = Новый Картинка(ДвоичныеДанные);
		Этап = Этап+"Установка картинки. Тип: "+ТипЗнч(Картинка)+" Формат: "+Картинка.Формат()+Символы.ПС;
		Элементы.ДекорацияКартинка.Картинка = Картинка;
		
	Исключение
		
		ОписаниеОшибки = ОписаниеОшибки();
		
	КонецПопытки;
	
	ОписаниеОшибки = Этап+Символы.ПС+ОписаниеОшибки;
	
КонецПроцедуры
Показать



Во вложении скрин ошибки. Кто сталкивался?

При желании, если у вас есть мобильная платформа 8.3.5.63 - вы можете подключиться к базе http://base.ildarcheg.ru:39999/testclientMA2
Прикрепленные файлы:
+
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
6. dj_serega 391 06.08.14 17:03 Сейчас в теме
(5) spezc, а если нужно фото отредактировать редактором мобильного аппарата то используй (4).
+
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. dj_serega 391 06.08.14 16:32 Сейчас в теме
(1) spezc, Код вывода картинки в мобильном и тонком клиенте идентичный.
+
4. dj_serega 391 06.08.14 16:34 Сейчас в теме
(1) spezc, Я вот так на планшете фото показываю:

&НаКлиенте
Процедура СделатьФото(Команда)
	
	Если СредстваМультимедиа.ПоддерживаетсяФотоснимок() Тогда
		
		РезультатФото = СредстваМультимедиа.СделатьФотоснимок();
		
		Если Не РезультатФото = Неопределено Тогда
			
			ДвоичныеДанныеФото = РезультатФото.ПолучитьДвоичныеДанные();
			
			СтруктураНовогоФайла = Новый Структура("Расширение, Данные", РезультатФото.РасширениеФайла, ДвоичныеДанныеФото);
			
			СохранитьФотоНаСервере(СтруктураНовогоФайла);
			
		КонецЕсли;
		
	Иначе
		Предупреждение("Аппарат не поддерживает функцию фотоснимков.", 30);
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура СохранитьФотоНаСервере(СтруктураНовогоФайла)  
	
	Константы.ПоследнееФото.Установить(Новый ХранилищеЗначения(СтруктураНовогоФайла, Новый СжатиеДанных(9)));
	
КонецПроцедуры // СохранитьФотоНаСервере

&НаКлиенте
Процедура ПоказатьПоследнееФото(Команда)
	
	СтруктураФайла = ПолучитьПоследнееФото();
	
	Если СтруктураФайла = Неопределено Или Не ТипЗнч(СтруктураФайла) = Тип("Структура") Тогда
		Предупреждение("Не удалось найти сохраненную фотографию.", 30);
		Возврат;
	КонецЕсли;
	
	
	ИмяВременногоФайла = ПолучитьИмяВременногоФайла(СтруктураФайла.Расширение);
	
	СтруктураФайла.Данные.Записать(ИмяВременногоФайла);
	
	ЗапуститьПриложение(ИмяВременногоФайла);
	
КонецПроцедуры

&НаСервере
Функция ПолучитьПоследнееФото()
	
	Возврат Константы.ПоследнееФото.Получить().Получить();
	
КонецФункции
Показать
spezc; +1
7. spezc 782 06.08.14 18:21 Сейчас в теме
(4) dj_serega, спасибо за пример)
+
2. sssss_aaaaa_2011 06.08.14 15:54 Сейчас в теме
Кто сталкивался?
Составляете список столкнувшихся?
5. spezc 782 06.08.14 17:01 Сейчас в теме
Решилось!
АдресКартинки = ПоместитьВоВременноеХранилище(ДвоичныеДанные, УникальныйИдентификатор);
А на форме поле "АдресКартинки" с типом ПолеКартинки.
+
6. dj_serega 391 06.08.14 17:03 Сейчас в теме
(5) spezc, а если нужно фото отредактировать редактором мобильного аппарата то используй (4).
+
Внимание! Тема сдана в архив

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