28.08.2012, 14:59 | #1 |
Участник
|
CRM 4.0 Подразделение возможной сделки
Добрый день!
Написала код для получения наименования подразделения текущей сделки. X++: var oAttribute = crmForm.ObjectId; if (oAttribute!= null) { sEntityName = 'opportunity'; GUID = oAttribute; sAttributeName = 'owningbusinessunit'; var authenticationHeader = GenerateAuthenticationHeader(); 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; if (errorCount == 0) { if (resultXml.selectSingleNode("//q1:" + sAttributeName) != null) { var owningbusinessunit = resultXml.selectSingleNode("//q1:" + sAttributeName).getAttribute("name"); alert(owningbusinessunit); } } } |
|
28.08.2012, 18:42 | #2 |
Moderator
|
Я думаю проблема в том, что атрибут "name" не инициируется в ответе. Скорее всего там есть только "type" и "Value". Чтобы получить имя, нужно сделать более сложный запрос к связанному объекту BusinessUnit. Я думаю что это проще сделать через Fetch. Альтернативная реализация - получить имя подразделения вторым запросом по известному Id.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
|
За это сообщение автора поблагодарили: probka (1). |
29.08.2012, 11:56 | #3 |
Участник
|
Спасибо. Сделала второй запрос, все получилось.
|
|
|
|