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访问数据?这无关紧要。我只需要向视图中的用户显示数据。我对系统代表开发者的可能性感兴趣。并且发现唯一的方法就是写一个插件。非常感谢。