按GUID检索实体的属性

时间:2011-07-07 15:07:42

标签: javascript dynamics-crm dynamics-crm-4

我有一个包含查找联系人的表单。因此,我可以获得联系人的guid,名称和类型名称。

此代码:

var temp =  crmForm.all.to.DataValue;
alert(temp[0].id + "\n" + temp[0].name + "\n" + temp[0].typename); 

返回有效的guid,名称和类型。

如何使用此信息获取此联系人的属性(本例中为电话号码)?我试图在表单的OnLoad函数中执行此操作,因此我需要在javascript中执行此操作。

1 个答案:

答案 0 :(得分:1)

您可以使用以下方法调用webservices

function GetObjectAttribute(objectid, entityname, attribute) {
    // Preparer the SOAP message
    var message =
        [
        "<?xml version='1.0' encoding='utf-8'?>",
        "<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'",
        " xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'",
        " xmlns:xsd='http://www.w3.org/2001/XMLSchema'>",
        GenerateAuthenticationHeader(),
        "<soap:Body>",
        "<Retrieve xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>",
        "<entityName>",
        entityname,
        "</entityName>",
        "<id>",
        objectid,
        "</id>",
        "<columnSet xmlns:q1='http://schemas.microsoft.com/crm/2006/Query'",
        " xsi:type='q1:ColumnSet'>",
        "<q1:Attributes><q1:Attribute>",
        attribute,
        "</q1:Attribute></q1:Attributes>",
        "</columnSet></Retrieve>",
        "</soap:Body></soap:Envelope>"
        ].join("");

    var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    xmlhttp.open("POST", "/MSCrmServices/2007/CrmService.asmx", false);
    xmlhttp.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/crm/2007/WebServices/Retrieve");
    xmlhttp.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
    xmlhttp.setRequestHeader("Content-Length", message.length);
    xmlhttp.send(message);

    var result = xmlhttp.responseXML;
    var error = result.selectNodes('//error').length;
    if (error == 0) {
        var attributeNode = result.selectSingleNode('//q1:' + attribute);
        if (attributeNode != null) {
            return attributeNode.text;
        }
    }
    return null;
}

使用

var fullname = GetObjectAttribute(<GUID>, "Contacts", "fullname");