11.09.2009, 14:34 | #21 |
Участник
|
|
|
14.09.2009, 09:43 | #22 |
Участник
|
Господа убил все выходные не смог разобраться что не так с этим кодом.
Вроде все поменял как надо на salesorder и на salesorderdetail. Письмо открывается а описание не вставляется. Вот код в ISV Код: var url = '/' + ORG_UNIQUE_NAME + '/activities/email/edit.aspx?pId=' + crmForm.ObjectId + '&pType='+crmForm.ObjectTypeCode+ '&pName=' + crmForm.all.name.DataValue + '&FillWithSalesOrderDetails=1'; window.open(url); Код: function InsertDescription() { var descrFrame = document.getElementById('descriptionIFrame'); if(descrFrame.readyState != 'Complete') return; var salesorderid = ''; if (crmForm.all.regardingobjectid.DataValue != null && crmForm.all.regardingobjectid.DataValue[0] != null) salesorderid = crmForm.all.regardingobjectid.DataValue[0].id; else return; var textbody = "sрошу выставить счет по данным продуктам:"; 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'>"+ GenerateAuthenticationHeader()+ "<soap:Body>"+ "<Fetch xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>"+ "<fetchXml><fetch mapping='logical'>"+ "<entity name='SalesOrderDetail'>"+ "<attribute name='productdescription'/>"+ "<attribute name='quantity'/>"+ "<attribute name='productid'/>"+ "<attribute name='uomid'/>"+ "<filter type='and'>"+ "<condition attribute='SalesOrderid' operator='eq' value='" + salesorderid + "'/>"+ "</filter>"+ "</entity>"+ "</fetch></fetchXml>"+ "</Fetch>"+ "</soap:Body>"+ "</soap:Envelope>"; var xHReq = new ActiveXObject("Msxml2.XMLHTTP"); xHReq.Open("POST", "/mscrmservices/2007/CrmService.asmx", false); xHReq.setRequestHeader("SOAPAction","http://schemas.microsoft.com/crm/2007/WebServices/Fetch"); xHReq.setRequestHeader("Content-Type", "text/xml; charset=utf-8"); xHReq.setRequestHeader("Content-Length", xml.length); xHReq.send(xml); var resultXml = xHReq.responseXML; var resultSet = resultXml.text; resultSet.replace('<','<'); resultSet.replace('>','>'); var oXmlDoc = new ActiveXObject("Microsoft.XMLDOM"); oXmlDoc.async = false; oXmlDoc.loadXML(resultSet); var results = oXmlDoc.getElementsByTagName('result'); //debugger; for (var i=0; i < results.length;i++) { textbody = textbody + "<br/>"+ (results[i].selectSingleNode('./productid') == null ? "" : results[i].selectSingleNode('./productid').getAttribute('name')) + " " + (results[i].selectSingleNode('./productdescription') == null ? "" : results[i].selectSingleNode('./productdescription').nodeTypedValue) + " в количестве " + (results[i].selectSingleNode('./quantity') == null ? "" : results[i].selectSingleNode('./quantity').nodeTypedValue) + " " + (results[i].selectSingleNode('./uomid') == null ? "" : results[i].selectSingleNode('./uomid').getAttribute('name')); } var descrWindow = document.frames['descriptionIFrame']; descrWindow.document.body.innerHTML = textbody; } if (crmForm.FormType == 1 && window.location.href.indexOf('FillWithSalesOrderDetails=1') != -1) { var descrFrame = document.getElementById('descriptionIFrame'); descrFrame.attachEvent('onreadystatechange',InsertDescription); } Последний раз редактировалось datfi; 14.09.2009 в 09:55. |
|
14.09.2009, 09:59 | #23 |
Чайный пьяница
|
Обращаю внимание на строку, которой вызывается окно открытия. Везде должен быть кодированный амперсанд. Не &, а &. Возможно, проблема в этом заключается. ISV.Config - нормально загружается?
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
14.09.2009, 10:05 | #24 |
Участник
|
Цитата:
&, а & - это в коде в ISV менять? Заранее извеняюсь за свою неграмотность С кодом не работал вообще... |
|
14.09.2009, 10:14 | #25 |
Чайный пьяница
|
Поскольку ISV.Config - это по сути xml, то всякие системные символы вроде &, <, > - необходимо заменять.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
14.09.2009, 10:21 | #26 |
Участник
|
Цитата:
var url = '/' + ORG_UNIQUE_NAME + '/activities/email/edit.aspx?pId=' + crmForm.ObjectId + '&pType='+crmForm.ObjectTypeCode+ '&pName=' + crmForm.all.name.DataValue + '&FillWithSalesOrderDetails=1'; window.open(url); результата не дало. >символы вроде &, <, > - необходимо заменять немного не понял как заменять и где |
|
14.09.2009, 10:47 | #27 |
Чайный пьяница
|
В коде OnLoad строку
if(descrFrame.readyState != 'Complete') return; поменяйте на if(descrFrame.readyState != 'сomplete') return; Регистр - имеет значение. У меня всё заработало. Учитесь отладке. Без этого никак.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
14.09.2009, 10:56 | #28 |
Участник
|
|
|