|
|
|
|
#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> |
|
|
|
|
#2 |
|
Консультант-джедай
|
У меня Ваш код прекрасно отработал (я только leadId захардкодил - скпировал из URL)
__________________
Крокодил, крокожу и буду крокодить. Человек человеку - волк , а зомби зомби - зомби. Экстремал и буду экстремать! Блога
|
|
|
|
|
#3 |
|
Чайный пьяница
|
Если CRM - 4, то почему пользуетесь сервисами 2006?
xmlhttp.open("POST", "/mscrmservices/2006/CrmService.asmx", false); Попробуйте через 2007 сделать.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
|
|
|
#4 |
|
Участник
|
Да у меня на другой системе этот код тоже работает
![]() В общем выяснилась такая штука... Проблема эта на системе с несколькими организациями. Запись ищется в дефолтном инстансе CRM, а не в том, который указан в хидере. Но не могу понять почему так и как сделать чтобы было нормально. |
|
|
|
|
#5 |
|
Чайный пьяница
|
Цитата:
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
|
|
|
#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> |
|
|
|
|
#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). | |
|
|
#8 |
|
Участник
|
a33ik, спасибо, это то что нужно. В моем коде не хватало строки
<Execute xmlns='http://schemas.microsoft.com/crm/2007/WebServices'> |
|
|