Вызов CRM 2011 для mscrmsevices с запросом учетных данных

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

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

Однако при тестировании этого мне предлагается ввести имя пользователя и пароль, которые при вводе 3 или около того раз возвращают ошибку «'null' is null or not a object».

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

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

Яваскрипт ниже:

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.

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

Спасибо!!


person Brett    schedule 19.09.2011    source источник
comment
Появляется ли запрос на вход до появления страницы или после (возможно, когда вы нажимаете «Сохранить» во всплывающем окне)? Другими словами, вы уверены, что запрос на вход исходит от этого javascript или он может исходить от действия на всплывающей странице ASPX?   -  person Josh Painter    schedule 20.09.2011
comment
До. Я даже не дохожу до страницы aspx. Ваше здоровье   -  person Brett    schedule 20.09.2011


Ответы (1)


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

person Brett    schedule 20.09.2011