Dynamics 2011 SOAP - RetrieveMultiple仅返回单个链接记录

时间:2016-08-23 00:18:37

标签: soap dynamics-crm

使用以下SOAP,我可以从Dynamics 2011 IFD安装中检索自特定日期以来已修改的所有联系人。 此外,它还会从链接的“会员资格”中返回一些字段。记录。

但是,如果存在多个会员记录,则返回所有我需要返回的最新会员记录(续订日期字段的日期最长,会员付款日期字段(日期时间)不为空)。

任何人都可以帮助如何调整以下内容,以便它不会为每个联系人的会员记录返回记录 - 每个联系人只有一条记录,只有最新的会员记录字段。

          <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 个答案:

答案 0 :(得分:1)

根据我的理解,您试图将链接实体数限制为1?如果是这样,那是不可能的。忽略链接实体Top/Count,返回满足连接条件(内部/外部)的所有记录。

您必须反转您的查询才能找到前1&#34;会员资格&#34;通过订购&#34;续订日期&#34;并过滤&#34; ContactId&#34;并使用&#34;联系&#34;作为一个链接实体,这将确保只有1&#34;会员资格&#34;实体永远归还。