MSCRM 4.0:在自动填充查找后通过Javascript保存并单击字段值中的项时出现错误

时间:2015-08-20 17:05:30

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

通过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;


    }
    }

    }
    }

1 个答案:

答案 0 :(得分:0)

您的SOAP调用可能有问题。调试时,resultLEPAccountXml是否有xml响应字符串?或者只是返回一个错误/空集? (看起来你正在提醒它,并已将其评论出来)

不幸的是,我对您的特定数据模型不够熟悉,无法验证您是否正在查询您尝试填充的同一个表。 ryan_leadengagementprincipalassignment表中的ryan_leadengagementid字段确实是用于在执行此脚本的任何表单上设置查找的正确字段(即ryan_leadengagementprincipalid是否对ryan_leadengagementprincipalassignment表进行查找)?如果您要为错误的表设置查找,那么这将导致一个看起来与此完全相同的问题。

另外(作为旁注),看起来你正在做一个RetrieveMultiple,并且可能多次循环并设置目标字段 - 这是预期的功能(根据所有leadengagementprincipalassignment结果设置查找)?查找字段的设置看起来很好,所以我怀疑它是检索值的代码,这些值应该用于设置查找,这是罪魁祸首。