二开案例.表达式函数.复杂字段取值函数
【应用场景】大文本字段,富文本字段,批号字段等,其字段内容通常被拆分成两部分存储(字段标识,字段标识_Tag),表达式通常只能拿到字段标识定义的这部分数据,而另一部分数据则无法获取。
【演示案例】新增函数,用于获取复杂字段的任意部分的值。
【实现步骤】
<1>编写函数,代码如下。
using Kingdee.BOS;
using Kingdee.BOS.Core.Metadata.Expression.FuncDefine;
using System;
namespace Jac.XkDemo.BOS.Core.Functions
{
/// <summary>
/// 【函数】复杂字段取值函数
/// </summary>
[Serializable]
public class GetValueByTagFuncDefine : AbstractFuncDefine
{
public GetValueByTagFuncDefine()
{
}
public GetValueByTagFuncDefine(Context ctx, dynamic obj)
{
m_ctx = ctx;
m_obj = obj;
}
public override IFuncDefine GetFunctionDefine(Context ctx, dynamic obj)
{
return new GetValueByTagFuncDefine(ctx, obj);
}
public override object GetFuncDefine()
{
return new Func<string, object>(FuncDefine);
}
/// <summary>
/// 富文本获取Tag
/// </summary>
/// <param name="key">复杂字段的值的标识(复杂字段的标识+Tag)</param>
/// <returns>返回复杂字段的指定部分的值</returns>
object FuncDefine(string key)
{
if (key == null)
{
return null;
}
return m_obj.ActiveObject.ActiveObject[key];
}
}
}
<2>注册函数(可参考:https://vip.kingdee.com/article/74091717745675520)。
-- 复杂字段取值函数
DELETE T_MDL_ELEMENTTYPE WHERE FID=888009;
INSERT INTO T_MDL_ELEMENTTYPE (FID,FIMGKEY,FTYPEID,FISVISIBLE,FELEMENTCLASS,FAPPEARANCECLASS)
VALUES (888009, '', 1, 0, 'Jac.XkDemo.BOS.Core.Functions.GetValueByTagFuncDefine,Jac.XkDemo.BOS.Core', 'BOS_GETVALUEBYTAG');
DELETE T_MDL_DOMAINMODELELEMENTMAP WHERE FID=1200 and FELEMENTGROUPID=24 and FELEMENTTYPEID=888009;
INSERT INTO T_MDL_DOMAINMODELELEMENTMAP (FID, FENTRYID, FELEMENTTYPEID, FELEMENTGROUPID, FSEQ)
VALUES (1200, 888009, 888009, 24, 81);
DELETE T_MDL_ELEMENTTYPE_L WHERE FID=888009 AND FLOCALEID=2052;
INSERT INTO T_MDL_ELEMENTTYPE_L(FID,FNAME,FDESCRIPTION,FLOCALEID,FPKID)
VALUES (888009,N'复杂字段取值',N'按属性名获取复杂字段的指定部分的值。
使用示例:
取富文本字段的Tag:GETVALUEBYTAG(''F_Jac_RichEditTips_Tag'')
',2052,(SELECT ISNULL(MAX(FPKID), 0) + 1 FROM T_MDL_ELEMENTTYPE_L WHERE FPKID > 100000));
---------------------------------------------------------------------------------------------------------
<3>拷贝插件组件到应用站点的WebSite\Bin目录下,重启IIS。
<4>BOSIDE扩展采购订单,单据头新增富文本内容编辑字段,保存操作新增校验规则,如下图所示,保存元数据,开发完毕。
计算公式:GETVALUEBYTAG('F_Jac_RichEditTips_Tag') <> null
现在可以登录业务站点,打开采购订单编辑界面,录入订单数据但是不要填写富文本字段的内容部分,执行保存,此时保存操作会被校验规则拦截下来啦。
【金蝶云星空BOS二次开发案例演示】https://vip.kingdee.com/article/94751030918525696
二开案例.表达式函数.复杂字段取值函数
本文2024-09-23 04:20:17发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-164661.html