错误 #153 另一个进程添加了 'Note' 记录。您的更改将丢失(SalesOrderEntry)

Error #153 Another process has added 'Note' record. Your changes will be lost(SalesOrderEntry)

在“销售订单”页面中,我创建了一个自定义按钮,用于保存和刷新页面。目前它保存良好并将新订单处理为订单号但是当我尝试添加 item/edit 或在下拉菜单中执行操作时我收到错误消息。

这是我的代码:

public PXAction<SOOrder> SRefresh;
    [PXUIField(DisplayName = "S RefreshT")]
    [PXButton(CommitChanges = true)]
    protected virtual IEnumerable sRefresh(PXAdapter adapter)
    {
     SOOrderEntry graph = PXGraph.CreateInstance<SOOrderEntry>();
     Base.Actions.PressSave();

     SOLine sLine = PXSelect<SOLine, Where<SOLine.orderNbr, Equal<Required<SOLine.orderNbr>>>>.Select(graph, this.Base.Document.Current.OrderNbr);

     if (sLine != null && sLine.InventoryID.HasValue)
       {
        graph.Document.Current = graph.Document.Search<SOLine.orderNbr>(sLine.OrderNbr);
        throw new PXRedirectRequiredException(graph, null);

       }

       return adapter.Get();
    }

我也试过按照手册中的说明使用 graph.Persist() 而不是 Action.PressSave();没有成功。

非常感谢你们的任何意见,谢谢

由于您正在处理当前的销售订单,因此您不需要创建销售订单输入图的新实例并重定向您的用户。您可以使用 Base 对象和 运行 所有逻辑。

Base.Document.Current 包含对当前 SOOrder 的引用,Base.Transactions 包含此文档 SOLine 的列表。我还在您的代码中发现的另一个问题是您正在调用 Document.Search<SOline.orderNbr>;它应该是 SOOrder.orerNbr,因为您正在文档视图中搜索,其中包含销售订单,而不是行。在这种情况下,甚至不需要搜索,Base.Document.Current 已经设置为您正在查看的顺序。

我强烈建议完成标准的 Acumatica 开发人员培训 - T100、T200、T300;这些东西都包含在内,可以让您快速提高工作效率