2013-12-06 3 views
0

У меня есть календарь, который отображает действия с CRM 2013. Этот календарь размещен как отдельное приложение MVC4.Ссылка на запись из внешнего webresource в CRM 2013

Я могу просматривать и использовать календарь, перейдя непосредственно к нему по адресу calendar.domain.com или нажав мой путь к нему внутри CRM.

В подробностях каждого события есть ссылка на исходную активность CRM, и, щелкнув по ней, открывается новое окно, указывающее на исходный объект CRM.

Эта последняя часть с ссылкой работает отлично за пределами crm, когда вы используете календарь напрямую, но когда страница интегрирована внутри CRM 2013, новое окно указывает на календарь. Его как CRM блокирует открытие страницы и указывает на исходный источник.

Я интегрировал календарь внутри CRM с помощью webresource со следующим HTML и редактора сайта:

<html> 
<head> 
    <meta charset="utf-8"> 
</head> 
<body> 
    <script type="text/javascript"> 
     window.location.href = "https://calendar.domain.com/"; 
    </script> 
</body> 
</html> 

Когда вы идете в CRM, он перенаправляет к календарю бесшовно.

Я пробовал создавать ссылки с target="_parent" и target="_blank", но оба они приводят к тому же, работают вне CRM, но внутри crm новая страница просто показывает календарь снова.

Я также пытался использовать javascript для перенаправления страницы, но результат все тот же.

<a href="#" onclick="javascript:openUrl('<<url>>');return false;">CRM Activity link</a> 

function openUrl(rurl) { 
    window.open(rurl); 
} 

Я знаю, что есть способы, чтобы открыть объекты с использованием функций SDK, но я надеюсь, что я могу избежать этого, так что я могу использовать один и тот же календарь, как внутри, так и вне CRM.

ответ

1

Использования проб и ошибок, я прибыл на яваскрипт функции, которая открывает запись как новая страница, она работает как снаружи, так и в качестве страницы встроенной в CRM 2013.

Я звоню функцию с чем-то вроде этого :

openEntityRecord("activity", "1234-45687-6785-2342", "https://contoso.mydomain.com"); 

Функция:

function openEntityRecord(enityLogicalName, guid, baseUrl) { 
    var randomnumber = 100000000 + Math.floor(Math.random() * 900000000); 
    var url = baseUrl + "main.aspx?etn=" + enityLogicalName + "&extraqs=&histKey=" + randomnumber + "&id={" + guid + "}&newWindow=true&pagetype=entityrecord"; 
    window.open(url, "", "status=0,resizable=1,width=1000px,height=600px"); 
} 
+0

Параметр 'параметр histKey' сделал трюк для меня. Вы когда-нибудь находили какую-либо документацию по этому поводу? Кажется, я не знаю официального упоминания об этом. –

+0

Нет, я никогда этого не делал, но как только он начал работать, меня тоже не волновало. :) – JensB

0

Создание некоторых отчетов для CRM я нашел более чистый способ сделать URL.

Вы можете использовать ссылку, которая зародилась в SSRS. Вам нужно 4 вещи для этого:

  • Server Name = Contoso
  • Организация Имя = TestOrg
  • Entity Logical Name = привести
  • Entity Guid = {f06097e3-9d7a-47de-bb2b-2e5e92754524}

А сама ссылка будет выглядеть так:

http://Contoso/TestOrg/CRMReports/viewer/drillopen.aspx?LogicalName=lead&ID=%7bf06097e3-9d7a-47de-bb2b-2e5e92754524%7d

Вместо параметра LogicalName вы можете использовать OTC, который является кодом типа сущности.

См коды типа системы предприятие здесь: http://msdn.microsoft.com/en-us/library/bb887791.aspx