AXForum  
Вернуться   AXForum > Microsoft Dynamics CRM > Dynamics CRM: Разработка
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 23.09.2013, 19:19   #1  
Anton87 is offline
Anton87
Участник
 
5 / 10 (1) +
Регистрация: 15.09.2013
Отображение картинки на карточке продукта
Добрый день!

Есть скрипт на onLoad, который отображает картинку на карточке продукта после ее добавления в примечание к этому продукту. Скрипт работает, при добавлении примечания вручную. Но, к сожалению, не работает если примечания были созданы с помощью импорта. Т.е. вложенные файлы картинок в записях продуктов есть, но на форме картинка не отображается.

Со скриптами только-только начал ознакамливаться, поэтому разобраться что тут не так не могу. Помогите пожалуйста, кто чем может

Сам скрипт:

function setImageToIframe(){
var image=null;
var id="";
if (Xrm.Page.ui.getFormType()!=1){
id=Xrm.Page.data.entity.getId().replace("{","").replace("}","");
var filter="?$filter=ObjectId/Id eq (guid'" + id + "')&$orderby=CreatedOn desc"
retrieveMultiple("AnnotationSet", filter, function(data){
if (data && data.length>0) {
for(var i=0; i<data.length; i++){
if (data[i].MimeType=="image/gif" || data[i].MimeType=="image/pgif" || data[i].MimeType=="image/jpeg" || data[i].MimeType=="image/png" || data[i].MimeType=="image/ppng"|| data[i].MimeType=="image/pjpeg"){
image=data[i];
break;
}
}
}
}, null, false);
}
if (image!=null){
var el = document.getElementById("WebResource_picture");
document.getElementById("WebResource_picture").contentWindow.document.getElementById("image").src ="data:image/png;base64,"+image.DocumentBody;
var url="http://имя_сервера/название_организации/notes/edit.aspx?id=%7b"+image.AnnotationId+"%7d&pId=%7b"+id +"%7d&pType=1024"
Xrm.Page.getAttribute("new_imageurl").setValue(url);
}
else {
Xrm.Page.getControl("WebResource_picture").setVisible(false);
}
}

Заранее спасибо!
Старый 24.09.2013, 09:23   #2  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Скорее всего проблема в данных, а не в коде. Попробуйте импортировать и создать руками одну и ту же картинку и убедитесь что результат идентичен.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
За это сообщение автора поблагодарили: Anton87 (1).
Старый 24.09.2013, 10:50   #3  
spectr is offline
spectr
Участник
Аватар для spectr
MCBMSS
Лучший по профессии 2014
 
287 / 70 (3) ++++
Регистрация: 19.10.2011
Адрес: Киев
Проблема здесь
Цитата:
if (image!=null){
var el = document.getElementById("WebResource_picture");
document.getElementById("WebResource_picture").contentWindow.document.getElementById("image").src ="data:image/png;base64,"+image.DocumentBody;
var url="http://имя_сервера/название_организации/notes/edit.aspx?id=%7b"+image.AnnotationId+"%7d&pId=%7b"+id +"%7d&pType=1024"
Xrm.Page.getAttribute("new_imageurl").setValue(url);
}
else {
Xrm.Page.getControl("WebResource_picture").setVisible(false);
}
data:image/png;base64, вы говорите браузеру что у вас рисунок PNG
хотя он может быть и другим.
Вы же проверяете на тип рисунка здесь:
Цитата:
if (data[i].MimeType=="image/gif" || data[i].MimeType=="image/pgif" || data[i].MimeType=="image/jpeg" || data[i].MimeType=="image/png" || data[i].MimeType=="image/ppng"|| data[i].MimeType=="image/pjpeg"){
Почему это не использовать дальше ?
Вот так:
Код:
document.getElementById("WebResource_picture").contentWindow.document.getElementById("image").src ="data:"+image.MimeType+";base64,"+image.DocumentBody;
Старый 24.09.2013, 13:54   #4  
Anton87 is offline
Anton87
Участник
 
5 / 10 (1) +
Регистрация: 15.09.2013
Артем, в том то и дело, что при создании примечания руками одна и та же картинка отображается на карточке, а при импорте - нет.

Если примечание было создано импортом, то скрипт ведет себя так, как будто примечаний нет, то есть:
}
else {
Xrm.Page.getControl("WebResource_picture").setVisible(false);
}

