子单据体运用数据包赋值原创
金蝶云社区-进击的小D
进击的小D
16人赞赏了该文章 785次浏览 未经作者许可,禁止转载编辑于2023年08月02日 16:22:38
  1. 子单据体运用数据包赋值前需要考虑两个问题:(1)怎么获取子单据体的数据包(2)子单据体和单据体之间的联系

  2. 业务场景,当单据体中的”F_MES_Class“字段改变时,子单据体中的”F_MES_PersonTotal“字段自动赋值15
  3. //代码实现
    using Kingdee.BOS.Core.Bill.PlugIn;
    using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
    using Kingdee.BOS.Core.Metadata.EntityElement;
    using Kingdee.BOS.Orm.DataEntity;
    using Kingdee.BOS.Util;
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace Kingdee.K3Clound.DJC.learn.PlugIn
    {
        [Description("【单据插件】"),HotUpdate]
        public class calssSubEntryBillPlugIn:AbstractBillPlugIn
        {
            public override void DataChanged(DataChangedEventArgs e)
            {
                base.DataChanged(e);
                if(e.Field.Key.EqualsIgnoreCase("F_MES_Class"))
                {
                    //获取F_MES_DetailEntity单据体的数据包
                    var entry = this.View.Model.DataObject["F_MES_DetailEntity"] as DynamicObjectCollection;
                    //获取F_MES_ClassSubEntity子单据体(包含子单据体的一些属性信息)
                    var  entryRow = this.View.BusinessInfo.GetEntryEntity("F_MES_ClassSubEntity");
                    //获取F_MES_ClassSubEntity子单据体的数据包(当前单据体行下的数据包)
                    var dynamicObject = this.View.Model.GetEntityDataObject(entryRow);
                      //创建一个F_MES_ClassSubEntity子单据体分录行类型的数据包
                    DynamicObject subEntry = dynamicObject.DynamicCollectionItemPropertyType.CreateInstance() as DynamicObject;
                    //F_MES_ClassSubEntity子单据体中的F_MES_PersonTotal字段赋值
                    subEntry["F_MES_PersonTotal"] = 15;
                    //将子单据体分录行的数据包添加到子单据体的数据包中
                    dynamicObject.Add(subEntry);
                    //页面刷新,呈现结果
                    this.View.UpdateView();
                }
            }
        }
    }


赞 16