Разработка
16
Окт
0

Передача лукапа в openEntityForm

В стандартной библиотеке CRM есть такой замечательный метод – Xrm.Utility.openEntityForm, который открывает форму объекта и позволяет предзаполнять на ней любые поля… Кроме лукапов 🙂 Формально причина в том, что метод openEntityForm не научили передавать комплексное значение, кое представляет из себя лукап.

Но если нельзя сделать нормальными средствами, всегда можно прикрутить костыль 🙂

Решение состоит из трех шагов:

  1. На открываемой форме заводятся три параметра формы (строковые) – каждый под отдельный компонент лукапа: GUID, отображаемое значение и название объекта.
  2. В методе openEntityForm каждый из элементов лукапа передается отдельной строкой:
    function OpenNewForm() {
        // Каждый элемент лукапа передаем отдельным параметром
        var parameters = {};
        parameters["customer_id"] = Xrm.Page.data.entity.getId().replace("{", "").replace("}", "");
        parameters["customer_name"] = Xrm.Page.getAttribute("name").getValue();
        parameters["customer_type"] = "account";
    
        Xrm.Utility.openEntityForm("opportunity", null, parameters);
    }
    
  3. На открываемой форме с помощью JS на онлоаде считываем эти три параметра и формируем из них значение для лукапа^
    function FillAcc() {
        // Считываем переданные параметры
        var xrmObject = Xrm.Page.context.getQueryStringParameters();
        var customer_id = xrmObject["customer_id"].toString();
        var customer_name = xrmObject["customer_name"].toString();
        var customer_type = xrmObject["customer_type"].toString();
    
        // Формируем и заполняем лукап
        if (customer_id != null && customer_id != undefined) {
            var lookupValue = new Array();
            lookupValue[0] = new Object();
            lookupValue[0].id = customer_id;
            lookupValue[0].name = customer_name;
            lookupValue[0].entityType = customer_type;
            Xrm.Page.getAttribute("parentaccountid").setValue(lookupValue);
        }
    }
    



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

*

code