二开案例.表达式函数.获取文件名

【应用场景】获取附件字段对应的附件的文件名。
【案例演示】新增函数,用于获取文件名。

【实现步骤】
<1>编写函数,代码如下。
using Kingdee.BOS;
using Kingdee.BOS.App.Core;
using Kingdee.BOS.Core.Metadata;
using Kingdee.BOS.Core.Metadata.Expression.FuncDefine;
using System;
namespace Jac.XkDemo.BOS.Core.Functions
{
/// <summary>
/// 【函数】获取文件名
/// </summary>
[Serializable]
public class GetFileNameFuncDefine : AbstractFuncDefine
{
public GetFileNameFuncDefine()
{
}
public GetFileNameFuncDefine(Context ctx, dynamic obj)
{
m_ctx = ctx;
m_obj = obj;
}
public override IFuncDefine GetFunctionDefine(Context ctx, dynamic obj)
{
return new GetFileNameFuncDefine(ctx, obj);
}
public override object GetFuncDefine()
{
return new Func<string, object>(FuncDefine);
}
/// <summary>
/// 获取文件名
/// </summary>
/// <param name="fileId">文件Id</param>
/// <returns>返回文件名</returns>
object FuncDefine(string fileId)
{
if (string.IsNullOrWhiteSpace(fileId))
{
return null;
}
var metadata = (FormMetadata)new MetaDataService().Load(m_ctx, "BOS_FileServerFileInfo");
var objFile = new ViewService().LoadSingle(m_ctx, fileId, metadata.BusinessInfo.GetDynamicObjectType());
if (objFile == null)
{
return null;
}
return objFile["FileName"].ToString();
}
}
}
<2>注册函数(可参考:https://vip.kingdee.com/article/74091717745675520)。
-- 获取文件名
DELETE T_MDL_ELEMENTTYPE WHERE FID=888011;
INSERT INTO T_MDL_ELEMENTTYPE (FID,FIMGKEY,FTYPEID,FISVISIBLE,FELEMENTCLASS,FAPPEARANCECLASS)
VALUES (888011, '', 1, 0, 'Jac.XkDemo.BOS.Core.Functions.GetFileNameFuncDefine,Jac.XkDemo.BOS.Core', 'BOS_GETFILENAME');
DELETE T_MDL_DOMAINMODELELEMENTMAP WHERE FID=1200 a
二开案例.表达式函数.获取文件名
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



