二开案例.元数据插件.给基础资料字段附加过滤条件

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

二开案例.元数据插件.给基础资料字段附加过滤条件

【应用场景】

需要给多个单据中的,全部的,某个类型的基础资料字段设置过滤条件,如果通过BOSIDE扩展单据后进行调整,既繁琐,又容易遗漏。此时可通过元数据插件进行批量处理。


【案例演示】

采购订单,通过元数据插件,给所有的供应商字段附加过滤条件:供应商编码包含01。



【实现步骤】

<1>编写元数据插件,代码如下。

using Kingdee.BOS.Core.Metadata.FieldElement;

using Kingdee.BOS.Core.Metadata.ServicePlugIn;

using Kingdee.BOS.Core.Metadata.ServicePlugIn.Args;

using Kingdee.BOS.Util;

using System.ComponentModel;


namespace Jac.XkDemo.BOS.App.PlugIn

{

    /// <summary>

    /// 【元数据插件】给基础资料字段附加过滤条件

    /// </summary>

    [Description("【元数据插件】给基础资料字段附加过滤条件")]

    public class SetBaseDataFieldFilterFormMetaServicePlugIn : AbstractDynamicFormMetaServicePlugIn

    {

        public override void AfterRead(AfterMetaReadArgs e)

        {

            base.AfterRead(e);

            // 设置当前单据下的所有供应商字段,查询或赋值时,只查询供应商编码包含01的数据

            var fields = e.MetaData.BusinessInfo.GetFieldList().FindAll(o => o is BaseDataField && ((BaseDataField)o).LookUpObject != null && ((BaseDataField)o).LookUpObject.FormId == "BD_Supplier");

            foreach (var field in fields)

            {

                var baseDataField = (BaseDataField)field;

                baseDataField.Filter = baseDataField.Filter.JoinFilterString("FNumber like '%01%'");

            }

        }

    }

}


<2>注册元数据插件,在数据库执行以下脚本。

-- 采购订单注册元数据插件

DELETE FROM T_META_FORMMETASERVICEPLUGIN WHERE FID='36034F3A-EB75-4542-89EA-4B1BE5D3F05C';

INSERT INTO T_META_FORMMETASERVICEPLUGIN (FID,FOBJECTID,FCLASSNAME,FSEQ) VALUES ('36034F3A-EB75-4542-89EA-4B1BE5D3F05C','PUR_PurchaseOrder','Jac.XkDemo.BOS.App.PlugIn.SetBaseDataFieldFilterFormMetaServicePlugIn,Jac.XkDemo.BOS.App.PlugIn',0);


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


<4>BOSIDE扩展采购订单,新增供应商基础资料字段,保存元数据,开发完毕。


【功能验证】

<1>登录业务站点,打开采购订单,检索供应商,如下图,此时只显示编号包含01的供应商。


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

【知识点】

<1>元数据插件未提供注册界面,直接往对应表预插即可。

SELECT * FROM T_META_FORMMETASERVICEPLUGIN

<2>元数据插件基于业务对象进行隔离,如果多个业务对象共用同一个元数据插件,每个业务对象要都注册一次该插件。

<3>元数据插件会加大元数据管理的复杂性,改变了BOSIDE所见即所得的游戏规则,如非特殊场景,不建议使用。

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













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

二开案例.元数据插件.给基础资料字段附加过滤条件

【应用场景】需要给多个单据中的,全部的,某个类型的基础资料字段设置过滤条件,如果通过BOSIDE扩展单据后进行调整,既繁琐,又容易遗漏。...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息