如何自定义GL501000 Release Transactions屏幕 需使用什么触发事件
解决方案
问题根因
你自定义的BatchRelease扩展未被触发,是因为GL501000过账事务屏幕的底层过账处理逻辑绑定的是BatchReleaseProcess图形类,而非你扩展的BatchRelease类,所以该扩展的初始化方法不会在过账流程中执行。
推荐实现方案
根据你的业务需求选择对应事件:
- 若需要过账前对批次数据做校验、字段修改等预处理:使用
RowReleasing事件 - 若需要过账后执行后续关联业务逻辑:使用
RowReleased事件 - 若确实需要在过账流程中给实例化的
JournalEntry扩展打标记:将注册逻辑迁移到BatchReleaseProcess的扩展中即可生效
修正代码示例
using PX.Data; using PX.Objects.GL; namespace PX.Objects.GL { // 改为扩展BatchReleaseProcess类 public class BatchReleaseProcess_Extension : PXGraphExtension<BatchReleaseProcess> { public override void Initialize() { base.Initialize(); // 原有的JournalEntry实例创建监听逻辑迁移到这里即可生效 PXGraph.InstanceCreated.AddHandler<JournalEntry>((JournalEntry graphGL) => { graphGL.GetExtension<JournalEntry_Extension>().ModifyBatchFrom = true; }); } #region 过账前事件示例(按需使用) protected virtual void _(Events.RowReleasing<Batch> e) { if (e.Row == null) return; // 在这里编写过账前的自定义逻辑 } #endregion #region 过账后事件示例(按需使用) protected virtual void _(Events.RowReleased<Batch> e) { if (e.Row == null) return; // 在这里编写过账后的自定义逻辑 } #endregion } }
内容的提问来源于stack exchange,提问作者Marco A.
相关产品推荐
相关产品推荐

