18.11.2013, 11:44 | #1 |
Участник
|
SOAP Change Status
Доброго всем времени суток уважаемые коллеги!!!
Столкнулся вот с какой проблемкой: с помощью JS необходимо изменить статус записи (PhoneCall) на "закрыть как завершенную", и взамен такой функции которая уже есть в системе SavaAsComplete() Использую вот такой код: Код: function _CloseAsComplete(ID, state, status) { // create the SetState request var request = "<s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">"; request += "<s:Body>"; request += "<Execute xmlns=\"http://schemas.microsoft.com/xrm/2011/Contracts/Services\" xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\">"; request += "<request i:type=\"b:SetStateRequest\" xmlns:a=\"http://schemas.microsoft.com/xrm/2011/Contracts\" xmlns:b=\"http://schemas.microsoft.com/crm/2011/Contracts\">"; request += "<a:Parameters xmlns:c=\"http://schemas.datacontract.org/2004/07/System.Collections.Generic\">"; request += "<a:KeyValuePairOfstringanyType>"; request += "<c:key>EntityMoniker</c:key>"; request += "<c:value i:type=\"a:EntityReference\">"; request += "<a:Id>" + ID + "</a:Id>"; request += "<a:LogicalName>cmic_systemusersalesterritoryassociation</a:LogicalName>"; request += "<a:Name i:nil=\"true\" />"; request += "</c:value>"; request += "</a:KeyValuePairOfstringanyType>"; request += "<a:KeyValuePairOfstringanyType>"; request += "<c:key>State</c:key>"; request += "<c:value i:type=\"a:OptionSetValue\">"; request += "<a:Value>"+ state +"</a:Value>"; request += "</c:value>"; request += "</a:KeyValuePairOfstringanyType>"; request += "<a:KeyValuePairOfstringanyType>"; request += "<c:key>Status</c:key>"; request += "<c:value i:type=\"a:OptionSetValue\">"; request += "<a:Value>"+ status +"</a:Value>"; request += "</c:value>"; request += "</a:KeyValuePairOfstringanyType>"; request += "</a:Parameters>"; request += "<a:RequestId i:nil=\"true\" />"; request += "<a:RequestName>SetState</a:RequestName>"; request += "</request>"; request += "</Execute>"; request += "</s:Body>"; request += "</s:Envelope>"; //send set state request $.ajax({ type: "POST", contentType: "text/xml; charset=utf-8", datatype: "xml", url: Xrm.Page.context.getServerUrl() + "/XRMServices/2011/Organization.svc/web", data: request, beforeSend: function (XMLHttpRequest) { XMLHttpRequest.setRequestHeader("Accept", "application/xml, text/xml, */*"); XMLHttpRequest.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/xrm/2011/Contracts/Services/IOrganizationService/Execute"); }, success: function (data, textStatus, XmlHttpRequest) { Xrm.Page.ui.close(); }, error: function (XMLHttpRequest, textStatus, errorThrown) { alert(errorThrown); } }); } но у меня при попытке выполнить данную функцию получаю ошибку "Intel Server Error" и соответственно сама запись не закрывается. Подобный код на отлично отрабатывает при квалификации(дисквалификации и возобновлении интереса) но на Звонке он выдает подобную ошибку. Просьба проконсультировать по данной ошибке. За ранее спасибо. |
|
18.11.2013, 12:09 | #2 |
Участник
|
Я бы сделал так.
Написал код на C# и воспользовался бы SoapLogger. Он в СДК есть. Эта тулза формирует Soap запросы, которые были на сервис отправлены. Потом бы взял запрос и использовал в JS. Пример SoapLogger |
|