如何在 Dynamics 365 中使用聚合作为系统视图实现自定义 FetchXML
How to implement custom FetchXML with aggregate as a System View in Dynamics365
我有一个名为 course enrollment 的自定义实体,它可以查找联系人实体。
我想查看有有效课程注册的联系人。
我认为这不能通过联系人实体完成,因此我必须创建一个只显示联系人字段的活动课程注册视图。
这样做会给我重复的联系人,如果他们有不止一门我不想要的课程注册。
为了避免这种情况,我尝试在 FetchXML 中创建聚合查询:
<fetch version="1.0" aggregate="true" >
<entity name="flr_courseenrolment" >
<link-entity name="contact" from="contactid" to="flr_contact" alias="a_69c0f6b80d94e711812ae0071b66a541" >
<attribute name="emailaddress1" alias="contactemailaddress1" groupby="true" />
<attribute name="fullname" alias="contactfullname" groupby="true" />
<filter type="and" >
<condition attribute="statecode" operator="eq" value="0" />
<condition attribute="flr_islearner" operator="eq" value="1" />
<condition attribute="flr_advisor" operator="eq" uiname="Test User" uitype="systemuser" value="{28C0D53B-5E19-E611-8106-C5346CC262D1}" />
</filter>
</link-entity>
<attribute name="flr_courseenrolmentid" alias="aggregateflr_enrolmentid" groupby="true" />
</entity>
</fetch>
此查询适用于 XRM 工具箱 FetchXML 测试器。但是当我将其导入 CRM 时将不起作用。
我通过导出包含包含相同字段的视图的解决方案将其导入 CRM;并用我创建的 FetchXML 替换系统生成的 FetchXML,然后重新导入它。
我在再次导入此视图后尝试查看该视图时收到一般 CRM 错误,提示 "Columns should always be specified on Retrieve Multiple."
<OrganizationServiceFault xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/xrm/2011/Contracts">
<ActivityId>b3b1d783-a8be-4454-9ed5-b71c42053299</ActivityId>
<ErrorCode>-2147220970</ErrorCode>
<ErrorDetails xmlns:d2p1="http://schemas.datacontract.org/2004/07/System.Collections.Generic" />
<Message>System.Xml.XmlException: Microsoft Dynamics CRM has experienced an error. Reference number for administrators or support: #2955ADDE</Message>
<Timestamp>2017-09-11T03:22:55.50674Z</Timestamp>
<ExceptionRetriable>false</ExceptionRetriable>
<ExceptionSource i:nil="true" />
<InnerFault>
<ActivityId>b3b1d783-a8be-4454-9ed5-b71c42053299</ActivityId>
<ErrorCode>-2147220970</ErrorCode>
<ErrorDetails xmlns:d3p1="http://schemas.datacontract.org/2004/07/System.Collections.Generic" />
<Message>Columns should always be specified on RetrieveMultiple.</Message>
<Timestamp>2017-09-11T03:22:55.50674Z</Timestamp>
<ExceptionRetriable>false</ExceptionRetriable>
<ExceptionSource i:nil="true" />
<InnerFault>
<ActivityId>b3b1d783-a8be-4454-9ed5-b71c42053299</ActivityId>
<ErrorCode>-2147220970</ErrorCode>
<ErrorDetails xmlns:d4p1="http://schemas.datacontract.org/2004/07/System.Collections.Generic" />
<Message>System.InvalidOperationException: Microsoft Dynamics CRM has experienced an error. Reference number for administrators or support: #F043AB2E</Message>
<Timestamp>2017-09-11T03:22:55.50674Z</Timestamp>
<ExceptionRetriable>false</ExceptionRetriable>
<ExceptionSource i:nil="true" />
<InnerFault i:nil="true" />
<OriginalException i:nil="true" />
<TraceText i:nil="true" />
</InnerFault>
<OriginalException i:nil="true" />
<TraceText i:nil="true" />
</InnerFault>
<OriginalException i:nil="true" />
<TraceText i:nil="true" />
</OrganizationServiceFault>
我有一种感觉:
- flr_courseenrolmentid 上的别名导致视图中断
- Aggregate/groupby 在 CRM 视图
中完全不受支持
- 我需要以某种方式自定义 LayoutXML 以及 FetchXML
我想达到的目标是否可行?有没有办法在 CRM 的视图中显示此 FetchXML,或者是否有其他方法来实现我需要的视图?
很遗憾,您不能在视图中使用聚合查询。
将 distinct="true"
添加到获取元素而不是使用聚合可能会有所帮助。
测试不同选项的最简单方法是使用 XrmToolBox 中的 FetchXML Builder 插件,从这里您可以打开要更改的视图,更改查询,然后然后将其保存回 CRM。无需导入解决方案或手动 customizations.xml 编辑。
在联系人下创建视图。
作为条件,选择相关实体 "Course Enrollment (Contact)"(我在这里假设名称)并作为条件放置 "Contact contains data" 和 "Status equals active"。
这与获取所有具有活跃联系人的帐户相同。
我有一个名为 course enrollment 的自定义实体,它可以查找联系人实体。
我想查看有有效课程注册的联系人。
我认为这不能通过联系人实体完成,因此我必须创建一个只显示联系人字段的活动课程注册视图。
这样做会给我重复的联系人,如果他们有不止一门我不想要的课程注册。
为了避免这种情况,我尝试在 FetchXML 中创建聚合查询:
<fetch version="1.0" aggregate="true" >
<entity name="flr_courseenrolment" >
<link-entity name="contact" from="contactid" to="flr_contact" alias="a_69c0f6b80d94e711812ae0071b66a541" >
<attribute name="emailaddress1" alias="contactemailaddress1" groupby="true" />
<attribute name="fullname" alias="contactfullname" groupby="true" />
<filter type="and" >
<condition attribute="statecode" operator="eq" value="0" />
<condition attribute="flr_islearner" operator="eq" value="1" />
<condition attribute="flr_advisor" operator="eq" uiname="Test User" uitype="systemuser" value="{28C0D53B-5E19-E611-8106-C5346CC262D1}" />
</filter>
</link-entity>
<attribute name="flr_courseenrolmentid" alias="aggregateflr_enrolmentid" groupby="true" />
</entity>
</fetch>
此查询适用于 XRM 工具箱 FetchXML 测试器。但是当我将其导入 CRM 时将不起作用。
我通过导出包含包含相同字段的视图的解决方案将其导入 CRM;并用我创建的 FetchXML 替换系统生成的 FetchXML,然后重新导入它。
我在再次导入此视图后尝试查看该视图时收到一般 CRM 错误,提示 "Columns should always be specified on Retrieve Multiple."
<OrganizationServiceFault xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/xrm/2011/Contracts">
<ActivityId>b3b1d783-a8be-4454-9ed5-b71c42053299</ActivityId>
<ErrorCode>-2147220970</ErrorCode>
<ErrorDetails xmlns:d2p1="http://schemas.datacontract.org/2004/07/System.Collections.Generic" />
<Message>System.Xml.XmlException: Microsoft Dynamics CRM has experienced an error. Reference number for administrators or support: #2955ADDE</Message>
<Timestamp>2017-09-11T03:22:55.50674Z</Timestamp>
<ExceptionRetriable>false</ExceptionRetriable>
<ExceptionSource i:nil="true" />
<InnerFault>
<ActivityId>b3b1d783-a8be-4454-9ed5-b71c42053299</ActivityId>
<ErrorCode>-2147220970</ErrorCode>
<ErrorDetails xmlns:d3p1="http://schemas.datacontract.org/2004/07/System.Collections.Generic" />
<Message>Columns should always be specified on RetrieveMultiple.</Message>
<Timestamp>2017-09-11T03:22:55.50674Z</Timestamp>
<ExceptionRetriable>false</ExceptionRetriable>
<ExceptionSource i:nil="true" />
<InnerFault>
<ActivityId>b3b1d783-a8be-4454-9ed5-b71c42053299</ActivityId>
<ErrorCode>-2147220970</ErrorCode>
<ErrorDetails xmlns:d4p1="http://schemas.datacontract.org/2004/07/System.Collections.Generic" />
<Message>System.InvalidOperationException: Microsoft Dynamics CRM has experienced an error. Reference number for administrators or support: #F043AB2E</Message>
<Timestamp>2017-09-11T03:22:55.50674Z</Timestamp>
<ExceptionRetriable>false</ExceptionRetriable>
<ExceptionSource i:nil="true" />
<InnerFault i:nil="true" />
<OriginalException i:nil="true" />
<TraceText i:nil="true" />
</InnerFault>
<OriginalException i:nil="true" />
<TraceText i:nil="true" />
</InnerFault>
<OriginalException i:nil="true" />
<TraceText i:nil="true" />
</OrganizationServiceFault>
我有一种感觉:
- flr_courseenrolmentid 上的别名导致视图中断
- Aggregate/groupby 在 CRM 视图 中完全不受支持
- 我需要以某种方式自定义 LayoutXML 以及 FetchXML
我想达到的目标是否可行?有没有办法在 CRM 的视图中显示此 FetchXML,或者是否有其他方法来实现我需要的视图?
很遗憾,您不能在视图中使用聚合查询。
将 distinct="true"
添加到获取元素而不是使用聚合可能会有所帮助。
测试不同选项的最简单方法是使用 XrmToolBox 中的 FetchXML Builder 插件,从这里您可以打开要更改的视图,更改查询,然后然后将其保存回 CRM。无需导入解决方案或手动 customizations.xml 编辑。
在联系人下创建视图。
作为条件,选择相关实体 "Course Enrollment (Contact)"(我在这里假设名称)并作为条件放置 "Contact contains data" 和 "Status equals active"。
这与获取所有具有活跃联系人的帐户相同。