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

在Acumatica中跨图调用Action,如何传递正确PXAdapter至Release方法?

让我来帮你一步步拆解并解决这几个问题:

问题1:PXAdapter获取所有ARPayment记录导致批量处理异常

你遇到的核心问题是PXAdapter默认拉取了所有ARPayment记录,这不仅拖慢了处理速度,还引入了无效记录导致后续错误。解决思路是给适配器添加精准的过滤条件,只让它处理你需要的目标记录。

举个代码示例,假设你要处理当前选中的Payment记录:

// 获取当前要处理的付款记录
var currentPayment = graphPmt.Document.Current;
if (currentPayment == null) return;

// 创建适配器并指定过滤条件,只匹配当前记录的DocType和RefNbr
var releaseAdapter = new PXAdapter(graphPmt.Document)
{
    Searches = new object[] { currentPayment.DocType, currentPayment.RefNbr }
};

// 执行Release操作,此时只会处理目标记录
graphPmt.Release.Press(releaseAdapter);

这样就能避免适配器拉取全量数据,大幅提升处理效率,同时也能排除其他无效记录的干扰。

问题2:“PaymentMethod can't be null”错误(调试时Document.PaymentMethod非空)

这个错误大概率是因为之前适配器拉取的全量记录中,存在PaymentMethod为空的其他付款记录,而你调试时查看的是当前正常的Document记录。

解决了第一个问题后,适配器只会处理你指定的目标记录,这个错误应该会自然消失。不过保险起见,你可以在执行Release前先做个校验:

var currentPayment = graphPmt.Document.Current;
if (string.IsNullOrEmpty(currentPayment.PaymentMethodID))
{
    throw new PXException("当前付款记录的支付方式不能为空,请检查后重试。");
}

如果还是出现错误,可能是缓存同步问题,尝试刷新一下缓存再操作:

graphPmt.Document.Cache.Reload(currentPayment);
问题3:在另一个图中调用Action时传递适配器

当你需要在A图中调用B图的Action时,核心是实例化目标图后,创建关联到目标视图的适配器,并传入对应的过滤条件或记录。

举个具体的例子,假设你要在GraphA中调用PaymentEntry图的Release操作:

// 实例化目标图PaymentEntry
using (var pmtGraph = PXGraph.CreateInstance<PaymentEntry>())
{
    // 假设你在GraphA中有要处理的付款记录的DocType和RefNbr
    string targetDocType = "INV";
    string targetRefNbr = "PMT-000123";

    // 创建适配器,关联到PaymentEntry的Document视图,并设置搜索条件
    var adapter = new PXAdapter(pmtGraph.Document)
    {
        Searches = new object[] { targetDocType, targetRefNbr }
    };

    // 调用Release Action
    pmtGraph.Release.Press(adapter);
}

如果需要传递多条记录,也可以直接给适配器的Records属性赋值:

// 假设你有一批要处理的ARPayment记录列表
List<ARPayment> targetPayments = GetTargetPayments();

using (var pmtGraph = PXGraph.CreateInstance<PaymentEntry>())
{
    var adapter = new PXAdapter(pmtGraph.Document)
    {
        Records = targetPayments.ToArray()
    };

    pmtGraph.Release.Press(adapter);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:11:25