I was put it in OnLoad() event of my account form, and in the lookup field(at my example - new_postalcodeid) at OnChange() event I was calling my function.
There is two function that are doing the same work but with different methods.
var authenticationHeader = GenerateAuthenticationHeader(); crmForm.all.address1_city.ForceSubmit = true; window.GetRegionByIndex_Retrieve = function() { if (crmForm.all.new_postalcodeid.DataValue == null) { crmForm.all.address1_city.Disabled = false; crmForm.all.address1_city.DataValue = ""; return; } var lookupItem = new Array; lookupItem = crmForm.all.new_postalcodeid.DataValue; if(lookupItem[0] != null) { // Prepare the SOAP message. var 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>new_postalcode</entityName>"+ "<id>"+lookupItem[0].id+"</id>"+ "<columnSet xmlns:q1='http://schemas.microsoft.com/crm/2006/Query' xsi:type='q1:ColumnSet'>"+ "<q1:Attributes>"+ "<q1:Attribute>new_regcityarea</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) { var msg = resultXml.selectSingleNode('//description').nodeTypedValue; alert(msg); } // Display the retrieved value. else { crmForm.all.address1_city.DataValue = resultXml.selectSingleNode("//q1:new_regcityarea").nodeTypedValue; crmForm.all.address1_city.Disabled = true; } } } window.GetRegionByIndex_Fetch = function (){ if (crmForm.all.new_postalcodeid.DataValue == null) { crmForm.all.address1_city.Disabled = false; crmForm.all.address1_city.DataValue = ""; return; } var lookupItem = new Array; lookupItem = crmForm.all.new_postalcodeid.DataValue; if(lookupItem[0] != null) { var 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>" + "<Fetch xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>" + "<fetchXml>" + "<fetch mapping='logical'>" + "<entity name='new_postalcode'>" + "<attribute name='new_postalcodeid'/>"+ "<attribute name='new_regcityarea'/>"+ "<filter type='and'>"+ "<condition attribute='new_postalcodeid' operator='eq' value='"+lookupItem[0].id+"'/>"+ "</filter></entity></fetch>" + "</fetchXml>" + "</Fetch>" + " </soap:Body>" + "</soap:Envelope>"; var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP"); xmlHttpRequest.Open("POST", "/mscrmservices/2007/CrmService.asmx", false); xmlHttpRequest.setRequestHeader("SOAPAction","http://schemas.microsoft.com/crm/2007/WebServices/Fetch"); xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8"); xmlHttpRequest.setRequestHeader("Content-Length", xml.length); xmlHttpRequest.send(xml); var resultXml = xmlHttpRequest.responseXML; // Check for errors. var errorCount = resultXml.selectNodes('//error').length; if (errorCount != 0) { var msg = resultXml.selectSingleNode('//description').nodeTypedValue; alert(msg); } // Process and display the results. else { // Capture the result and UnEncode it. var resultSet = new String(); resultSet = resultXml.text; resultSet.replace('<','<'); resultSet.replace('>','>'); var xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async = false; xmlDoc.loadXML(resultSet); var results = xmlDoc.getElementsByTagName('result'); for(i=0;i<results.length;i++) { crmForm.all.address1_city.DataValue = results[i].selectSingleNode('//new_regcityarea').nodeTypedValue; } crmForm.all.address1_city.Disabled = true; } } }
1 комментарий:
Look on http://danielcai.blogspot.com/2010/05/mscrm4-web-service-toolkit-for.html and http://mmcrm.ru/?p=919
It can be made easier.
Отправить комментарий