Dynamics365-在高级查找结果页面上检索Query / FetchXML

时间:2019-02-06 09:19:04

标签: dynamics-crm crm

是否有可能在结果页面上检索高级查找查询/ fetchxml?在触发结果按钮之前,我可以按Fetchxml按钮,但在结果页面上则不能。是否可以通过javascript或C#检索此查询/ xml,并且必须在结果页上。

2 个答案:

答案 0 :(得分:0)

我不确定100%是否在谈论同一件事,但是可以使用Fetchxml声明查询。

看看this page。 在这里,他们使用FetchExpression(string)来查询常规组织服务。您只需要组织服务和fetchxml即可对其进行查询。小例子(来自上面的链接!):

// Retrieve all accounts owned by the user with read access rights to the accounts 
   and   
// where the last name of the user is not Cannon.   
string fetch2 = @"  
<fetch mapping='logical'>  
  <entity name='account'>   
     <attribute name='accountid'/>   
     <attribute name='name'/>   
     <link-entity name='systemuser' to='owninguser'>   
        <filter type='and'>   
           <condition attribute='lastname' operator='ne' value='Cannon' />   
        </filter>   
     </link-entity>   
  </entity>   
</fetch> ";   

EntityCollection result = _serviceProxy.RetrieveMultiple(new 
FetchExpression(fetch2));
foreach (var c in result.Entities)
{
   System.Console.WriteLine(c.Attributes["name"]);
} 

如您所见,这很可能是控制台工作。然后,如何使用实体本身取决于您。

答案 1 :(得分:0)

据我所知,没有钩子可以自定义“高级查找”页面,因此无法添加JavaScript来完成您想要的事情。

但是,您可以编写一个在RetrieveMultiple消息上触发的插件。

在插件中,您可以从RetrieveMultipleRequest那里获得QueryExpression

var q = (QueryExpression)context.InputParameters["Query"];

然后convert it进入FetchXML。

var conversionRequest = new QueryExpressionToFetchXmlRequest
{
    Query = q
};
var conversionResponse = (QueryExpressionToFetchXmlResponse)_serviceProxy.Execute(conversionRequest);
var fetchXml = conversionResponse.FetchXml;

请注意,我尚未测试以上代码。而且由于我还没有做过这种精确的技术,有可能您可以将Query直接转换为FetchXML并跳过转换调用。

因此,您可能想尝试一下:
var q = (FetchExpression)context.InputParameters["Query"];

RetrieveMultiple插件具有其caveats。但是,how bad is it

在相关说明中,如果用户将“高级查找”另存为个人视图,则可以从UserQuery实体中检索其FetchXML。