Dynamics crm 2011 高级查找-将相关实体与或合并
有没有办法创建该查询 我需要地址和联系人地址的数据,通常我可以通过Dynamics crm 2011 高级查找-将相关实体与或合并,dynamics-crm-2011,dynamics-crm,Dynamics Crm 2011,Dynamics Crm,有没有办法创建该查询 我需要地址和联系人地址的数据,通常我可以通过组合或组合它们,但在这种情况下不行 我想我必须用PreExecute()方法编写新插件,获取我的查询,解析数据,然后手动获取相等的地址,或者还有其他方法吗?我不知道有什么方法可以实现上述目的 然而,我宁愿写一份报告,也不愿写一个插件 我能想到的最简单的方法是不使用这样的过滤器来获取XML <fetch version="1.0" output-format="xml-platform" mapping="logical"
组合或组合它们,但在这种情况下不行
我想我必须用PreExecute()
方法编写新插件,获取我的查询,解析数据,然后手动获取相等的地址,或者还有其他方法吗?我不知道有什么方法可以实现上述目的
然而,我宁愿写一份报告,也不愿写一个插件
我能想到的最简单的方法是不使用这样的过滤器来获取XML
<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="true">
<entity name="account">
<attribute name="name" />
<attribute name="primarycontactid" />
<attribute name="telephone1" />
<attribute name="accountid" />
<attribute name="address1_city" />
<order attribute="name" descending="false" />
<link-entity name="contact" from="parentcustomerid" to="accountid" alias="ac">
<attribute name="address1_city" />
</link-entity>
</entity>
</fetch>
显然,您可以用一个参数来替换Sydney。简言之,通过advanced find无法实现您的要求
您提出的示例查询将仅显示关联联系人地址匹配的帐户(显然还有地址匹配的帐户)。在高级查找中关联另一个实体后,您将只看到具有关联记录的父实体-无法执行(有效的)外部联接
你唯一的选择就是用Silverlight或HTML构建一些东西,并将其添加为web资源——一旦进入代码,你几乎可以显示任何你想要的东西。正如其他人所说,这在报告中是可能的 我解决了这个问题
- 使用
Execute()
方法和一些
用于数据解析的方法李>
- 在实体视图中添加一些带有
GUID
的字段
- 如果插件在您的视图中找到guid,它将为您的视图获取fetchxml查询
实体和第二个查询实体,否则将显示默认视图李>
- 解析您希望为用户显示的数据李>
- 注册你的插件
- 利润
PS我会在重构和客户批准后的一两天内添加源代码
编辑:
首先-y需要创建新的GUID
并添加字符串字段以查看该GUID(最好对用户隐藏它)。
使用RetrieveMultiple
操作和Post
验证创建插件(在Pre
操作中,您可能会丢失更改)
In-plugin:main方法
RetrieveMultiple
将从中获取上下文和服务,然后您需要获取fetchXml并检查是否有您的GUID
string fetchXml = string.Empty;
var query = context.InputParameters["Query"] as QueryExpression;
var fetchQuery = context.InputParameters["Query"] as FetchExpression;
if (query == null)
{
if (fetchQuery == null)
{
return;
}
fetchXml = fetchQuery.Query;
}
// Convert query to a fetch expression for processing and apply filter
else
{
fetchXml =
((QueryExpressionToFetchXmlResponse)
service.Execute(new QueryExpressionToFetchXmlRequest {Query = query})).FetchXml;
}
if (fetchXml.Contains(OpportunityFilterGuid))
{
ApplyFilter(context, service, query);
}
}
在ApllyFilter
方法中,您需要:
从用户处获取查询(他可以添加一些新文件)
使用GUID
删除您的字段
string fetchXml = string.Empty;
var query = context.InputParameters["Query"] as QueryExpression;
var fetchQuery = context.InputParameters["Query"] as FetchExpression;
if (query == null)
{
if (fetchQuery == null)
{
return;
}
fetchXml = fetchQuery.Query;
}
// Convert query to a fetch expression for processing and apply filter
else
{
fetchXml =
((QueryExpressionToFetchXmlResponse)
service.Execute(new QueryExpressionToFetchXmlRequest {Query = query})).FetchXml;
}
if (fetchXml.Contains(OpportunityFilterGuid))
{
ApplyFilter(context, service, query);
}
}
执行查询
删除可能与或语句冲突的文件
将链接实体添加到查询中
执行查询
将收到的实体从第二个查询添加到第一个查询
使用LINQ选择不重复的实体
collectionOne.Entities.GroupBy(oppId => oppId.Id).Select(opp => opp.First())
将数据发送到客户端
我需要做一个实体视图。所以,当我来访时,你给出了一个好主意,但不是给我的。是吗?请更正,上述内容对实体视图没有帮助。对不起,编程中没有什么是不可能的。总会有解决办法。您是尝试只创建一个视图,还是尝试通过SDK访问数据?这无关紧要。我只需要向视图中的用户显示数据。我对系统代表开发者的可能性感兴趣。并且发现唯一的方法就是写一个插件。非常感谢。