我有一个包含查找联系人的表单。因此,我可以获得联系人的guid,名称和类型名称。
此代码:
var temp = crmForm.all.to.DataValue;
alert(temp[0].id + "\n" + temp[0].name + "\n" + temp[0].typename);
返回有效的guid,名称和类型。
如何使用此信息获取此联系人的属性(本例中为电话号码)?我试图在表单的OnLoad
函数中执行此操作,因此我需要在javascript中执行此操作。
答案 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");