【问题标题】:RowPersisted on two different DAC's are in infinite loop两个不同 DAC 上的 RowPersisted 处于无限循环中
【发布时间】:2018-01-23 05:19:00
【问题描述】:

我目前在 Acumatica 的 SOLine 和 POLine 上有自定义 RowPersisted 事件。基本上,当用户将它们保存在 Acumatica 中时,我需要确保所有链接的 PO 和 SO 中的自定义供应商成本字段和 PO 中的单价字段相互更新。所以我在 POLine_RowPersisted 中有这样的东西:

        soRecExt.UsrVendorCost = line.CuryUnitCost;

        SOOrderEntry graph = PXGraph.CreateInstance<SOOrderEntry>();

        graph.CurrentDocument.Current = soOrd;
        var result = graph.Transactions.Select();

        graph.Transactions.Update(soRec);
        graph.Actions.PressSave();

在 SOLine_RowPersisted 中是这样的:

        poRec.CuryUnitCost = lineExt.UsrVendorCost;

        POOrderEntry graph = PXGraph.CreateInstance<POOrderEntry>();

        graph.CurrentDocument.Current = poOrd;
        var result = graph.Transactions.Select();

        graph.Transactions.Update(poRec);
        graph.Actions.PressSave();

不幸的是,当一个更新时,整个事情进入无限循环。我尝试过这样的事情:

        POOrderEntry_Extension graphExt = graph.GetExtension<POOrderEntry_Extension>();
        graphExt.RowPersisted.RemoveHandler<SOOrderEntry_Extension>(graphExt.POLine_RowPersisted);

但是,图形扩展上没有 RowPersisted。我的活动设置为公开。有人可以帮忙吗?

【问题讨论】:

标签: acumatica


【解决方案1】:

事件由基础图注册和触发,因此您必须在基础图上删除它们。

我相信你想要完成的更像是:

POOrderEntry_Extension graphExt = graph.GetExtension<POOrderEntry_Extension>();
graphExt.Base.RowPersisted.RemoveHandler<POOrderEntry>(graphExt.POLine_RowPersisted);

如果 'graph' 是 POOrderEntry 类型,那么使用 'graph' 等效于 'graphExt.Base'。

【讨论】:

  • graphExt中没有Base
  • 我基本上通过比较第一行的值是否不相等来打破循环,但想知道如何使用 RemoveHandler 完成。它必须适用于扩展。
  • 那你就不能用graph吗?什么是“图表”类型?您需要使用类型 POOrderEntry 而不是 POOrderEntry_Extension 或 SOOrderEntry 而不是 SOOrderEntry_Extension。在您的原始代码中,您使用的是 graphExt.RowPersisted 其中 graphExt 是图扩展而不是基本图。事件存储在基础图中,因此 graphExt 不会剪切它。
  • “graphExt.POLine_RowPersisted”部分很好,因为这是您要删除的事件。也许您只需要放置 而不是
  • 基本上这是我的图表声明:public class SOOrderEntry_Extension : PXGraphExtension 所以 SOOrderEntry_Extension 是一个图表类型。我尝试使用 graph.RowPersisted.RemoveHandler(graphExt.POLine_RowPersisted) 并且仍然没有删除处理程序。
猜你喜欢
  • 2020-09-09
  • 1970-01-01
  • 2021-10-23
  • 1970-01-01
  • 1970-01-01
  • 2020-07-16
  • 2022-12-18
  • 1970-01-01
  • 2020-02-09
相关资源
最近更新 更多