二开案例.列表插件.信息中心已办列表显示单据编号

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

二开案例.列表插件.信息中心已办列表显示单据编号

【应用场景】

历史版本,信息中心待办列表可以显示单据编号,而已办列表没有单据编号字段,不方便查看。

此方案演示如何通过二开的方式给已办列表增加单据编号字段

注意:标准产品已在版本PT-146930 [8.1.0.20221110]及之后的版本,给已办列表增加了单据编号字段,您也可以通过升级补丁的方式解决此问题,最新版本支持效果如下图。

上传图片



【解决方案】

目前有2种方案来实现此需求。

<1>元数据大调整,扩展信息中心_已办任务,新增单据编号字段,调整单据头绑定的视图V_WF_ASSIGNEND,视图上要新增单据编号字段,单据编号可从流程实例编码截取而来。(此方案标准产品预计22年9月补丁会发布)

此方案支持单据编号显示、过滤和排序,但实现过程复杂,后续升级维护麻烦。

<2>不动元数据,仅通过列表插件动态创建列。

此方案仅能显示单据编号,不支持使用单据编号进行过滤和排序。

本案例采用此方案实现。



【案例演示】

信息中心已办列表显示单据编号。


【实现步骤】

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

using Kingdee.BOS;
using Kingdee.BOS.Core.List;
using Kingdee.BOS.Core.List.PlugIn;
using Kingdee.BOS.Core.List.PlugIn.Args;
using Kingdee.BOS.Util;
using System;
using System.ComponentModel;
using System.Linq;
namespace Jac.XkDemo.BOS.Business.PlugIn
{
    /// <summary>
    /// 【列表插件】信息中心已办列表显示单据编号
    /// https://vip.kingdee.com/article/352107501707124992
    /// </summary>
    [Description("【列表插件】信息中心已办列表显示单据编号"), HotUpdate]
    public class AppendBillNoColumnListPlugIn : AbstractListPlugIn
    {
        public override void CreateListHeader(CreateListHeaderEventArgs e)
        {
            base.CreateListHeader(e);
            if (!e.ListHeader.GetChilds().Exists(o => o.Key.EqualsIgnoreCase("FNumber")))
            {
                // 如果流程实例编码列被隐藏了,单据编号列也隐藏
                return;
            }
            var header = e.ListHeader.AddChild(0);
            header.Caption = new LocaleValue("单据编号/编码");
            header.Key = "FBillNo";
            header.FieldName = "FBillNo";
            header.ColType = SqlStorageType.Sqlnvarchar;
            header.Width = 200;
            header.Visible = true;
            header.ColIndex = e.ListHeader.GetChilds().Max(o => o.ColIndex) + 1;
        }
        public override void FormatCellValue(FormatCellValueArgs args)
        {
            base.FormatCellValue(args);
            if (args.Header.Key.Equals("FBillNo", StringComparison.OrdinalIgnoreCase))
            {
                var row = (ListRow) args.DataRow;
                if (!row.ColumnContains("FNUMBER"))
                {
                    // 如果流程实例编码列被隐藏了,单据编号列也隐藏
                    return;
                }
                var procNumber = row["FNUMBER"] as string;
                if (string.IsNullOrWhiteSpace(procNumber))
                {
                    return;
                }
                var splitIndex = procNumber.LastIndexOf("_");
                if (splitIndex <= 0)
                {
                    return;
                }
                var billNo = procNumber.Substring(0, splitIndex);
                args.FormateValue = billNo;
            }
        }
    }
}


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


<3>BOSIDE扩展[信息中心_已办任务未归档(WF_AssignmentHisBill)],注册列表插件,保存元数据,开发完毕。



【功能验证】

<1>登录业务站点,打开信息中心已办列表,此时可以显示单据编号啦。

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













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

二开案例.列表插件.信息中心已办列表显示单据编号

【应用场景】历史版本,信息中心待办列表可以显示单据编号,而已办列表没有单据编号字段,不方便查看。此方案演示如何通过二开的方式给已办...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息