Добрый день. Вот таким кодом я фотографирую на мобильном клиенте и добавляю фото в реквизит элемента справочника. Однако не получается на этом же мобильном клиенте посмотреть это фото.
&НаКлиенте
Процедура ДобавитьФото(Команда)
#Если НЕ МобильноеПриложениеКлиент Тогда
Сообщить("Функция не поддерживается");
Возврат;
#Иначе
Результат = Неопределено;
Если СредстваМультимедиа.ПоддерживаетсяФотоснимок() Тогда
Результат = СредстваМультимедиа.СделатьФотоснимок();
Иначе
Сообщить("Не поддерживается фото!");
КонецЕсли;
Если Результат = Неопределено Тогда Возврат КонецЕсли;
Данные = Результат.ПолучитьДвоичныеДанные();
РасширениеФайла = Результат.РасширениеФайла;
ДобавитьФотоНаСервере(Данные);
Модифицированность = Истина;
#КонецЕсли
КонецПроцедуры
&НаСервере
Процедура ДобавитьФотоНаСервере(Данные)
ОбъектФормы = РеквизитФормыВЗначение("Объект");
ОбъектФормы.ДанныеСтрокой = Base64Строка(Данные);
ЗначениеВРеквизитФормы(ОбъектФормы, "Объект");
КонецПроцедуры
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ОписаниеОшибки = "";
Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
Возврат;
КонецЕсли;
ОбновитьКартинкуНаСервере(ОписаниеОшибки);
Если НЕ ОписаниеОшибки = "" тогда
Сообщить(ОписаниеОшибки);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьКартинкуНаСервере(ОписаниеОшибки)
ОбъектФормы = РеквизитФормыВЗначение("Объект");
Этап = "";
Попытка
Этап = "Получение двоичных данных."+Символы.ПС;
ДвоичныеДанные = Base64Значение(ОбъектФормы.ДанныеСтрокой);
Этап = Этап+"Получение картинки. Тип: "+ТипЗнч(ДвоичныеДанные)+" Размер: "+ДвоичныеДанные.Размер()+Символы.ПС;
Картинка = Новый Картинка(ДвоичныеДанные);
Этап = Этап+"Установка картинки. Тип: "+ТипЗнч(Картинка)+" Формат: "+Картинка.Формат()+Символы.ПС;
Элементы.ДекорацияКартинка.Картинка = Картинка;
Исключение
ОписаниеОшибки = ОписаниеОшибки();
КонецПопытки;
ОписаниеОшибки = Этап+Символы.ПС+ОписаниеОшибки;
КонецПроцедуры
&НаКлиенте
Процедура СделатьФото(Команда)
Если СредстваМультимедиа.ПоддерживаетсяФотоснимок() Тогда
РезультатФото = СредстваМультимедиа.СделатьФотоснимок();
Если Не РезультатФото = Неопределено Тогда
ДвоичныеДанныеФото = РезультатФото.ПолучитьДвоичныеДанные();
СтруктураНовогоФайла = Новый Структура("Расширение, Данные", РезультатФото.РасширениеФайла, ДвоичныеДанныеФото);
СохранитьФотоНаСервере(СтруктураНовогоФайла);
КонецЕсли;
Иначе
Предупреждение("Аппарат не поддерживает функцию фотоснимков.", 30);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура СохранитьФотоНаСервере(СтруктураНовогоФайла)
Константы.ПоследнееФото.Установить(Новый ХранилищеЗначения(СтруктураНовогоФайла, Новый СжатиеДанных(9)));
КонецПроцедуры // СохранитьФотоНаСервере
&НаКлиенте
Процедура ПоказатьПоследнееФото(Команда)
СтруктураФайла = ПолучитьПоследнееФото();
Если СтруктураФайла = Неопределено Или Не ТипЗнч(СтруктураФайла) = Тип("Структура") Тогда
Предупреждение("Не удалось найти сохраненную фотографию.", 30);
Возврат;
КонецЕсли;
ИмяВременногоФайла = ПолучитьИмяВременногоФайла(СтруктураФайла.Расширение);
СтруктураФайла.Данные.Записать(ИмяВременногоФайла);
ЗапуститьПриложение(ИмяВременногоФайла);
КонецПроцедуры
&НаСервере
Функция ПолучитьПоследнееФото()
Возврат Константы.ПоследнееФото.Получить().Получить();
КонецФункции
Решилось!
АдресКартинки = ПоместитьВоВременноеХранилище(ДвоичныеДанные, УникальныйИдентификатор);
А на форме поле "АдресКартинки" с типом ПолеКартинки.