09.06.2010, 14:10 | #1 |
Участник
|
Ошибка выполнения запроса - система не находить запись
CRM 4.0
С помощью SOAP-запроса пытаюсь квалифицировать интерес. Делаю так: Код: var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); var soapXml = "<?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>" + "<Request xsi:type='SetStateLeadRequest' xmlns='http://schemas.microsoft.com/crm/2006/WebServices'>" + "<EntityId>" + leadId + "</EntityId>" + "<LeadState>Qualified</LeadState>" + "<LeadStatus>3</LeadStatus>" + "</Request>" + "</soap:Body>" + "</soap:Envelope>"; try { xmlhttp.open("POST", "/mscrmservices/2006/CrmService.asmx", false); xmlhttp.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/crm/2006/WebServices/Execute"); xmlhttp.setRequestHeader("Content-Type", "text/xml; charset=utf-8"); xmlhttp.setRequestHeader("Content-Length", soapXml.length); xmlhttp.send(soapXml); var result = xmlhttp.responseXML.xml; if (result.indexOf('faultcode') < 0) crmForm.SubmitCrmForm(1,true,true,false); else alert(result); } catch(e) { alert(e.description); } Код: <?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'> <soap:Header> <CrmAuthenticationToken xmlns="http://schemas.microsoft.com/crm/2007/WebServices"> <AuthenticationType xmlns="http://schemas.microsoft.com/crm/2007/CoreTypes">0</AuthenticationType> <CrmTicket xmlns="http://schemas.microsoft.com/crm/2007/CoreTypes"></CrmTicket> <OrganizationName xmlns="http://schemas.microsoft.com/crm/2007/CoreTypes">MyOrg</OrganizationName> <CallerId xmlns="http://schemas.microsoft.com/crm/2007/CoreTypes">00000000-0000-0000-0000-000000000000</CallerId> </CrmAuthenticationToken> </soap:Header> <soap:Body> <Request xsi:type='SetStateLeadRequest' xmlns='http://schemas.microsoft.com/crm/2006/WebServices'> <EntityId>{3ADEC8AB-466A-DF11-BE5B-00155D6F6500}</EntityId> <LeadState>Qualified</LeadState> <LeadStatus>3</LeadStatus> </Request> </soap:Body> </soap:Envelope> Код: <?xml version="1.0"?> <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"> <soap:Body> <soap:Fault> <faultcode>soap:Server</faultcode> <faultstring>Server was unable to process request.</faultstring> <detail> <error> <code>0x80040217</code> <description>lead With Id = 3adec8ab-466a-df11-be5b-00155d6f6500 Does Not Exist</description> <type>Platform</type> </error> </detail> </soap:Fault> </soap:Body> </soap:Envelope> |
|
09.06.2010, 14:32 | #2 |
Консультант-джедай
|
У меня Ваш код прекрасно отработал (я только leadId захардкодил - скпировал из URL)
__________________
Крокодил, крокожу и буду крокодить. Человек человеку - волк , а зомби зомби - зомби. Экстремал и буду экстремать! Блога |
|
09.06.2010, 15:26 | #3 |
Чайный пьяница
|
Если CRM - 4, то почему пользуетесь сервисами 2006?
xmlhttp.open("POST", "/mscrmservices/2006/CrmService.asmx", false); Попробуйте через 2007 сделать.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
09.06.2010, 15:28 | #4 |
Участник
|
Да у меня на другой системе этот код тоже работает
В общем выяснилась такая штука... Проблема эта на системе с несколькими организациями. Запись ищется в дефолтном инстансе CRM, а не в том, который указан в хидере. Но не могу понять почему так и как сделать чтобы было нормально. |
|
09.06.2010, 15:31 | #5 |
Чайный пьяница
|
Цитата:
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
09.06.2010, 17:24 | #6 |
Участник
|
Поменял 2006 на 2007, остальное не менял, на сколько я понимаю все остальное тоже самое. В результате получаю вот такую ошибку:
Код: <?xml version="1.0"?> <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"> <soap:Body> <soap:Fault> <faultcode>soap:Server</faultcode> <faultstring>Server was unable to process request.</faultstring> <detail> <error> <code>0x80040203</code> <description>request</description> <type>Platform</type> </error> </detail> </soap:Fault> </soap:Body> </soap:Envelope> |
|
09.06.2010, 17:40 | #7 |
Чайный пьяница
|
Сравнил Ваш код с этим. Есть отличия. Попробуйте использовать такой код:
Код: var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); var soapXml = "<?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>" + "<Execute xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>"+ "<Request xsi:type='SetStateLeadRequest'>" + "<EntityId>" + leadId + "</EntityId>" + "<LeadState>Qualified</LeadState>" + "<LeadStatus>3</LeadStatus>" + "</Request>" + "</Execute>"+ "</soap:Body>" + "</soap:Envelope>"; try { xmlhttp.open("POST", "/mscrmservices/2007/CrmService.asmx", false); xmlhttp.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/crm/2007/WebServices/Execute"); xmlhttp.setRequestHeader("Content-Type", "text/xml; charset=utf-8"); xmlhttp.setRequestHeader("Content-Length", soapXml.length); xmlhttp.send(soapXml); var result = xmlhttp.responseXML.xml; if (result.indexOf('faultcode') < 0) crmForm.SubmitCrmForm(1,true,true,false); else alert(result); } catch(e) { alert(e.description); }
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
|
За это сообщение автора поблагодарили: ZooY (1). |
10.06.2010, 10:55 | #8 |
Участник
|
a33ik, спасибо, это то что нужно. В моем коде не хватало строки
<Execute xmlns='http://schemas.microsoft.com/crm/2007/WebServices'> |
|