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

Acumatica新版本无法在新标签页打开窗口问题咨询(附代码)

解决Acumatica新版本中无法通过新标签页打开窗口的问题

看起来你遇到的是Acumatica版本升级后,PXRedirectRequiredException无法触发新标签页打开的问题——这种情况我在处理版本迁移时也碰到过几次,大概率是构造异常时的参数配置或者新版本的框架行为变化导致的。

首先,先把你的代码补全并修正到符合新版本要求的写法:

public PXAction<ARInvoice> ViewRevBatch;

[PXButton(CommitChanges = true)] // 建议加上CommitChanges确保数据状态正确
[PXUIField(DisplayName = "View Reversal Batch")]
protected virtual void viewRevBatch()
{
    if (ConnectedBatches.Current != null)
    {
        Batch batch = ConnectedBatches.Current;
        
        // 初始化JournalEntry并加载目标Batch(更稳妥的查询加载方式)
        JournalEntry jeGraph = PXGraph.CreateInstance<JournalEntry>();
        jeGraph.BatchModule.Current = jeGraph.BatchModule.Search<Batch.batchNbr>(batch.BatchNbr, batch.Module);
        
        // 关键:显式指定NewWindow模式触发新标签页
        throw new PXRedirectRequiredException(jeGraph, null, PXBaseRedirectException.WindowMode.NewWindow);
    }
}

几个需要重点检查的关键点:

  • 必须显式指定WindowMode.NewWindow:旧版本中可能默认会打开新标签,但新版本Acumatica对跳转模式的默认值做了调整,必须在异常构造时明确声明这个参数,否则会默认在当前窗口跳转。
  • 确保Batch正确加载到JournalEntry图:原代码直接赋值Current的方式可能存在缓存状态问题,用Search方法重新查询加载能避免图初始化不完整,进而影响跳转逻辑。
  • 添加CommitChanges = true到PXButton属性:如果操作依赖当前页面的未提交数据,这个属性能确保数据先提交再执行跳转,避免因数据状态不一致导致的跳转失败。

额外排查方向:

  • 浏览器弹窗拦截:新版本Acumatica的跳转逻辑可能被浏览器识别为非用户触发的弹窗,测试时可以暂时关闭弹窗拦截,或者引导用户手动允许Acumatica站点的弹窗权限。
  • Acumatica站点配置:检查新版本System Management > Site Configuration下的站点设置,确保Allow Pop-ups相关配置处于启用状态。

内容的提问来源于stack exchange,提问作者Ihor Venher

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:01:19