2016-08-23 82 views
0

使用下面的SOAP我能夠從動態2011 IFD因爲一個特定的日期安裝的被修改檢索所有聯繫人。 此外,它還會從鏈接的「成員資格」記錄中返回一些字段。動態2011 SOAP - RetrieveMultiple只返回一個鏈接記錄

但是,如果存在多個成員資格記錄,它將返回所有我需要返回的最新成員資格記錄(續訂日期字段具有最高日期,並且會員支付日期字段(日期時間)不爲空)。

可以用如何調整如下,以便它不會爲每個聯繫人的會員記錄返回一個記錄任何人的幫助 - 每次僅接觸最新的會員記錄字段只是一條記錄。

  <s:Body> 
     <RetrieveMultiple xmlns="http://schemas.microsoft.com/xrm/2011/Contracts/Services" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> 
     <query i:type="a:QueryExpression" xmlns:a="http://schemas.microsoft.com/xrm/2011/Contracts"> 
     <a:ColumnSet> 
      <a:AllColumns>false</a:AllColumns> 
      <a:Columns xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays"> 
      <b:string>contactid</b:string> 
      <b:string>firstname</b:string> 
      <b:string>lastname</b:string> 
      </a:Columns> 
     </a:ColumnSet> 
     <a:Criteria> 
      <a:Conditions /> 
      <a:FilterOperator>And</a:FilterOperator> 
      <a:Filters> 
      <a:FilterExpression> 
       <a:Conditions> 
       <a:ConditionExpression> 
        <a:AttributeName>createdon</a:AttributeName> 
        <a:Operator>GreaterThan</a:Operator> 
        <a:Values xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays"> 
        <b:anyType i:type="c:dateTime" xmlns:c="http://www.w3.org/2001/XMLSchema">2016-08-23T01:03:34+01:00</b:anyType> 
        </a:Values> 
       </a:ConditionExpression> 
       <a:ConditionExpression> 
        <a:AttributeName>modifiedon</a:AttributeName> 
        <a:Operator>GreaterEqual</a:Operator> 
        <a:Values xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays"> 
        <b:anyType i:type="c:dateTime" xmlns:c="http://www.w3.org/2001/XMLSchema">2016-08-23T01:03:34+01:00</b:anyType> 
        </a:Values> 
       </a:ConditionExpression> 
       </a:Conditions> 
       <a:FilterOperator>Or</a:FilterOperator> 
       <a:Filters /> 
      </a:FilterExpression> 
      </a:Filters> 
     </a:Criteria> 
     <a:Distinct>true</a:Distinct> 
     <a:EntityName>contact</a:EntityName> 
     <a:LinkEntities> 
      <a:LinkEntity> 
      <a:Columns> 
       <a:AllColumns>false</a:AllColumns> 
       <a:Columns xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays"> 
       <b:string>statecode</b:string> 
       <b:string>new_cancelledmembership</b:string> 
       <b:string>py3_membershipproduct</b:string> 
       <b:string>new_reasoncancelled</b:string> 
       <b:string>new_cancelleddate</b:string> 
       <b:string>py3_renewaldate</b:string> 
       <b:string>modifiedon</b:string> 
       </a:Columns> 
      </a:Columns> 
      <a:EntityAlias i:nil="true" /> 
      <a:JoinOperator>Inner</a:JoinOperator> 
      <a:LinkCriteria> 
       <a:Conditions /> 
       <a:FilterOperator>And</a:FilterOperator> 
       <a:Filters> 
       <a:FilterExpression> 
        <a:Conditions> 
        <a:ConditionExpression> 
         <a:AttributeName>py3_membershippaymentdate</a:AttributeName> 
         <a:Operator>NotNull</a:Operator> 
        </a:ConditionExpression> 
        </a:Conditions> 
        <a:FilterOperator>Or</a:FilterOperator> 
       </a:FilterExpression> 
       </a:Filters> 
      </a:LinkCriteria> 
      <a:LinkEntities /> 
      <a:LinkFromAttributeName>contactid</a:LinkFromAttributeName> 
      <a:LinkFromEntityName>contact</a:LinkFromEntityName> 
      <a:LinkToAttributeName>py3_member</a:LinkToAttributeName> 
      <a:LinkToEntityName>py3_membership</a:LinkToEntityName> 
      <a:Orders> 
       <a:OrderExpression> 
        <a:AttributeName>py3_renewaldate</a:AttributeName> 
        <a:OrderType>Ascending</a:OrderType> 
       </a:OrderExpression> 
      </a:Orders> 
      </a:LinkEntity> 
     </a:LinkEntities> 
     <a:PageInfo> 
      <a:Count>0</a:Count> 
      <a:PageNumber>0</a:PageNumber> 
      <a:PagingCookie i:nil="true" /> 
      <a:ReturnTotalRecordCount>false</a:ReturnTotalRecordCount> 
     </a:PageInfo> 
     <a:NoLock>false</a:NoLock> 
     </query> 
    </RetrieveMultiple> 
    </s:Body> 

回答

1

據我所知,你試圖限制鏈接實體數爲1?如果是這樣,這是不可能的。鏈接實體Top/Count被忽略,返回滿足連接條件(內部/外部)的所有記錄。

您必須通過在「更新日期」上訂購併過濾「聯繫人ID」並使用「聯繫人」作爲鏈接實體來反轉查詢以查找最高1個「成員資格」記錄,這將確保只有1個「成員資格「實體返回。