Mak*_*nov 8 dynamics-crm dynamics-crm-2011
有没有办法创建该查询?

我需要来自Adress和Contact Adress的数据,通常我可以将它们组合在一起Combine OR但不是在这种情况下.
我想我必须用PreExecute()方法编写新的插件,获取我的查询,解析数据然后手动获得相同的地址或者还有其他方法吗?
我解决了这个问题。
Execute()创建用于使用方法和数据解析方法进行预验证的插件。GUID。PS 在重构并获得客户批准后,我将在一两天内添加源。
编辑:
首先 - 您需要创建新的GUID并添加字符串字段以使用该 guid 进行查看(最好对用户隐藏它)。创建具有RetrieveMultiple操作和Post验证的插件(在Pre操作中您可能会丢失更改)
在插件:主要方法中
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);
}
}
Run Code Online (Sandbox Code Playgroud)
在你的ApllyFilter方法中你需要:
获取用户的查询(他可以添加一些新字段)。
使用 删除您的字段GUID。
执行查询。
删除可能与您的OR声明相冲突的字段。
添加link-entity到查询。
执行查询。
将从第二个查询接收到的实体添加到第一个查询中。
使用 LINQ 选择不重复的实体。
collectionOne.Entities.GroupBy(oppId => oppId.Id).Select(opp => opp.First())
Run Code Online (Sandbox Code Playgroud)将该数据发送给客户端。
| 归档时间: |
|
| 查看次数: |
1782 次 |
| 最近记录: |