通过javascript自动填充查找后出现错误。我的代码如下。它正在工作,我能够自动填充。但是当我点击自动填充的文件时,我收到了一个错误。保存record.Errors
时出错也是:
1)与id = *******的ryan_leadengagementprincipalassignment不存在' (当我点击填充的Lookup值时)
2)找不到请求的记录,或者您没有足够的权限查看它。 (保存记录时)
代码:
var LEPAccountLookup= crmForm.all.customerid.DataValue;
if (LEPAccountLookup!= null && LEPAccountLookup!= 'undefined')
{
var LEPAccountID= LEPAccountLookup[0].id;
var LEPAccountxml = '' +
'<?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>ryan_leadengagementprincipalassignment</q1:EntityName>' +
' <q1:ColumnSet xsi:type=\'q1:AllColumns\' />' +
' <q1:Distinct>false</q1:Distinct>' +
' <q1:Criteria>' +
' <q1:FilterOperator>And</q1:FilterOperator>' +
' <q1:Conditions>' +
' <q1:Condition>' +
' <q1:AttributeName>ryan_accountnameid</q1:AttributeName>' +
' <q1:Operator>Like</q1:Operator>' +
' <q1:Values>' +
' <q1:Value xsi:type=\'xsd:string\'>' + LEPAccountID + '</q1:Value>' +
' </q1:Values>' +
' </q1:Condition>' +
' </q1:Conditions>' +
' </q1:Criteria>' +
' </query>' +
' </RetrieveMultiple>' +
' </soap:Body>' +
'</soap:Envelope>' +
'';
//alert(LEPAccountxml);
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', LEPAccountxml.length);
xmlHttpRequest.send(LEPAccountxml);
var resultLEPAccountxml = xmlHttpRequest.responseXML;
//alert(resultLEPAccountxml);
//----------------------------------------------------------------------------------------------------------------------
var entityNodes = resultLEPAccountxml.selectNodes('//RetrieveMultipleResult/BusinessEntities/BusinessEntity');
for (var i = 0; i < entityNodes.length; i++) {
var entityNode = entityNodes[i];
var LEPAccountNode = entityNode.selectSingleNode("q1:ryan_accountnameid");
var LEPAccountNodename = entityNode.selectSingleNode('./q1:ryan_accountnameid/@name');
var LEPParentPracAreaNode = entityNode.selectSingleNode("q1:ryan_parentpracticeareaid");
var LEPParentPracAreaNodename = entityNode.selectSingleNode('./q1:ryan_parentpracticeareaid/@name');
var LEPPracAreaNode = entityNode.selectSingleNode("q1:ryan_practiceareaid");
var LEPPracAreaNodename = entityNode.selectSingleNode('./q1:ryan_practiceareaid/@name');
var LEPLegalEntityNode= entityNode.selectSingleNode("q1:ryan_legalid");
var LEPLegalEntityNodename = entityNode.selectSingleNode('./q1:ryan_legalid/@name');
var LEPNode= entityNode.selectSingleNode("q1:ryan_leadengagementid");
var LEPNodename = entityNode.selectSingleNode('./q1:ryan_leadengagementid/@name')
var LEPAccountid= (LEPAccountNode == null) ? null : LEPAccountNode.text;
var LEPAccountname= (LEPAccountNodename == null) ? null : LEPAccountNodename.text;
var LEPPareantPracAreaid= (LEPParentPracAreaNode == null) ? null : LEPParentPracAreaNode.text;
var LEPPareantPracAreaname= (LEPParentPracAreaNodename == null) ? null : LEPParentPracAreaNodename.text;
var LEPPracAreaid= (LEPPracAreaNode == null) ? null : LEPPracAreaNode.text;
var LEPPracAreaname= (LEPPracAreaNodename == null) ? null : LEPPracAreaNodename.text;
var LEPLegalEntityid= (LEPLegalEntityNode == null) ? null : LEPLegalEntityNode.text;
var LEPLegalEntityname= (LEPLegalEntityNodename == null) ? null : LEPLegalEntityNodename.text;
var LEPEntityid= (LEPNode == null) ? null : LEPNode.text;
var LEPEntityname= (LEPNodename == null) ? null : LEPNodename.text;
//alert(LEPAccountid);
//(LEPAccountname);
var LEPAccount = crmForm.all.customerid.DataValue;
var LEPLE = crmForm.all.ryan_ryanlegalentityid.DataValue;
var LEPPPA = crmForm.all.ryan_parentpracticearea2id.DataValue;
var LEPPA = crmForm.all.ryan_practiceareaid.DataValue;
if((LEPAccount != null) &&(LEPLE != null) && (LEPPPA != null) && (LEPPA != null))
{
if ((LEPAccountid== LEPAccount[0].id) && (LEPLegalEntityid== LEPLE[0].id) && (LEPPareantPracAreaid== LEPPPA[0].id) && (LEPPracAreaid== LEPPA[0].id))
{
var lookup = [];
var lookupValue = new Object();
lookupValue.id = LEPEntityid;
lookupValue.typename = 'ryan_leadengagementprincipalassignment';
lookupValue.name = LEPEntityname;
lookup[0] = lookupValue;
crmForm.all.ryan_leadengagementprincipalid.DataValue = lookup;
crmForm.all.ryan_leadengagementprincipalid.ForceSubmit = true;
}
}
}
}
答案 0 :(得分:0)
您的SOAP调用可能有问题。调试时,resultLEPAccountXml是否有xml响应字符串?或者只是返回一个错误/空集? (看起来你正在提醒它,并已将其评论出来)
不幸的是,我对您的特定数据模型不够熟悉,无法验证您是否正在查询您尝试填充的同一个表。 ryan_leadengagementprincipalassignment表中的ryan_leadengagementid字段确实是用于在执行此脚本的任何表单上设置查找的正确字段(即ryan_leadengagementprincipalid是否对ryan_leadengagementprincipalassignment表进行查找)?如果您要为错误的表设置查找,那么这将导致一个看起来与此完全相同的问题。
另外(作为旁注),看起来你正在做一个RetrieveMultiple,并且可能多次循环并设置目标字段 - 这是预期的功能(根据所有leadengagementprincipalassignment结果设置查找)?查找字段的设置看起来很好,所以我怀疑它是检索值的代码,这些值应该用于设置查找,这是罪魁祸首。