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
相关产品推荐
相关产品推荐

