1. Ukubaeva 26.07.16 12:40 Сейчас в теме

Не отображается картинка, загруженная из двоичных данных

Делаю все стандартно - в Регистре храню картинки в хранилище значения, при создании формы на сервере читаю эти данные, пишу в адрес картинки
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	ПолучитьДанныеФото();
	АдресКартинки = ПоместитьВоВременноеХранилище(ДДФайла,УникальныйИдентификатор);
	//Элементы.Картинка.РазмерКартинки = РазмерКартинки.Пропорционально;
КонецПроцедуры

&НаСервере
Процедура ПолучитьДанныеФото()
	Рег = РегистрыСведений.Вложения.СоздатьНаборЗаписей();
	Рег.Отбор.УникальныйКод.Установить(Запись.УникальныйКод);
	Рег.Прочитать();
	Если Рег.Количество() = 0 Тогда Возврат КонецЕсли;
	ДДФайла = Рег[0].Данные.Получить();
КонецПроцедуры
Показать

На форме Поле картинки, путь к данным - АдресКартинки. На мобильном устройсвте какие то картинки отображаются корректно, какие то нет. В тонком клиенте все картинки отображаются нормально.
Причем, у меня при нажатии на картинку отрабатывают команды по редактировании фото, так вот программы для обрезания или редактирования фото открывают картинку нормально, а берут они данные картинки из того же реквизита формы ДДФайла. Помогите понять, почему не отображается картинка в Поле картинки на форме то? Спасибо!
Ответы
Избранное Подписка Сортировка: Древо
2. dj_serega 359 26.07.16 13:40 Сейчас в теме
(1) Ukubaeva, Мне кажется что картинки слишком хорошего качества и мобильное устройство не справляется с вырисовыванием.
Предлагаю, для проверки, уменьшить качество картинок либо реализовать через страницы (режим перелистывания).
Ukubaeva; +1 Ответить
3. Ukubaeva 26.07.16 14:36 Сейчас в теме
(2) dj_serega,
Мне кажется что картинки слишком хорошего качества и мобильное устройство не справляется с вырисовыванием
Да, я тоже так думаю, потому что если я эти же сканы сохраняю и уменьшаю размер и креплю заново, отображаются они нормально. Но дело в том, что в мобильное приложение эти рисунки попадают из Центральной базы, где собираются самые разномастные файлы - как сделанные на мобильном приложении, так и отсканированные и прикрепленные к документам на стационарном компьютере, тут я уже не могу контролировать все файлы. В общем, решила помимо функций редактирования и обрезания фото добавить просмотр и открываю проблемный скан в просмотрщике. Спасибо!
4. ipoloskov 64 26.07.16 14:39 Сейчас в теме
Может, обрезать картинки при передаче на мобильное устройство? Заодно и трафик уменьшится.
5. Ukubaeva 26.07.16 14:47 Сейчас в теме
(4) ipoloskov, да, это тоже вариант. Но тогда, пожалуй, надо опытным путем выяснять, с какого качества начиная перестают грузиться сканы, и для таких выполнять процедуру обрезания. В общем, пока тестируем так с командой открытия проблемного скана, потом посмотрим.
6. dj_serega 359 26.07.16 15:19 Сейчас в теме
(5) Ukubaeva,
Но тогда, пожалуй, надо опытным путем выяснять, с какого качества начиная перестают грузиться сканы

В первую очередь я бы выяснил какое качество нужно в МП.

В пример: разрешение моб. устройства "1280 x 800" (10'' tab4) то удобо-читаемыми картинками можно считать 640*480. Ну и не bmp а jpeg или даже png.

Это первые мысли какие пришли. У меня были случаи когда видяшки (avi) грузили с разрешением годными для просмотра в кинотеатре :))) Естественно я ограничил размер в 20мб :) В итоге юзеры конвертировали видео в 640*480 и все работало как часы.
7. Ukubaeva 26.07.16 15:30 Сейчас в теме
(6) dj_serega, да, я согласна, что надо бы изначально ограничить возможности пользователей грузить высокого качества изображения, но дело в том, что в базу эти изображения попадают самыми различными способами. И хорошего качества попадают следующим образом: Пользователь сканирует свой документ, пишет на определенный ящик письмо, прикрепляет туда скан, отправляет письмо. Письмо обрабатывается триггером событий в 1С, создается док, который грузится в МП, где с ним работают другие пользователи. И им надо просматривать сканы. То есть, тут довольно сложно заставить их крепить надлежащего качества сканы.
8. dj_serega 359 26.07.16 19:49 Сейчас в теме
(7) Ukubaeva, Я, походу, не совсем ясно передал суть :)
Допустим есть док "ДанныеДляМП". У него реквизиты: "Сканы - Тип ХЗ" и "СканыДляМП - Тип ХЗ". Так вот на МП выгружайте "СканыДляМП". Сконвертить скан можно в обработчике "ПерезЗаписью". Не думаю что будет трудно найти обработку/сайт/программу через которые можно будет это выполнить (будь-то встроенные механизмы или api или COM).

