Разработка
19
Сен
5

Контекст выполнения JavaScript – Xrm

Те кто раньше (во времена CRM 4, например) любил пользоваться DevToolBar’ом для тестированная JS-кода, сейчас могут столкнуться с проблемой, что их код в нем не выполняется.
При работе с CRM 4 достаточно было открыть CRM, перейти на вкладку Script и вбить нужный код.

И все прекрасно работало, потому что JS-код находился на головной странице. Теперь же, в связи с введением мульти-форм, JS-код располагается в iFrame’е формы. Через него и нужно работать…

Например, имеется следующий код (который прекрасно работает на форме CRM):

alert(Xrm.Page.context.getServerUrl());

Чтобы его выполнить его в DevToolBar’е, нужно делать так:

b = document.getElementById('contentIFrame').contentWindow;
alert(b.Xrm.Page.context.getServerUrl());

Аналогичным способом можно вызвать и кастомный код, добавленный на форму!


Кастомные страницы

Если Вы хотите использовать контекст CRM на кастомных HTML-страницах (загруженных, например, как Веб-ресурсы), Вам необходимо подключить стандартную библиотеку:

<SCRIPT src="../../ClientGlobalContext.js.aspx"></SCRIPT>

После чего можете использовать контекст:

<A onclick=alert(GetGlobalContext().getUserId()) href="#">GUID текущего Пользователя</A>

<A onclick=alert(GetGlobalContext().getServerUrl()) href="#">URL текущей организации</A>

<A onclick='window.navigate(GetGlobalContext().getServerUrl() + "cs/dialog/rundialog.aspx?DialogId=%7bFB220519-F0EB-4E46-AA9B-2A638885F6A5%7d&amp; EntityName=systemuser&amp;ObjectId=" + GetGlobalContext().getUserId() )' href="#">Запуск Диалога</A>
Комментарии (5)
  • Nataly 19.09.2011

    добрый день. делаю web форму для встраивания в стрницу CRM столкнулась с проблемой: window.parent.Xrm вызывает «Permission denied» попытка найти из своего кода b = document.getElementById(‘contentIFrame’).contentWindow; возвращает элемнт не найден, хотя просмтр html показывате что такой элемнт есть, вчем может быть проблема?

  • slivka_83 19.09.2011

    Здасьте 🙂

    А у Вас случаем страничка находится не в другом домене? URL с CRM’ным совпадает?

  • Nataly 19.09.2011

    да в разных доменах. отличаются. и что делать?

  • slivka_83 19.09.2011

    Ну, вобще это больная тема. Поскольку по-хорошему кросс-доменные обращения скриптов запрещены. О нормальном решении для CRM я не слышал.

    Можно вот на эту тему почитать:
    http://msdn.microsoft.com/en-us/library/bb735305.aspx
    http://javascript.ru/ajax/cross-domain-scripting

  • Nataly 19.09.2011

    спасибо! у меня с самого начала были подозрения что что-то где-то кто-то запрещает. буду читать илил убеждать что размещать надо в одном домене

*

code