2017-08-17 132 views
0

我有這樣的查詢,它使用來自作業訂單上的帳戶的筆記(2種不同類型)填充工作訂單。我遇到的問題是它在大多數工作訂單上都有效,但有一些我注意到這些記錄沒有填充到。在我看來,賬戶實體和內部票據是一對多的關係,但是我必須解決這個問題。我也在我模擬我的查詢的FetchXML下面。Dynamics CRM QueryExpression

private void PopulateInternalNotes() 
    { 
     EntityReference accountId = _Entity.GetAttributeValue<EntityReference>("hc_account"); 
     EntityReference buisnessId = _Entity.GetAttributeValue<EntityReference>("hc_businessunit"); 

     if(accountId == null || buisnessId ==null) 
     { 
      return; 
     } 
     _tracer.Trace("buisness unit: " + buisnessId); 
    //to get internal description 
     QueryExpression exp = new QueryExpression("hc_internalnote"); 

     exp.Criteria.AddCondition("hc_internalnotetype", ConditionOperator.Equal, 948050000); // internal description option 
     exp.Criteria.AddCondition("hc_account", ConditionOperator.Equal, accountId.Id);// matches account on joborder 
     exp.Criteria.AddCondition("hc_businessunit", ConditionOperator.Equal, buisnessId.Id);//matches buisnessunit on joborder 

     exp.ColumnSet = new ColumnSet("hc_note"); 
     EntityCollection results = _service.RetrieveMultiple(exp); 
     if (results.Entities.Count == 1) 
     { 
      foreach (Entity r in results.Entities) 
      { 
       _tracer.Trace("one internal desc found"); 
       _Entity["hc_internaldescription"] = r.GetAttributeValue<string>("hc_note"); 

      } 
     } 
     else 
     { 
      _tracer.Trace("no internal desc found"); 
     } 

     //to get submission process note 
     QueryExpression sub = new QueryExpression("hc_internalnote"); 


     sub.Criteria.AddCondition("hc_internalnotetype", ConditionOperator.Equal, 948050002); // submission process option 
     sub.Criteria.AddCondition("hc_account", ConditionOperator.Equal, accountId.Id);// matches account on joborder 
     sub.Criteria.AddCondition("hc_businessunit", ConditionOperator.Equal, buisnessId.Id);//matches buisnessunit on joborder 

     sub.ColumnSet = new ColumnSet("hc_note"); 
     EntityCollection Subresults = _service.RetrieveMultiple(sub); 
     if (Subresults.Entities.Count == 1) 
     { 
      foreach (Entity s in Subresults.Entities) 
      { 
       _tracer.Trace("one submission desc found"); 
       _Entity["hc_submissionprocessnotes"] = s.GetAttributeValue<string>("hc_note"); 

      } 
     } 
     else 
     { 
      _tracer.Trace("more than one submission note found"); 
     } 

    } 

FetchXML下面

<fetch distinct="false" mapping="logical" output-format="xml-platform" version="1.0"> 
    <entity name="hc_internalnote"> 
    <attribute name="createdon"/> 
    <attribute name="statecode"/> 
    <attribute name="ownerid"/> 
    <attribute name="hc_note"/> 
    <attribute name="modifiedon"/> 
    <attribute name="modifiedby"/> 
    <attribute name="hc_internalnotetype"/> 
    <attribute name="createdby"/> 
    <attribute name="hc_contract"/> 
    <attribute name="hc_businessunit"/> 
    <attribute name="hc_account"/> 
    <attribute name="hc_internalnoteid"/> 
    <order descending="false" attribute="createdon"/> 
    <filter type="and"> 
     <condition attribute="hc_account" value="{B1F13E37-2D34-E411-9518-005056010301}" uitype="account" uiname="Community Memorial Hospital (050394)" operator="eq"/> 
    </filter> 
    </entity> 
</fetch> 
+0

所以筆記不會在某些記錄的結果集中出現,儘管它在系統中可用? fetchxml和QE? –

+1

似乎工作。問題是舊的記錄被遷移,我們的插件關閉,因此不填充。 – amberl

回答

1

從評論:

似乎是工作。問題在於我們插件期間遷移的舊記錄已關閉,因此它們沒有填充。