二开示例 : 单据中存在无权限的单据体明细时不允许审核操作原创
金蝶云社区-_竹林风_
_竹林风_
13人赞赏了该文章 430次浏览 未经作者许可,禁止转载编辑于2022年03月03日 20:02:31

以其他出库单为例 , 通过插件控制 ;  当明细中存在无权限的明细时不允许审核操作 ; 


  1. 先上列表插件代码 :

  2. using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Linq;
    using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
    using Kingdee.BOS.Core.List.PlugIn;
    using Kingdee.BOS.Core.Objects.Permission.Objects;
    using Kingdee.BOS.Util;
    
    namespace Kingdee.BOS.Test.WJL
    {
        [HotUpdate]
        [Description("明细权限验证测试")]
        public class DetailAuthListPlugin : AbstractListPlugIn
        {
           
            public override void BeforeDoOperation(BeforeDoOperationEventArgs e)
            {
                if (e.Operation.FormOperation.OperationId == Core.Metadata.FormElement.FormOperation.Operation_Audit)
                {
                    var list = e.Ids.Select(id => id.ToString()).ToList();
                    var authResult = GetAuthDetailDataRule(list);
                    if (authResult != null && authResult.Passed == false)
                    {
                        this.View.ShowErrMessage("提示", "存在无权限的明细数据,不允许审核!");
                        e.Cancel = true;
                    }
                }
                base.BeforeDoOperation(e);
            }
    
            /// <summary>
            /// 根据明细数据权限验证是否有权 
            /// </summary>
            /// <param name="pkIds">内码列表</param>
            /// <returns></returns>
            protected ObjectIdDetialRuleAuthedResult GetAuthDetailDataRule(List<string> pkIds)
            {
                var dataRulePara = new FilterObjectByDataRuleParamenter(this.View.BillBusinessInfo, pkIds);
                var authResult = ServiceHelper.PermissionServiceHelper.AuthDetailDataRule(this.View.Context, dataRulePara);
                return authResult;
            }
    
        }
    }
  3. 生成组件并注册列表插件

    2.3.png


  4. 接下来造数据验证 ; 新建一个角色"明细角色测试" , 并使用"业务对象功能授权" 功能设置该角色对其他出库单的查看数据范围 ,只能查看明细中物料代码包含"A"的权限

    2.png


  5. 新建用户"ZLF005"; 并设置角色为"明细角色测试"

    00.png


  6. 启用明细数据规则权限

    2 (2).PNG


  7. 使用有权限的用户登录并新建一条其他出库单 , 包含2条明细 ,其中一条物料编码包含A另外一条不包含A

    3.png


  8. 使用"ZLF005"登录并打开其他出库单列表 , 只能查看物料编码包含A明细

    4.png


  9. 选中此单据并点击 "审核" ,提示存在无权限的明细数据

    9.png








赞 13