Как вы знаете, к стандартным веб-службам MS CRM можно обращаться непосредственно с помощью JavaScript. Здесь мы уже рассматривали пример для работы с веб-службой CRM в MS CRM 3.0, но в MS CRM 4.0 он не работает, т.к. обновился сам вызов веб-службы CrmService. Поэтому привожу функцию, которая позволяет получить любой атрибут сущности зная лишь GUID записи, используя метод Retrieve:

Пример функции вызова Retrieve

function GetAttributeValueFromID(sEntityName, GUID, sAttributeName)
{
var authenticationHeader = GenerateAuthenticationHeader();
// Prepare the SOAP message.
var xml = «»;
xml = xml+»<?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’>»+
authenticationHeader+
«<soap:Body>»+
«<Retrieve xmlns=’http://schemas.microsoft.com/crm/2007/WebServices’>»+
«<entityName>»+sEntityName+»</entityName>»+
«<id>»+GUID+»</id>»+
«<columnSet xmlns:q1=’http://schemas.microsoft.com/crm/2006/Query’ xsi:type=’q1:ColumnSet’>»+
«<q1:Attributes>»+
«<q1:Attribute>»+sAttributeName+»</q1:Attribute>»+
«</q1:Attributes>»+
«</columnSet>»+
«</Retrieve>»+
«</soap:Body>»+
«</soap:Envelope>»;
// Prepare the xmlHttpObject and send the request.
var xHReq = new ActiveXObject(«Msxml2.XMLHTTP»);
xHReq.Open(«POST», «/mscrmservices/2007/CrmService.asmx», false);
xHReq.setRequestHeader(«SOAPAction»,»http://schemas.microsoft.com/crm/2007/WebServices/Retrieve»);
xHReq.setRequestHeader(«Content-Type», «text/xml; charset=utf-8″);
xHReq.setRequestHeader(«Content-Length», xml.length);
xHReq.send(xml);
// Capture the result.
var resultXml = xHReq.responseXML;

// Check for errors.
var errorCount = resultXml.selectNodes(‘//error’).length;

var result = resultXml.selectSingleNode(«//q1:» + sAttributeName).nodeTypedValue;
if (errorCount != 0)
{
var msg = resultXml.selectSingleNode(‘//description’).nodeTypedValue;
result = » «;
alert(msg);
}
// Display the retrieved value.
else
{
return result;
}
}

Пример вызова:

crmForm.all.new_field.value = GetAttributeValueFromID(«account»,»{GUID_RECORD}»,»name»);

Остальные методы описаны в SDK достаточно подробно, возможно, мы к ним вернемся.