Вообще Update Rollup 8 для Microsoft Dynamics CRM вышел еще в мае, но разработчики никаким образом не заостряли внимание на изменениях в SDK. В результате мимо меня прошел тот факт, что появились JavaScript функции, недоступные ранее. И честно говоря факт их отсутствия меня порядком огорчал.
Функции были добавлены, т.к. сценарии использующие windows.open, например, из Outlook чтобы открыть форму или веб-ресурс сталкивались с тем что пользователь вынужден был повторно авторизоваться. Проблема заключалась в том что функция по сути запускала новый процесс, который не был авторизован. В обновлении были добавлены некоторые функции обертки, который во первых упростили и сделали использование таких сценариев более корректным, а во вторых исключили проблему с необходимостью повторной авторизации.
Пока что описание вызовов можно найти только на блогах разработчиков, но скоро они должны попасть в обновление SDK.
Xrm.Utility Reference
Xrm.Utility это контейнер для полезных функций, не связанных непосредственно с текущей страницей. Эти функции доступны для сценариев и для ленты (Ribbon). Для HTML веб-ресурсов, они будут доступны после подключения ClientGlobalContext.js.aspx.
Функции
Открывает форму сущности.
Xrm.Utility.openEntityForm(name,id,parameters)
Параметры
-
name (название)
- Тип: String
- Требует: Логическое имя сущности.
-
id
- Тип: String
- Опционально: Строка с уникальным идентификатором (Guid) записи, для открытия формы редактора сущности. Если оставить пустым откроется форма создания записи.
-
parameters
- Тип: Object
- Опционально: Объект-словарь, позволяющий передавать дополнительные параметры строки запроса. Если строка запроса будет не верна это может вызвать ошибки.Допустимые дополнительные параметры запроса:
Возвращаемое значение: Window object.
Примечание: Данная функция обесперичает наилучший способ разработки, чем простое манипалирование URL адресами через windows.open описанным здесь. Использование данной функции также позволит гарантировать отсутствие повторного окна для авторизации пользователя.
Примеры:
Открытие новой записи «Организации»
Xrm.Utility.openEntityForm("account");
Открытие существующей записи «Организации»
Xrm.Utility.openEntityForm("account","A85C0252-DF8B-E111-997C-00155D8A8410");
Открытие новой записи «Организации» с установкой значений по умолчанию и использование конкретной формы из нескольких доступных.
var parameters = {};
parameters["formid"] = "b053a39a-041a-4356-acef-ddf00182762b";
parameters["name"] = "Test";
parameters["telephone1"] = "(425) 555-1234";
Xrm.Utility.openEntityForm("account", null, parameters);
Открытие новой записки «Контакта», перемещение в верхний левый угол экрана и установка необходимого размера окна.
Примечание
Нельзя использовать методы объекта windows, такие как moveTo или resizeTo в скриптах, так как они могут быть запущены через Microsoft Dynamics CRM для Microsoft Office Outlook
var newWindow = Xrm.Utility.openEntityForm("contact");
newWindow.moveTo(0,0);
newWindow.resizeTo(800,600);
openWebResource
Открывает HTML веб-ресурс.
Xrm.Utility.openWebResource(webResourceName,webResourceData,width, height)
Параметры
-
webResourceName
- Тип: String
- Требует: Название HTML веб-ресурса, который необходимо открыть.
-
webResourceData
- Тип: String
- Опционально: Значение которые необходимо передать в параметре data.
-
width
- Тип: Number
- Опционально: Ширина открываемого окна в пикселях.
-
height
- Тип: Number
- Опционально: Высота открываемого окна в пикселях.
Возвращаемое значение: Window object.
Примечание: HTML веб-ресур может принмать параметры описанные в Passing Parameters to HTML Web Resources .Данная функция только опеспечиваем передачу значений в параметр data. Для передачи значений других допустимых параметров необходимо добавить их к параметру webResourceName.
Примеры:
Открытие HTML веб-ресурса под названием “new_webResource.htm”:
Xrm.Utility.openWebResource("new_webResource.htm");
Открытие HTML веб-ресурса с включением одного значение в параметр data.
Xrm.Utility.openWebResource(«new_webResource.htm»,»dataItemValue»);
Открытие HTML веб-ресурса получающего несколько значений через параметр data.
var customParameters = encodeURIComponent("first=First Value&second=Second Value&third=Third Value");
Xrm.Utility.openWebResource("new_webResource.htm",customParameters);
Открытие HTML веб-ресурса с дополнительными параметрами
Xrm.Utility.openWebResource("new_webResource.htm?typename=account&userlcid=1033");
Подробнее Passing Parameters to HTML Web Resources .
Открытие веб-ресурса с указанием ширины и высоты:
Xrm.Utility.openWebResource("new_webResource.htm", null, 300,300);
Если Вы нашли ошибку, пожалуйcта выделите ее и нажмите Shift + E или нажмите здесь чтобы информировать меня. Спасибо.