Dynamics CRM 2011 формы jscript для извлечения данных поиска - PullRequest
0 голосов
/ 17 августа 2011

В чем мои ошибки, почему я получаю ошибку "ожидаемый объект" и, в конце концов, как отладить jScript?

Я новичок в Dynamics CRM, и я хотел бы сделать небольшую настройку, которая, кажется, требует jScript. Экземпляр (версия 2011) в основном используется для управления поддержкой клиентов.

Есть 2 пользовательских объекта со связями: FundLegalEntity -> SubFund

Форма «Дело (Инцидент)» связана с FundLegalEntity и Подфондом.
Когда пользователь вводит подфонд, я хотел бы, чтобы FundLegalEntity заполнялся автоматически (если он пуст).
Мой вопрос был: как мне кодировать ?

С помощью этого замечательного учебника и очень полезного инструмента oData и отличной помощи (ниже) от пользователя @dub, вот мой последний код:

function recalcParent()
{ 
    var lookupValue = Xrm.Page.getAttribute("new_subfundid").getValue();   

    var subFundId= lookupValue[0].id;
    // alert(subFundId);

    var request =  Xrm.Page.context.getServerUrl() + 
        "/xrmServices/2011/OrganizationData.svc/new_subfundSet?" + 
        "$select=new_LegalEntityId&" + 
        "$filter=new_subfundId eq guid'"+ subFundId+ "'";
    // alert(request);

$.ajax({
    type: "GET",
    contentType: "application/json; charset=utf-8",
    datatype: "json",
    url: request,
    async: false,
    beforeSend: 
        function (XMLHttpRequest) 
        { 
            XMLHttpRequest.setRequestHeader("Accept", "application/json"); 
        },
    success: 
        function (data, textStatus, XmlHttpRequest) 
        {
            var result = data.d.results[0];
            alert(result);
            var parentFundLookup = [{ entityType : "new_fund", id : result.LegalEntityId, name : result.FundLegalEntity}];                  
            // Set the value of the parent fund lookup 
        },
    error: 
        function (XmlHttpRequest, textStatus, errorThrown) 
        { 
            alert('Failed'); 
        }
    });       

} 

У меня больше нет ошибок, первые два оповещения (начинаются) дают мне правильные результаты. Третье предупреждение отображает «объект-объект», а элемент управления, который я ожидаю обновить, не обновляется.
Любой намек, пожалуйста? Я полагаю, что последняя проблема в строке var parentFundLookup = ...
Меня немного смущают все эти разные имена.
Спасибо !


Edit:

Это почти работает сейчас: когда я изменяю субфонд в Инциденте, Юридическое лицо обновляется с правильным именем юридического лица, но текстовое поле имеет странный аспект, а значок слева от текстового поля тоже странно. Вот последний бит кода:

success: 
    function (data, textStatus, XmlHttpRequest) 
    {
        var result = data.d.results[0];
        //alert(result.new_LegalEntityId.Name);
        var parentFundLookup = [{ entityType : "new_LegalEntity", id : result.new_LegalEntityId.Id, name : result.new_LegalEntityId.Name}];    
        Xrm.Page.getAttribute("new_fundlegalentityid").setValue(parentFundLookup);
    },

Я подозреваю, что проблема заключается в entityType : "new_LegalEntity", но я не знаю, что туда вставить. Есть какие-нибудь подсказки по этому поводу? Что это представляет?
Вот скриншот Юридического лица после обновления Подфонда и запуска сценария.

1 Ответ

3 голосов
/ 18 августа 2011

Вы можете использовать конечную точку Rest из вашего скрипта для извлечения данных из службы организации.Вот пример, чтобы вы начали.Вы также можете посмотреть документацию по SDK, там много полезной информации.

var subfundid; // get the id from the lookup 

var request = 
    Xrm.Page.context.getServerUrl() + 
    "/XRMServices/2011/OrganizationData.svc/new_subfundSet?" + 
        "$select=ParentId&" +
        "$top=1&" + 
        "$filter=new_subfundId eq guid'"+ subfundid + "'";

$.ajax({
    type: "GET",
    contentType: "application/json; charset=utf-8",
    datatype: "json",
    url: request,
    async: false,
    beforeSend: 
        function (XMLHttpRequest) 
        { 
            XMLHttpRequest.setRequestHeader("Accept", "application/json"); 
        },
    success: 
        function (data, textStatus, XmlHttpRequest) 
        {
            var result = data.d.results[0];
            var parentFundLookup = [{ entityType : "new_fund", id : result.ParentId, name : result.FundName}];                  
            // Set the value of the parent fund lookup 
        },
    error: 
        function (XmlHttpRequest, textStatus, errorThrown) 
        { 
            alert('Failed'); 
        }
    });

Поскольку этот код использует JQuery, вам необходимо добавить библиотеку JQuery в качестве веб-ресурса и включить ее в форму.См. CRM 2011 "$ undefined"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...