1. 程式人生 > 其它 >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; } } }