Вообщем направление, я думаю, есть :) А вот о результатах очень прошу отписаться :) Интересно как решите этот вопрос.
Ukubaeva; +1 Ответить
9. DitriX 1614 26.07.16 21:13 Сейчас в теме
Если уж таки надо такого качества выводить - юзайто поле хтмл, и выводите через него.
И вообще - все картинки надо через него выводить, иначе рискуете утечками памяти. И после открытия 10 картинок - 1с просто упадет.
Ukubaeva; dj_serega; +2 Ответить
11. Xershi 415 06.03.17 23:26 Сейчас в теме
(9) просто замена поле картинки на Поле HTML документа результата не дало.
10. Xershi 415 06.03.17 22:52 Сейчас в теме
Поставил 8.3.9 МП и андроид 4.4 у меня.
Вместо картинки крестик.
Картинка 42 957 байт 400 на 400 примерно.
А вот картинку в 21кб отобразило.
Ранее возможно на 8.3.7 и андроиде 4.2 картинки грузились нормально.
//Код до
//СсылкаНаКартинку = ПолучитьНавигационнуюСсылку(Объект.Ссылка,"Иллюстрация");
//Код после тоже не работает
СсылкаНаКартинку = ПоместитьВоВременноеХранилище(Новый Картинка(ДвоичныеДанныеИллюстрации), УникальныйИдентификатор);
		
12. Xershi 415 07.03.17 00:03 Сейчас в теме
СсылкаНаКартинку = ПолучитьНавигационнуюСсылку(Объект.Ссылка,"Иллюстрация");
		//СсылкаНаКартинку = ПоместитьВоВременноеХранилище(Новый Картинка(ДвоичныеДанныеИллюстрации), УникальныйИдентификатор);
		СсылкаНаКартинку = "
		|<ht ml>
		|<head>
		|</head>
		|<body>
		|<div> <img src='"+СсылкаНаКартинку+"'/></div>
		|</body>
		|</html>";
Показать
13. Xershi 415 07.03.17 00:36 Сейчас в теме
(12) только с картинкой уже ничего сделать нельзя, она есть но на мобилке поле мизерное. Наверное надо выводить отдельным окном...
14. kaa_ 09.03.17 17:38 Сейчас в теме
Такая же проблема. Пересохранил в png. Показало. Поэкспериментирую еще с другими форматами, т.к. png уж больно тяжелый.
15. Xershi 415 09.03.17 21:01 Сейчас в теме
(14) спасибо за наводку! Протестирую этот метод и напишу как прошло!
16. Xershi 415 09.03.17 21:48 Сейчас в теме
(14) похоже на текущий момент это решение!
Требуется пересохранить картинки из JPEG (.jpg) в PNG (.png). Тогда картинка отобразится корректно, но и объем у меня увеличился почти в 3 раза картинки!
17. Xershi 415 04.04.17 00:08 Сейчас в теме
Поставил мобильную платформу 8.3.10 и кажись работа с JPEG (.jpg) пошла!
18. johny1987 30.11.17 12:36 Сейчас в теме
Нихрена не выводится - пишет "Не удается найти элемент" и открывает галерею картинок на мобильном устройстве. МП 8.3.10.74. Что я не так делаю?
&НаСервере
Процедура ВывестиКартинку(Гуид)
	ИмяТемпФайла  = ПолучитьИмяВременногоФайла(".jpg");
	Попытка	
		ДвоичныеДанные = ПолучитьФайлИзХранилища(Гуид); 
		Если ДвоичныеДанные <> Неопределено Тогда
			ДвоичныеДанные.Записать(ИмяТемпФайла);//Файл);
			ЗапуститьПриложение(ИмяТемпФайла);//Файл);		
		КонецЕсли;
	Исключение
		Сообщить(ОписаниеОшибки());
	КонецПопытки;
КонецПроцедуры

&НаСервере
Функция ПолучитьФайлИзХранилища(ГуидФайла)
	Возврат ВернутьОбъектСправочникаПоГуиду(ГуидФайла);
КонецФункции

&НаСервере
Функция ВернутьОбъектСправочникаПоГуиду(Гуид)
	
	Запрос = Новый Запрос;
	Запрос.Текст = 

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

Вакансии

Удаленный ИТ-журналист
Санкт-Петербург
По совместительству

Программист 1С
Санкт-Петербург
зарплата до 120 000 руб.
По совместительству

Senior 1C Developer ЛЮБОЙ ГОРОД
Москва
Полный день

Старший Программист 1С НОВОСИБИРСК
Новосибирск
зарплата до 130 000 руб.
Полный день

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