CRM 2011 звонит mscrmsevices и запрашивает учетные данные - PullRequest
0 голосов
/ 19 сентября 2011

Я реконфигурирую приложение, которое мы запускали в CRM 4.0 для запуска в CRM 2011. Ранее оно вызывалось с помощью кнопки на панели инструментов с использованием javascript.

Я перенес JavaScript на веб-ресурс и перенастроиллента, чтобы удерживать кнопку и вызывать требуемую функцию в библиотеке.

Однако при проверке этого у меня запрашивают имя пользователя и пароль, которые при вводе 3 или около того времени возвращают ошибку "'null' равно нулю илине объект ".

Я не уверен, почему меня запрашивают учетные данные, если это не произошло в CRM 4.0.

Есть идеи, что может быть причиной этого?

Ниже приведен javascript:

try 
{
var ADD_LETTER='1';
var SAVE_DOC_IN_CRM='1';
var STORE_TO_PRINT='1';
var SEND_EMAIL='1';
var SHOW_PARAGRAPHS='1';
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>systemuser</q1:EntityName>' +' <q1:ColumnSet xsi:type=\'q1:ColumnSet\'>' +' <q1:Attributes>' +' <q1:Attribute>systemuserid</q1:Attribute>' +' </q1:Attributes>' +' </q1:ColumnSet>' +' <q1:Distinct>false</q1:Distinct>' +' <q1:Criteria>' +' <q1:FilterOperator>And</q1:FilterOperator>' +' <q1:Conditions>' +' <q1:Condition>' +' <q1:AttributeName>systemuserid</q1:AttributeName>' +' <q1:Operator>EqualUserId</q1:Operator>' +' </q1:Condition>' +' </q1:Conditions>' +' </q1:Criteria>' +' </query>' +' </RetrieveMultiple>' +' </soap:Body>' +'</soap:Envelope>' +'';
var xmlHttpRequest = new ActiveXObject('Msxml2.XMLHTTP');
xmlHttpRequest.Open('POST', '/mscrmservices/2007/CrmService.asmx', false);
xmlHttpRequest.setRequestHeader('SOAPAction', 'http://schemas.microsoft.com/crm/2007/WebServices/RetrieveMultiple');
xmlHttpRequest.setRequestHeader('Content-Type', 'text/xml; charset=utf-8');
xmlHttpRequest.setRequestHeader('Content-Length', xml.length);
xmlHttpRequest.send(xml);
var resultXml = xmlHttpRequest.responseXML;
var entityNode = resultXml.selectSingleNode('//RetrieveMultipleResult/BusinessEntities/BusinessEntity');
var useridNode = entityNode.selectSingleNode('q1:systemuserid');
var sUserId = (useridNode == null) ? '' : useridNode.text;
var sGUID = crmForm.ObjectId;
var sEntity = crmForm.ObjectTypeName;
var sURL = '/ISV/Mergedabc/Mergedabc.aspx?org=' + ORG_UNIQUE_NAME + '&guid=' + sGUID + '&ety=' + sEntity + '&userid=' + sUserId + '&indid=' + sGUID + '&indtype=' + crmForm.ObjectTypeCode + '&indtypename=' + sEntity + '&addletter=' + ADD_LETTER + '&docincrm=' + SAVE_DOC_IN_CRM + '&storetoprint=' + STORE_TO_PRINT + '&emaildoc=' + SEND_EMAIL + '&showparas=' + SHOW_PARAGRAPHS;
var objRet = window.showModalDialog(prependOrgName(sURL));

if(objRet != null)
{
if (objRet.length > 0) 
{
    var o = objRet[0];
    if (o.ret == true) 
    {
        alert('Merge Completed.');
    }
    else {
        alert('Unable to merge document.');
    }
}
else 
{
    alert('No merge information returned.');
}
}
}
catch (e) 
{
alert(e.message);
}

Похоже, что это происходит, когда он пытается вызвать CrmService и вызывает ошибку 401.

Любые предложения о том, как это исправить, будутбыть оцененным,

Спасибо !!

1 Ответ

0 голосов
/ 20 сентября 2011

Исправлено - проблема заключалась в XML-выделении всех %amp; %lt; %gt; вместо %, < и > в вызове SOAP.

...