Spectr, к сожалению, это проблему не решает.

Последний раз редактировалось Anton87; 24.09.2013 в 14:31. Причина: дополнено
Старый 24.09.2013, 15:38   #5  
spectr is offline
spectr
Участник
Аватар для spectr
MCBMSS
Лучший по профессии 2014
 
287 / 70 (3) ++++
Регистрация: 19.10.2011
Адрес: Киев
Цитата:
Сообщение от Anton87 Посмотреть сообщение
Если примечание было создано импортом, то скрипт ведет себя так, как будто примечаний нет.
А оно в примечаниях светится ?
Сделайте еще
Код:
data[i].MimeType.toLowerCase()=="image/gif"
Тут только 2 варианта:
1) или примечание не крепится к нашему объекту
2) или его тип не попадает под выбор (ну тут еще toLowerCase можно попробовать)
Старый 24.09.2013, 15:50   #6  
Anton87 is offline
Anton87
Участник
 
5 / 10 (1) +
Регистрация: 15.09.2013
Цитата:
Сообщение от spectr Посмотреть сообщение
А оно в примечаниях светится ?
Да, импортированные примечания отображаются в записях

Цитата:
Сообщение от spectr Посмотреть сообщение
Тут только 2 варианта:
1) или примечание не крепится к нашему объекту
2) или его тип не попадает под выбор (ну тут еще toLowerCase можно попробовать)
1) Тоже думаю не крепится, но как их переподкрепить не понятно.
2) Тип документа под выбор подпадает, т.к. если выгрузить примечание и прикрепить его к этой же записи, то картинка отображается.
Старый 24.09.2013, 16:38   #7  
spectr is offline
spectr
Участник
Аватар для spectr
MCBMSS
Лучший по профессии 2014
 
287 / 70 (3) ++++
Регистрация: 19.10.2011
Адрес: Киев
Цитата:
Сообщение от Anton87 Посмотреть сообщение
2) Тип документа под выбор подпадает, т.к. если выгрузить примечание и прикрепить его к этой же записи, то картинка отображается.
При ручном методе он определяет тип файла а вот при импорте может его не передать или передать но не тот.
Такое ощущение что MimeType нету.
Поставьте после
Код:
 for(var i=0; i<data.length; i++){
такой код
Код:
alert(data[i].MimeType);
и посмотрите что там возвращается.
За это сообщение автора поблагодарили: Anton87 (1).
Старый 24.09.2013, 17:50   #8  
Anton87 is offline
Anton87
Участник
 
5 / 10 (1) +
Регистрация: 15.09.2013
Цитата:
Сообщение от spectr Посмотреть сообщение
и посмотрите что там возвращается.
Действительно, при импорте система неправильно определяет тип вложения (у меня определило как application/octet-stream). Задал при импорте тип вложения вручную - проблема решилась!

spectr, спасибо за помощь!
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
CRM 2011, "нет места на диске" при загрузке формы продукта для возможной сделки mistah Dynamics CRM: Функционал 5 08.11.2012 01:44
Все о Microsoft Dynamics CRM: Модели ценообразования в CRM Blog bot Dynamics CRM: Blogs 0 06.06.2012 23:13
axforum blogs: Как правильно использовать прайс-листы в CRM Blog bot Dynamics CRM: Blogs 0 13.02.2012 00:11
Как добавлять картинки в статьи axma Dynamics CRM: Функционал 1 21.12.2011 16:30
Как сделать обязательное добавление продукта Dekan Dynamics CRM: Разработка 3 29.06.2009 14:49

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 06:03.