二开案例.元数据插件.给基础资料字段附加过滤条件
【应用场景】
需要给多个单据中的,全部的,某个类型的基础资料字段设置过滤条件,如果通过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
二开案例.元数据插件.给基础资料字段附加过滤条件
本文2024-09-23 04:18:42发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-164495.html