В базе УТ10:
Сделал XDTO пакет. 1 тип - Номенклатура, свойство Picture c типом ValueStorage из пространства http://v8.1c.ru/8.1/data/core и парой свойств Kod и Name с типом String. 2 тип - СписокНоменклатуры со свойством Номенклатура.
Создал новый Web-сервис ВыгрузитьНоменклатуру, в процедуре делаю выборку номенклатуры и заполняю СписокНоменклатуры. Свойство Picture заполняю так:
Объект = ФабрикаXDTO.Создать(ТипНоменклатура);
Объект.Name = Выборка.Наименование;
Объект.Kod = Выборка.Код;
Объект.Picture = Новый ХранилищеЗначения(Выборка.ОсновноеИзображение.Хранилище.Получить().ПолучитьДвоичныеДанные());
На мобильном приложении. Сделал два справочника. Номенклатура и подчиненный справочник Изображения с реквизитом Хранилище с типом ХранилищеЗначений. Обрабатываю полученный списокНоменклатуры так:
Для каждого Товар Из СписокНоменклатуры.Номенклатура цикл
Объект = Справочники.Номенклатура.СоздатьЭлемент();
Картинка.Хранилище = Новый ХранилищеЗначения(Новый Картинка(Товар.Picture.Получить()));
Картинка.Записать();
Объект.СсылкаНаИзображение = Картинка.Ссылка;
КонецЕсли;
Объект.Записать();
КонецЦикла;
Что получается. Справочник Номенклатура переносится замечательно. Справочник Изображения заполняется только теми элементами, у которых в основной базе есть изображения. То есть казалось бы все хорошо. Но картинка на форме элемента справочника Изображения не показывается. Пытаюсь показать ее так:
То есть Вопросы следующие.
1) Правильно ли я выбрал тип ValueStorage для помещения туда картинки и передачи ее через веб сервис в мобильное приложение.
2) Если правильно, то правильно ли я ее туда поместил на стороне УТ:
Объект.Picture = Новый ХранилищеЗначения(Выборка.ОсновноеИзображение.Хранилище.Получить().ПолучитьДвоичныеДанные());
3) Правильно ли я ее принимаю на Мобильном приложении:
Картинка.Хранилище = Новый ХранилищеЗначения(Новый Картинка(Товар.Picture.Получить()));
Попробуйте получить фото из фото камеры и вывести его :)
Фишка в том, что выдолжны получить двоичные данные из картинки, потом, внимаение!, помечтить их во временное хранилище, потом вернуть с сервера на клиент адрес хранилища, потом ОПЯТЬ ЗАСУНУТЬ во временное хранилище, но уже на клиенте, и адрес этого хранилища передать как картинку.
Как то так, точно не посню уже :)
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший