服务插件中获取单据体增删改查原创
金蝶云社区-云社区用户k8649110
云社区用户k8649110
1人赞赏了该文章 105次浏览 未经作者许可,禁止转载编辑于2024年03月11日 08:56:31

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.ComponentModel; using Kingdee.BOS; using Kingdee.BOS.Util; using Kingdee.BOS.Core; using Kingdee.BOS.Core.DynamicForm; using Kingdee.BOS.Core.DynamicForm.PlugIn; using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using Kingdee.BOS.Core.Metadata; using Kingdee.BOS.Core.Metadata.EntityElement; using Kingdee.BOS.Orm.DataEntity; namespace JDSample.ServicePlugIn.Operation {     [Description("在单据保存操作插件中,获取增、删、改的单据体行")]     public class S160810AEDRowOpPlug : AbstractOperationServicePlugIn     {         ///         /// 在单据数据,提交到数据库之前触发此事件:                 ///         /// 需要在执行保存前,数据还没有提交到数据库时,对单据数据包进行分析,得出增、删、改的单据体行                ///         ///         ///         <summary>         ///         /// 在单据数据,提交到数据库之前触发此事件:                 /// </summary>         /// <param name="e"></param>         public override void BeginOperationTransaction(BeginOperationTransactionArgs e)         {             List addRows = new List();             List editRows = new List();             List delRows = new List();             Entity entity = this.BusinessInfo.GetEntity("FPOOrderEntry");             foreach (var billObj in e.DataEntitys)             {                 // 1. 获取单据体行集合                 DynamicObjectCollection rows = entity.DynamicProperty.GetValue(billObj) as DynamicObjectCollection;                 // 2. 获取被删除的行                 foreach (var row in rows.DeleteRows)                 {                     // 判断此行,是不是从数据库读取出来,然后被删除了                      // 用户可能会在界面上,点新增行,随后点删除行,这种数据行,不需要关注                     if (row.DataEntityState.FromDatabase == true)                     {                         delRows.Add(row);                     }                 }                 // 2. 获取新增的行、修改的行                 foreach (var row in rows)                 {                     if (row.DataEntityState.FromDatabase == true)                     {                         // 本行是来自于数据库的,属于被修改的历史行                         editRows.Add(row);                     }                     else                     {                         // 本行不是来自于数据库,应该是用户点新增行创建的                         addRows.Add(row);                     }                 }             }         }     } }


赞 1