二开案例.表单插件.子单据体新增行

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

二开案例.表单插件.子单据体新增行

【应用场景】

子单据体新增行

注意:子单据体的数据,是依附在单据体的某一行上,而不是一个独立存在的集合。因此,给子单据体新增分录行前,需要提前选中单据体的目标行,如果不指定,就都增加到单据体的当前行上的子单据体数据包集合中了。



【案例演示】

采购订单,使用插件,给单据体和子单据体新增分录行。

上传图片



【实现步骤】

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


using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Util;
using System.ComponentModel;
namespace Jac.XkDemo.BOS.Business.PlugIn
{
    /// <summary>
    /// 【表单插件】子单据体新增行
    /// </summary>
    [Description("【表单插件】子单据体新增行"), HotUpdate]
    public class SubEntityAddRowFormPlugIn : AbstractDynamicFormPlugIn
    {
        public override void EntryBarItemClick(BarItemClickEventArgs e)
        {
            base.EntryBarItemClick(e);
            var entityKey = "FPOOrderEntry";
            var subEntityKey = "FEntryDeliveryPlan";
            if (e.ParentKey.EqualsIgnoreCase(entityKey))
            {
                // 单据体新增行
                if (e.BarItemKey.Equals("test1"))
                {
                    // 创建分录行
                    //this.Model.CreateNewEntryRow(subEntityKey);
                    // 批量创建分录行
                    this.Model.BatchCreateNewEntryRow(entityKey, 5);
                    this.View.ShowMessage("单据体分录行已创建!");
                    return;
                }
                if (e.BarItemKey.Equals("test2"))
                {
                    // 子单据体新增行
                    var rowCount = this.Model.GetEntryRowCount(entityKey);
                    var currentRowIndex = this.Model.GetEntryCurrentRowIndex(entityKey);
                    for (var i = 0; i < rowCount; ++i)
                    {
                        // 切换到单据体的某一行
                        this.Model.SetEntryCurrentRowIndex(entityKey, i); // 注意:这句非常重要,子单据体的数据,是依附在单据体的某一行上,而不是一个独立存在的集合。
                        // 给单据体当前行的子单据体,创建新的子单据体行
                        // 创建分录行
                        //this.Model.CreateNewEntryRow(subEntityKey);
                        // 批量创建分录行
                        this.Model.BatchCreateNewEntryRow(subEntityKey, i + 1);
                    }
                    this.Model.SetEntryCurrentRowIndex(entityKey, currentRowIndex);
                    this.View.ShowMessage("子单据体分录行已创建!");
                }
            }
        }
    }
}


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

上传图片


<3>BOSIDE扩展采购订单,明细信息单据体的菜单集合新增菜单项,注册表单插件,保存元数据,开发完毕。

上传图片



【功能验证】

<1>登录业务站点,打开采购订单新增界面,新增分录行,效果如下图。

上传图片

上传图片

单据体的数据包从属于的单据头,子单据体的数据包从属于与单据体的某一行,如下图所示。

单据体数据包:

上传图片

子单据体数据包:

上传图片

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













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

二开案例.表单插件.子单据体新增行

【应用场景】子单据体新增行注意:子单据体的数据,是依附在单据体的某一行上,而不是一个独立存在的集合。因此,给子单据体新增分录行前,...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息