首页 > 其他分享> > Dynamics Crm 365 查询Retrieve的Plugins,需要通过业务逻辑判断,将部分字段不展示处理,但是遇到EntityReference=Null没有效果的问题
Dynamics Crm 365 查询Retrieve的Plugins,需要通过业务逻辑判断,将部分字段不展示处理,但是遇到EntityReference=Null没有效果的问题
作者:互联网
Dynamics Crm 365 查询Retrieve的Plugins,需要通过业务逻辑判断,将部分字段不展示处理,但是遇到EntityReference=Null没有效果
原先做的处理是:不能查看的字段直接赋值NULL,但是奇怪的是PC段没问题,手机端Cube却针对EntityReference和OptionSettion类型的没有效果
后来换了一种思路, 在postRetrieve的时候再查询一次,然后覆盖entity返回
public class RetrieveParameters : IPlugin { public void Execute(IServiceProvider serviceProvider) { Microsoft.Xrm.Sdk.IPluginExecutionContext context = (Microsoft.Xrm.Sdk.IPluginExecutionContext) serviceProvider.GetService(typeof(Microsoft.Xrm.Sdk.IPluginExecutionContext)); IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory)); IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId); IOrganizationService adminService = serviceFactory.CreateOrganizationService(null); ITracingService tracer = (ITracingService)serviceProvider.GetService(typeof(ITracingService)); tracer.Trace("开始执行线索RetrieveParameters插件Execute方法。"); if (context.Depth > 1) { tracer.Trace("context.Depth > 1 返回执行程序"); return; } if (context.OutputParameters.Contains("BusinessEntity")) { Entity entity = (Entity)context.OutputParameters["BusinessEntity"]; tracer.Trace(entity.LogicalName); if (BllService.CheckOwner(entity,adminService,context,tracer,isSalesManager)) { return; } if (entity.LogicalName == "account") { #region 客户 if (BllService.checkAccountGroupAndShare(entity, adminService, context, tracer)) { return; } BllService.cleanAccountIndustry1(entity, adminService); var Attributes = entity.Attributes.ToArray(); entity = service.Retrieve("account", entity.Id, new ColumnSet("accountid", "name", "accountnumber", "ownerid", "scc_cust_class")); //for (int i = 0; i < Attributes.Count(); i++) //旧方式 //{ // var attribute = Attributes[i]; // if (attribute.Key != "accountid" && attribute.Key != "name" && attribute.Key != "accountnumber" && attribute.Key != "ownerid" && attribute.Key != "scc_cust_class") // { // entity[attribute.Key] = null; // } //} #endregion } context.OutputParameters["BusinessEntity"] = entity; } } }
标签:Key,attribute,entity,EntityReference,context,serviceProvider,365,tracer,Crm 来源: https://www.cnblogs.com/parkerchen/p/16053974.html