Dynamics 365Online 通过插件中的retrievemultiple消息来过滤产品视图
本篇中要讲的是对产品视图基于某个条件进行过滤显示,而手段就是通过插件中的retrievemultiple消息,可能很多人都写过对它都不陌生。
先来看张插件注册的截图,插件的message是retrievemultiple,对应的实体我这里用的是product(为什么用它是因为它特殊,因为它特殊才有了本篇博文),事件是pre-operation(这个很好理解,在展现数据之前就要过滤好,一定是pre中的操作了)
以前写的代码是这样的,判断InputParameters是不是query,然后再判断query的实体是不是产品,再进行逻辑处理
if (context.InputParameters.Contains("Query") && context.InputParameters["Query"] is QueryExpression)
{
QueryExpression query = (QueryExpression)context.InputParameters["Query"];
if (query.EntityName == "product")
{
//逻辑处理
}
}
但在365online(2016on-premises也是同样的问题)中死活不行,然后断点调了下发现query.EntityName中居然没有product了,调试下来发现取到的都是下面这些鬼
email queue solution savedquery systemuserroles rb_userroleviewconfiguration rb_roleviewconfiguration userquery
很奇怪,product去哪了,不用QueryExpression筛数据那用什么筛啊,咱们把问题往前推到第一个if,看下面这张截图,你会发现尼玛变FetchExpression了而不是QueryExpression,所以第一个if都没进怎么可能进第二个if呢
我尝试的实体不多,目前发现的产品、客户、联系人都是这种情况,自定义的实体用QueryExpression都ok的,一开始猜测是不是系统实体都改FetchExpression筛选了,但尝试了报价单的视图用QueryExpression过滤是可以的,有时间得好好查查资料看看什么个情况,如果有人了解其中缘由的也欢迎分享。
下面奉上FetchExpression的代码,这里用到了FetchExpression和QueryExpression之间的互相转化
if (context.InputParameters["Query"] is FetchExpression)
{
FetchExpression fetch = (FetchExpression)context.InputParameters["Query"];
var conversionRequest = new FetchXmlToQueryExpressionRequest
{
FetchXml = fetch.Query
};
var conversionResponse =
(FetchXmlToQueryExpressionResponse)service.Execute(conversionRequest);
// Use the newly converted query expression to make a retrieve multiple
// request to Microsoft Dynamics CRM.
query = conversionResponse.Query;
if (query.EntityName == "product" && context.Depth == 1)
{
//逻辑
}
// Convert the query expression to FetchXML.
var converRequest = new QueryExpressionToFetchXmlRequest
{
Query = query
};
var converResponse =
(QueryExpressionToFetchXmlResponse)service.Execute(converRequest);
// Use the converted query to make a retrieve multiple request to Microsoft Dynamics CRM.
String fetchXml = converResponse.FetchXml;
fetch.Query = fetchXml;
}
FetchExpression和QueryExpression之间的互相转化的msdn示例:
https://msdn.microsoft.com/zh-cn/library/hh547457.aspx
Dynamics 365Online 通过插件中的retrievemultiple消息来过滤产品视图的更多相关文章
- Microsoft Dynamics CRM 2011的组织服务中的RetrieveMultiple方法(转)
本篇文章,介绍Microsoft Dynamics CRM 2011的组织服务中的RetrieveMultiple方法. RetreiveMultiple方法,用于获取实体的多个实例,该方法的签名如下 ...
- Dynamics 365 CE在Pre Delete插件中应用Image
微软动态CRM专家罗勇 ,回复327或者20190428可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me! 在插件中限制记录的删除是常见的场景,比如根据statuscode ...
- Dynamics 365 Customer Engagement中插件的调试
微软动态CRM专家罗勇 ,回复319或者20190319可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me . 本文主要根据官方的教 ...
- Dynamics 365Online 使用adal.js注册和配置SimpleSPA应用程序
本篇是基于dynamics 365online撰写,本文中使用的365online及azure均为试用版,因为online在国内还没落地,所以我申请的是新加坡版,online的申请方式可见我之前的博文 ...
- 如何将钉钉集成到FineReport插件中
报表服务器 安装钉钉管理插件后,打开报表管理平台,管理系统下会增加钉钉管理节点,钉钉相关的配置管理都将会放在这个节点中去配置: 同时,设置定时任务的最后一步输出设置中,会增加推送钉钉消息: 钉钉企业应 ...
- Dynamic CRM插件中记录日志-Nlog记录到文本
Dynamic CRM插件中记录日志的方式有多种 通常情况下分为ITracingService记录.单独日志表插入记录.文本记录三种. 之前整理过ITracingService记录的方式,但这种记录有 ...
- 详解jquery插件中;(function ( $, window, document, undefined )的作用
在jquery插件中我们经常看到以下这段代码 1 2 3 ;(function ( $, window, document, undefined ){ //函数体内具体代码 })(jQuery, wi ...
- ZeroMQ接口函数之 :zmq_msg_recv - 从一个socket中接受一个消息帧
ZeroMQ 官方地址 :http://api.zeromq.org/4-2:zmq_msg_recv zmq_msg_recv(3) ØMQ Manual - ØMQ/3.2.5 Name zmq_ ...
- 在eclipse的maven插件中搜寻本地仓库中的jar搜索不到的解决方案
在eclipse的maven插件中搜寻本地仓库中的jar搜索不到的解决方案 之前,用过maven管理项目的童鞋都知道本地会有一个${User_Home}.m2/repository仓库 是用来存放ja ...
随机推荐
- FastDFS高可用集群架构配置搭建
一.基本模块及高可用架构 FastDFS 是余庆老师开发的一个开源的高性能分布式文件系统(DFS). 它的主要功能包括:文件存储,文件同步和文件访问,以及高容量和负载平衡. FastDFS 系统有 ...
- centos clamav杀毒软件安装配置及查杀,没想到linux下病毒比windows还多!
centos clamav杀毒软件安装配置及查杀,没想到linux下病毒比windows还多! 一.手动安装 1.下载(官网) cd /soft wget http://www.clam ...
- .NET Framework 源码查看与调试
1. 直接下载.NET Framework源代码(下载地址),然后用Visual Studio 13 打开查看.2. 在线查看,网址:http://referencesource.microsoft. ...
- Liferay7.0与cas单点登录配置
1.简介 Liferay7.0支持多种登录方式,包括:常规的.opensso.cas.ntlm.ldap.openid.Facebook.Google等. 其中, (1) 常规:则是默认Lif ...
- java学习-加载.properties工具类
javaWeb项目,要加载xxx.properties或其它如.txt, .md后缀的文本文件 文本内容有两种格式 key:value或者key=value 诸如Spring框架,Jfinal框架,都 ...
- postgresql 清空数据表数据
在 mysql中,只需要执行: TRUNCATE table_name; 即可,数据会情况,而且自增id也会变回0: 但在 postgresql 则稍有不同,因为 postgresql 的自增id是通 ...
- 状态管理Vuex
路由Router 配置 {path:'/login',component:Login} 路由出口 router-view 传参 {path:'/login/:id',component:Login} ...
- 并发编程—— LinkedTransferQueue
1. 前言 Java 中总的算起来有 8 种阻塞队列. 我们分析了: 并发编程之 SynchronousQueue 核心源码分析 并发编程之 ConcurrentLinkedQueue 源码剖析 并发 ...
- 【angular5项目积累总结】结合adal4实现http拦截器(token)
import { Injectable } from '@angular/core'; import { HttpEvent, HttpInterceptor, HttpHandler, HttpRe ...
- node.js遇到的问题
1.cann't find module 'request' 不能找到’request' 模块 解决方法:找到项目的根路径,cd到该路径,运行命令 npm install request 2.no ...