2016-04-25 4 views
1

CRM Dynamics Onlineシステムの請求書を.csvファイルにプルするプログラムがあります。FetchXML重複する値をフィルタにかける

営業担当者がCRMの同じオーダーに複数の請求書を作成することがありますが、.csvで重複する請求書を削除する方法が必要になることがあります。

個別の注文番号の請求書のみを引き取りたいと思います。これはどのように達成されるでしょうか?私は午前中は別名で無駄に取り組んできました。

マイコード:

private EntityCollection GetInvoices(Microsoft.Xrm.Sdk.Client.OrganizationServiceProxy crmService) 
    { 
     string fx = @"<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='true'> 
       <entity name='invoice'> 
        <attribute name='invoiceid' alias='InvoiceId' /> 
        <attribute name='customerid' alias='ShipTO' /> 
        <attribute name='shipto_postalcode' alias='ShipZip' /> 
        <attribute name='shipto_line2' alias='ShipAddr2' /> 
        <attribute name='shipto_line1' alias='ShipAddr1' /> 
        <attribute name='shipto_stateorprovince' alias='ShipState' /> 
        <attribute name='shipto_country' alias='ShipCountry' /> 
        <attribute name='shipto_city' alias='ShipCity' /> 
        <attribute name='neu_customerponumber' alias='PO' /> 
        <attribute name='paymenttermscode' alias='Terms' /> 
        <attribute name='createdon' alias='ShipDate'/> 
        <attribute name='ordernumber' alias='InvoiceNo' /> 
          "; 
     fx += GetInvoiceFilter(); 
     fx += @" 
        <link-entity name='salesorder' from='salesorderid' to='salesorderid' visible='false' link-type='outer' alias='order1'> 
         <attribute name='datefulfilled' alias='FirstOfShippingDate' /> 
         <link-entity name='systemuser' from='systemuserid' to='ownerid' visible='false' link-type='outer' alias='systemuser1'> 
          <attribute name='fullname' alias='SalesRep' /> 
         </link-entity> 
        </link-entity> 
        <link-entity name='invoicedetail' from='invoiceid' to='invoiceid' visible='false' link-type='outer' alias='invoicedetail1'> 
         <attribute name='neu_percentdiscount' alias='Discount' /> 
         <attribute name='invoicedetailid' alias='InvoiceDetailId' /> 
         <attribute name='baseamount' alias='Amount' /> 
         <attribute name='extendedamount' alias='Sales' /> 
         <link-entity name='product' from='productid' to='productid' visible='false' link-type='outer' alias='product1'> 
          <attribute name='neu_division' alias='Division' /> 
          <attribute name='producttypecode' alias='Desc' /> 
          <attribute name='productnumber' alias='CatalogNumber' /> 
         </link-entity> 
        </link-entity> 
        <link-entity name='account' alias='account1' to='customerid' from='accountid'> 
         <attribute name='accountnumber' alias='CustID' /> 
        </link-entity> 
       </entity> 
       </fetch>"; 

     return crmService.RetrieveMultiple(new FetchExpression(fx)); 


    } 



    private string GetInvoiceFilter() 
    { 
     string fetchFilter = ""; 

     fetchFilter = @"<filter type='and'>"; 

     if (txtOrderName.Text.Length > 0) 
     { 
      fetchFilter += @"<condition attribute='ordernumber' operator='eq' value='"; 
      fetchFilter += txtOrderName.Text; 
      fetchFilter += "' />"; 
     } 
     else 
     { 
      fetchFilter += @"<condition attribute='statuscode' operator='eq' value='1' />";    
      fetchFilter += @"<condition attribute='neu_exportedtopeachtree' operator='null' />"; 
      fetchFilter += @"<condition attribute='createdon' operator='on-or-after' value='"; 
      fetchFilter += dtpFrom.Text; 
      fetchFilter += "' />"; 
      fetchFilter += " <condition attribute='createdon' operator='on-or-before' value='"; 
      fetchFilter += dtpTo.Text; 
      fetchFilter += "' />"; 
     } 

     fetchFilter += @"</filter>"; 

     return fetchFilter; 
    } 

答えて

1

fetch文のDISTINCT句は、結果セットに戻ってくるの重複IDを除外します。注文番号に基づいて詐欺師をフィルタリングするには、結果が戻った後にプログラムで行う必要があります。

+0

ああ、感謝します、ありがとう! –

関連する問題