Dynamics 2011 SOAP - RetrieveMultiple return 仅单个链接记录
Dynamics 2011 SOAP - RetrieveMultiple return only single linked record
使用下面的 SOAP,我能够从 Dynamics 2011 IFD 安装中检索自特定日期以来已修改的所有联系人。
此外,它 return 是链接 'Membership' 记录中的一些字段。
然而,在存在多个会员记录的情况下,return我只需要 return 最新的会员记录(更新日期字段具有最高日期,会员付款日期字段(日期时间)不为空)。
任何人都可以帮助调整以下内容,以便它不会 return 每个联系人的会员记录的记录 - 每个联系人只有一个记录,只有最新的会员记录字段。
<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>
据我了解,您是想将 link 实体数限制为 1?如果是这样,那是不可能的。 Link-entity Top/Count 被忽略,返回满足连接条件 (inner/outer) 的所有记录。
您必须通过在 "Renewal Date" 上排序并在 "ContactId" 上过滤并使用 "Contact" 作为 link-entity,这将确保只返回 1 "Membership" 个实体。
使用下面的 SOAP,我能够从 Dynamics 2011 IFD 安装中检索自特定日期以来已修改的所有联系人。 此外,它 return 是链接 'Membership' 记录中的一些字段。
然而,在存在多个会员记录的情况下,return我只需要 return 最新的会员记录(更新日期字段具有最高日期,会员付款日期字段(日期时间)不为空)。
任何人都可以帮助调整以下内容,以便它不会 return 每个联系人的会员记录的记录 - 每个联系人只有一个记录,只有最新的会员记录字段。
<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>
据我了解,您是想将 link 实体数限制为 1?如果是这样,那是不可能的。 Link-entity Top/Count 被忽略,返回满足连接条件 (inner/outer) 的所有记录。
您必须通过在 "Renewal Date" 上排序并在 "ContactId" 上过滤并使用 "Contact" 作为 link-entity,这将确保只返回 1 "Membership" 个实体。