二开示例 : 单据中存在无权限的单据体明细时不允许审核操作原创
13人赞赏了该文章
430次浏览
编辑于2022年03月03日 20:02:31
以其他出库单为例 , 通过插件控制 ; 当明细中存在无权限的明细时不允许审核操作 ;
先上列表插件代码 :
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; } } }
生成组件并注册列表插件
接下来造数据验证 ; 新建一个角色"明细角色测试" , 并使用"业务对象功能授权" 功能设置该角色对其他出库单的查看数据范围 ,只能查看明细中物料代码包含"A"的权限
新建用户"ZLF005"; 并设置角色为"明细角色测试"
启用明细数据规则权限
使用有权限的用户登录并新建一条其他出库单 , 包含2条明细 ,其中一条物料编码包含A另外一条不包含A
使用"ZLF005"登录并打开其他出库单列表 , 只能查看物料编码包含A明细
选中此单据并点击 "审核" ,提示存在无权限的明细数据