Разработка
09
Май
0

Передача кастомных параметров в OpenEntityForm

В CRM 2011 SDK Microsoft презентовала новую JS-функцию Xrm.Utility.OpenEntityForm, с помощью которой можно, например, эффективно копировать записи.

Но, допустим, Вы хотите знать на принимающей стороне контекст источника вызова, а для этого нужно передать вместе с функцией дополнительные параметры. Просто так этого не сделать – MS CRM «строго типизированная» система 🙂 Поэтому сначала нужно объявить эти дополнительные параметры. Рассмотрим на небольшом примере:

  • Откройте редактор форм принимающего объекта (т.е. форму которого мы будем открывать скриптом). В диалоге Свойств формы перейдите на вкладку Параметры. Добавьте необходимое количество параметров. Без данного объявления, любые дополнительные параметры, переданные в строке URL, будут вызывать ошибку при открытии формы;
  • Создайте JS Веб-ресурс, который будет формировать кастомные параметры и открывать новую форму:
    function OpenNewEmail() {
        // Устанавливаем параметры, которые хотим передать
        var parameters = {};
        parameters["regarding_Id"] = Xrm.Page.getAttribute("regardingobjectid").getValue()[0].id;
        parameters["regarding_name"] = Xrm.Page.getAttribute("regardingobjectid").getValue()[0].name;
        parameters["regarding_type"] = Xrm.Page.getAttribute("regardingobjectid").getValue()[0].entityType;
    
        // Открываем новую форму
        Xrm.Utility.openEntityForm("email", null, parameters);
    }
    
  • Создайте другой JS Веб-ресурс, который будет на принимающей стороне парсить и обрабатывать входящие кастомные параметры:
    function OnFormLoad() {
        // Получаем кастомные параметры
        var xrmObject = Xrm.Page.context.getQueryStringParameters();
        var leadName = xrmObject["regarding_name"].toString();
        var leadId = xrmObject["regarding_Id"].toString();
        var entityType = xrmObject["regarding_type"].toString();
    
        Xrm.Page.data.entity.attributes.get("subject").setValue(entityType + ": " + leadName);
    }
    



Комментарии (0)

*

code