二开案例.表单插件.点击单据体超链接打开单据时验证单据体明细数据权限

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

二开案例.表单插件.点击单据体超链接打开单据时验证单据体明细数据权限

【应用场景】

点击单据体超链接打开单据时验证单据体明细数据权限。


【案例演示】

采购订单,明细单据体,点击物料编码超链接打开物料查看界面前,检查数据权限。


【实现步骤】

<1>编写表单插件,代码如下。

using Kingdee.BOS.Core.DynamicForm.PlugIn;

using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;

using Kingdee.BOS.Core.Metadata.FieldElement;

using Kingdee.BOS.Orm.DataEntity;

using Kingdee.BOS.ServiceHelper;

using Kingdee.BOS.Util;

using System.ComponentModel;

using System.Linq;


namespace Jac.XkDemo.BOS.Business.PlugIn

{

    /// <summary>

    /// 【表单插件】点击单据体超链接打开单据时验证单据体明细数据权限

    /// </summary>

    [Description("【表单插件】点击单据体超链接打开单据时验证单据体明细数据权限"), HotUpdate]

    public class EntryLinkAuthDetailDataRuleFormPlugIn : AbstractDynamicFormPlugIn

    {

        public override void EntryButtonCellClick(EntryButtonCellClickEventArgs e)

        {

            base.EntryButtonCellClick(e);

            var fieldKey = "FMaterialId";

            if (e.FieldKey.EqualsIgnoreCase(fieldKey))

            {

                // 获取要通过超链接打开的业务对象的数据的内码

                var field = (BaseDataField)this.View.BillBusinessInfo.GetField(e.FieldKey);

                var businessInfo = FormMetaDataCache.GetCachedFormMetaData(this.Context, field.LookUpObject.FormId).BusinessInfo;

                var val = this.View.Model.GetValue(fieldKey, e.Row) as DynamicObject;

                if (val == null || val[0] == null)

                {

                    return;

                }


                var pkid = val[0].ToString();

                // 检查当前用户是否有指定业务对象数据的明细数据的全部查看权限,权限不足时不允许打开单据查看界面

                var dataRulePara = new Kingdee.BOS.Core.Objects.Permission.Objects.FilterObjectByDataRuleParamenter(businessInfo, new[] { pkid }.ToList());

                var authResult = PermissionServiceHelper.AuthDetailDataRule(this.View.Context, dataRulePara);

                if (authResult != null && !authResult.Passed)

                {

                    this.View.ShowMessage("单据内容存在无权限明细数据,不允许查看,请从列表查看。");

                    e.Cancel = true;

                }

            }

        }

    }

}



<2>拷贝插件组件到应用站点的WebSite\Bin目录下,重启IIS。


<3>BOSIDE扩展采购订单,注册表单插件,保存元数据,开发完毕。

---------------------------------------------------------------------------------------------------------













【金蝶云星空BOS二次开发案例演示】https://vip.kingdee.com/article/94751030918525696

二开案例.表单插件.点击单据体超链接打开单据时验证单据体明细数据权限

【应用场景】点击单据体超链接打开单据时验证单据体明细数据权限。【案例演示】采购订单,明细单据体,点击物料编码超链接打开物料查看界面...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息