Попробуйте такой.
В принципе учёл варианты создания/изменения. Тут уже дело за Вами. Тестируйте. По идее всё честно.
Код:
if (crmForm.all.new_invoice.DataValue != 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'>"+
GenerateAuthenticationHeader()+
"<soap:Body>"+
"<RetrieveMultiple xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>"+
"<query xmlns:q1='http://schemas.microsoft.com/crm/2006/Query'"+
" xsi:type='q1:QueryExpression'>"+
"<q1:EntityName>new_payment</q1:EntityName>"+
"<q1:ColumnSet xsi:type='q1:ColumnSet'>"+
"<q1:Attributes>"+
"<q1:Attribute>new_summ</q1:Attribute>"+
"</q1:Attributes>"+
"</q1:ColumnSet>"+
"<q1:Distinct>false</q1:Distinct>"+
"<q1:Criteria>"+
"<q1:FilterOperator>And</q1:FilterOperator>"+
"<q1:Conditions>"+
"<q1:Condition>"+
"<q1:AttributeName>new_invoice</q1:AttributeName>"+
"<q1:Operator>Equal</q1:Operator>"+
"<q1:Values>"+
"<q1:Value xsi:type='xsd:string'>"+crmForm.all.new_invoice.DataValue[0].id+"</q1:Value>"+
"</q1:Values>"+
"</q1:Condition>";
if (crmForm.FormType != 1)
{
xml = xml + "<q1:Condition>"+
"<q1:AttributeName>new_paymentid</q1:AttributeName>"+
"<q1:Operator>NotEqual</q1:Operator>"+
"<q1:Values>"+
"<q1:Value xsi:type='xsd:string'>" + crmForm.ObjectId + "</q1:Value>"+
"</q1:Values>"+
"</q1:Condition>";
}
xml = xml + "</q1:Conditions>"+
"</q1:Criteria>"+
"</query>"+
"</RetrieveMultiple>"+
"</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/RetrieveMultiple");
xHReq.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
xHReq.setRequestHeader("Content-Length", xml.length);
xHReq.send(xml);
var resultXml = xHReq.responseXML;
if (results.length != 0)
{
var summa = 0
for (i=0;i < results.length;i++)
{
summa = summa + parseFloat(results[i].selectSingleNode('./q1:new_summ') == null ? 0 :results[i].selectSingleNode('./q1:new_summ').nodeTypedValue);
}
if (crmForm.all.new_summ.DataValue != null)
summa = summa + crmForm.all.new_summ.DataValue;
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>"+
"<Update xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>"+
"<entity xsi:type='invoice'>"+
"<ec_totalpayment>"+atr+"</ec_totalpayment>"+
"<invoiceid>"+crmForm.all.new_invoice.DataValue[0].id+"</invoiceid>"+
"</entity>"+
"</Update>"+
"</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/Update");
xHReq.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
xHReq.setRequestHeader("Content-Length", xml.length);
xHReq.send(xml);
}
}