You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何自定义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.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 12:54:00