Имя: Пароль:
1C
1С v8
Как отобразить полученное фото на форме мобильного клиента?
0 Бешеная Нога
 
06.08.14
16:19
Добрый день. Вот таким кодом я фотографирую на мобильном клиенте и добавляю фото в реквизит элемента справочника. Однако не получается на этом же мобильном клиенте посмотреть это фото.

&НаКлиенте
Процедура ДобавитьФото(Команда)

#Если НЕ МобильноеПриложениеКлиент Тогда
Сообщить("Функция не поддерживается");
Возврат;
#Иначе

Результат = Неопределено;

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

Если Результат = Неопределено Тогда Возврат КонецЕсли;

Данные = Результат.ПолучитьДвоичныеДанные();
РасширениеФайла = Результат.РасширениеФайла;
ДобавитьФотоНаСервере(Данные);
Модифицированность = Истина;

#КонецЕсли

КонецПроцедуры

&НаСервере
Процедура ДобавитьФотоНаСервере(Данные)

ОбъектФормы = РеквизитФормыВЗначение("Объект");
ОбъектФормы.ДанныеСтрокой = Base64Строка(Данные);
ЗначениеВРеквизитФормы(ОбъектФормы, "Объект");

КонецПроцедуры

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

ОписаниеОшибки = "";

Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда

Возврат;

КонецЕсли;

ОбновитьКартинкуНаСервере(ОписаниеОшибки);

Если НЕ ОписаниеОшибки = "" тогда

Сообщить(ОписаниеОшибки);

КонецЕсли;

КонецПроцедуры

&НаСервере
Процедура ОбновитьКартинкуНаСервере(ОписаниеОшибки)

ОбъектФормы = РеквизитФормыВЗначение("Объект");
Этап = "";

Попытка

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

Исключение

ОписаниеОшибки = ОписаниеОшибки();

КонецПопытки;

ОписаниеОшибки = Этап+Символы.ПС+ОписаниеОшибки;

КонецПроцедуры


Скрин - http://i074.radikal.ru/1408/fb/1588f4c8aa87.png

При желании, если у вас есть мобильная платформа 8.3.5.63 - вы можете подключиться к базе http://base.ildarcheg.ru:39999/testclientMA2
1 Бешеная Нога
 
06.08.14
16:21
неудачно вставился код и ссылка.
ссылка http://i074.radikal.ru/1408/fb/1588f4c8aa87.png
2 Бешеная Нога
 
06.08.14
16:21
код:
&НаКлиенте
Процедура ДобавитьФото(Команда)
    
    #Если НЕ МобильноеПриложениеКлиент Тогда
        Сообщить("Функция не поддерживается");
        Возврат;
    #Иначе
        
        Результат = Неопределено;
        
        Если СредстваМультимедиа.ПоддерживаетсяФотоснимок() Тогда
            Результат = СредстваМультимедиа.СделатьФотоснимок();
        Иначе
            Сообщить("Не поддерживается фото!");
        КонецЕсли;
        
        Если Результат = Неопределено Тогда Возврат КонецЕсли;
        
        Данные = Результат.ПолучитьДвоичныеДанные();
        РасширениеФайла = Результат.РасширениеФайла;
        ДобавитьФотоНаСервере(Данные);  
        Модифицированность = Истина;
        
    #КонецЕсли
    
КонецПроцедуры

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

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

&НаСервере
Процедура ОбновитьКартинкуНаСервере(ОписаниеОшибки)
    
    ОбъектФормы = РеквизитФормыВЗначение("Объект");
    Этап = "";
    
    Попытка
        
        Этап = "Получение двоичных данных."+Символы.ПС;
        ДвоичныеДанные = Base64Значение(ОбъектФормы.ДанныеСтрокой);
        Этап = Этап+"Получение картинки. Тип: "+ТипЗнч(ДвоичныеДанные)+" Размер: "+ДвоичныеДанные.Размер()+Символы.ПС;
        Картинка = Новый Картинка(ДвоичныеДанные);
        Этап = Этап+"Установка картинки. Тип: "+ТипЗнч(Картинка)+" Формат: "+Картинка.Формат()+Символы.ПС;
        Элементы.ДекорацияКартинка.Картинка = Картинка;
        
    Исключение
        
        ОписаниеОшибки = ОписаниеОшибки();
        
    КонецПопытки;
    
    ОписаниеОшибки = Этап+Символы.ПС+ОписаниеОшибки;
    
КонецПроцедуры
3 Широкий
 
06.08.14
16:24
Проще будет записать изображение в файл и открыть штатным просмотрищиком
4 Широкий
 
06.08.14
16:27
Не понятно почему используешь строку а не хранилище значения
5 Бешеная Нога
 
06.08.14
16:30
(3) а как открыть файл штатным просмоторщиком на мобильном устройстве?
(4) пробовал и через хранилище значений, но натыкался на непонятный глюк. Двоичные данные помещенные в хранилище, потом в реквизит, а потом извлеченные оттуда так же ввиде хранилища - упорно не хотели превращаться в двоичные данные и в картинку. Пока решил через строку, но потом думаю добью и через хранилище. Отладка на мобильном устройстве не самое простое дело.
6 Широкий
 
06.08.14
16:31
(5)ЗапуститьПриложение
7 Бешеная Нога
 
06.08.14
16:35
(6) почему-то посчитал, что такое на мобильном клиенте не доступно, гляну СП - доступно. Вообщем попробую, в качестве эксперимента.

Однаком требуется все-таки видеть картинку именно на форме..
8 Широкий
 
06.08.14
16:35
Расширение декорации формы для картинки (Form decoration extension for a picture)
Картинка (Picture)
Использование:

Чтение и запись.
Описание:

Тип: Картинка.
Отображаемая картинка.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, мобильное приложение(клиент), мобильное приложение(сервер).
Примечание:

Если картинка задается программно, может быть установлена картина вида Пустая или ИзБиблиотеки.
9 Широкий
 
06.08.14
16:35
(8) Последняя строка для твоего релиза актуальна?
10 Бешеная Нога
 
06.08.14
16:36
(8)
"Если картинка задается программно, может быть установлена картина вида Пустая или ИзБиблиотеки."

хм... а как же вообще картинки программно отображаются?

(9) да...
11 Бешеная Нога
 
06.08.14
16:39
ааааа, вспомнил!
12 Бешеная Нога
 
06.08.14
16:39
через ПолучитьНавигационнуюСсылкуКартинки?
13 Широкий
 
06.08.14
16:41
(12) Которая работает в мобильном приложении :)
Попробуй через HTML как нить вывернуться.
14 Бешеная Нога
 
06.08.14
17:00
Решилось!
АдресКартинки = ПоместитьВоВременноеХранилище(ДвоичныеДанные, УникальныйИдентификатор);
А на форме поле "АдресКартинки" с типом ПолеКартинки.

(13) большое спасибо за помощь! Если есть на инфостарте - зайти, там будет такая же ветка - отдам вознаграждение)