28.03.2012, 17:40 | #1 |
Участник
|
Форма CRM 2011 внутри IFrame
Коллеги, не сталкивался ли кто-нибудь с задачей отображения формы CRM 2011 внутри кастомной web-страницы? Для конкретики предположим, что имеется web-ресурс c название "new_Page" в виде html страницы, внутри которой располагается iframe с некой формой CRM. При таком подходе ribbon-панель формы не отображается.
В crm 4.0 подобных проблем не было, ввиду отстутствия самого рибона. |
|
28.03.2012, 23:16 | #2 |
Moderator
|
Приведите, пожалуйста, код вашего ресурса. В SDK есть упоминание о том, что если URL будет оканчиваться на "/", то риббон не будет отображаться. Правда это касается только CRM Online.
Цитата:
Trim Trailing Forward Slash Character with Microsoft Dynamics CRM Online
When you use the Xrm.Page.context.getServerUrl method to retrieve the organization root URL the string returned by Microsoft Dynamics CRM Online includes a trailing forward slash character. If this trailing forward slash is not removed, the ribbon will not display. You should remove this character so that you can consistently append the rest of the URL to the organization root URL
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
29.03.2012, 10:00 | #3 |
Участник
|
Спасибо за ответ. Да, я тоже видел эту рекомендацию, но судя по всему, проблема не в ней.
Вот пример ресурса с обозначенной проблемой: Код: <HTML><HEAD> <SCRIPT language=JScript> function openCrmPage() { var iframe = document.getElementById('crm-content-iframe'); iframe.src = "http://<host>/<org>/main.aspx?etc=1&extraqs=%3f_gridType%3d1%26etc%3d1%26id%3d%257bE99AE97C-2F68-E111-A75E-00155D011502%257d%26rskey%3d413117157&pagetype=entityrecord"; } </SCRIPT> <META charset=utf-8></HEAD> <BODY style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; HEIGHT: 100%; PADDING-TOP: 0px" contentEditable=true onload=openCrmPage()><IFRAME style="WIDTH: 100%; HEIGHT: 100%" id=crm-content-iframe></IFRAME></BODY></HTML> Заметил еще одну особенность: если к веб-ресурсу обращаемся по имени машины, а в iframe прописываем ссылку, например, по "localhost" ribbon панель отображается. Похоже это как-то связано с тем, что в этом случае ссылки на объекты window друг друга не доступны - страницы в разных доменах. Но это конечно не выход из ситуации. И не совсем понятно, как к этому относиться: Microsoft намеренно не хочет, чтобы страницы CRM отображались в iFrame? Но тогда почему такая странная реализация - не грузится ribbon. Да и вообще при наличии большого количества различных систем в компании невозможность отобразить окно бизнес-приложения в другой ИС - довольно странное ограничение. Либо все же эту проблему можно как-то обойти. |
|
29.03.2012, 10:36 | #4 |
Участник
|
Может Вам в таком случае ссылку в iframe генерировать в зависимости от того, что у Вас сейчас в адресной строке броузера. ЧТобы всегда быть в одном домене. У меня была ситуация когда обращения из localhost не работали, т.к. ссылка содержала имя машины и наоборот.
Ваш текущий URL находится в location.host Из него можно получить имя сервера, протокол, порт, огранизацию. Если распарсить. |
|
29.03.2012, 12:42 | #5 |
Участник
|
А в этом как раз и заключается проблема: на реальной системе ссылку я генерю из window.location.protocol, window.location.host. И когда они оказываются в одном домене, ribbon не отображается, а отображается, когда страница и CRM в разных доменах. В этом случае окно CRM себя ведет себя так, как будто оно загружено не в iframe (связываю я это с недоступностью объектной модели родительского окна). Но в этом случае возникают проблемы с вызовом функций окна CRM по понятным причинам. Надеялся, что кто-нибудь сталкивался с подобной проблемой.
Выход конечно есть - скрывать область риббона и в кастомной странице по сути дублировать функционал кнопок риббона - но это конечно не самое эффективное решение. |
|
29.03.2012, 15:23 | #6 |
Участник
|
Попробуйте в конце URL добавить &extraqs=?
|
|
29.03.2012, 18:00 | #7 |
Участник
|
К сожалению, не помогло
|
|
30.03.2012, 14:28 | #8 |
Участник
|
Попробуйтк заполнит ваш iframe вот таким линком.
http://<SERVER>:<PORT>/<ORAGNIZATION>/userdefined/edit.aspx?etc=<ETC>&id=<ID>&pagemode=iframe# Нужно подставить параметры для вашей сущности.
__________________
Читайте SDK!!! |
|
06.06.2012, 11:08 | #9 |
Участник
|
У меня та же проблема
Кто-нибудь знает решение? Ссылка типа /userdefined/edit.aspx не годиться, так как отображает одну запись, а не список. |
|
06.06.2012, 11:56 | #10 |
Участник
|
Получается так что если сделать отдельную HTML-страницу (например веб-ресурс), на нем разместить IFRAME и попытаться в нем вывести страницу со списком из CRM то эта страница будет без риббона. Точно также она будет без него если вместо IFRAME переопределить содержимое HTML-страницы с помощью AJAX. Все работает, но риббона нет. Этого я вообще не понимаю...
|
|
06.06.2012, 12:05 | #11 |
Консультант-джедай
|
А играться с параметром &pagemode=iframe не пробовали?
__________________
Крокодил, крокожу и буду крокодить. Человек человеку - волк , а зомби зомби - зомби. Экстремал и буду экстремать! Блога |
|
|
|