CRM 2011调用mscrmsevices提示输入凭据

时间:2011-09-19 16:14:53

标签: javascript dynamics-crm-4 dynamics-crm-2011

我正在重新配置我们在CRM 4.0中运行的应用程序,以便在CRM 2011中运行。之前使用javascript从工具栏按钮调用它。

我已将javascript转移到网络资源并重新配置功能区以保留按钮并在库中调用所需的功能。

然而,在测试时,我被提示输入用户名和密码,当输入3次左右时返回错误“'null'为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 :(得分:0)

已修复 - 问题是所有%amp; %lt; %gt;而不是%<>的XML格式SOAP调用。