刷新库存项目屏幕

Refresh Stock Items Screen

我在 Acumatica 中遇到问题。我在 InventoryItem table 上创建了一个触发器,以将插入的记录插入到我的自定义 table.

问题是,每当我尝试在 Acumatica 中保存新的库存项目时,它都不会反映库存项目的正确上次保存数据。常规设置选项卡中的详细信息不正确。我需要关闭屏幕并重新打开才能看到正确的数据。

有人可以帮助我了解如何在保存后立即获得刷新的库存项目屏幕。或者每当有自定义触发器时,Acumatica 中是否存在错误?

你可以试试select的方法。 例如:这是 Acumatica 源代码中的项目设置数据视图(您可以使用探索源代码页面)

[PXViewName(Messages.InventoryItem)]
public PXSelect<InventoryItem, Where<InventoryItem.inventoryID, Equal<Current<InventoryItem.inventoryID>>>> ItemSettings;

通过自定义(假设您使用 AEF),为该数据视图添加 select 方法

[PXViewName(Messages.InventoryItem)]
public PXSelect<InventoryItem, Where<InventoryItem.inventoryID, Equal<Current<InventoryItem.inventoryID>>>> ItemSettings;

protected virtual IEnumerable itemSettings()
{
    return new PXSelect<InventoryItem, Where<InventoryItem.inventoryID, Equal<Current<InventoryItem.inventoryID>>>>(Base).Select();
}

有时我使用 sql 存储过程将数据插入我的 table,select 方法有助于重新加载插入数据的屏幕。

假设您的网格已绑定以查看 PayRollsDetails。然后你可以使用下面的代码来刷新你的网格:

PayRollsDetails.View.Cache.Clear();
PayRollsDetails.View.Cache.ClearQueryCache();

我没有检查你说的不刷新信息的问题,但是如果你保存记录后需要强制刷新屏幕

  • 覆盖坚持
  • 调用基本操作
  • 创建图形的新实例
  • 搜索要设置为头缓存的当前记录
  • 抛出新的重定向要求异常

因此代码可能如下所示[可能需要修改]

[PXOverride]
public void Persist(Action persit)
{
 persit();// this will call base Persist();
 InventoryItemMaint grp = PXGraph.CreateInstance<InventoryItemMaint>();
 InventoryItem inv = PXSelect<InventoryItem, Where<InventoryItem.inventoryCD, Equal<Required<InventoryItem.inventoryCD>>>>.Select(grp, this.Base.Item.Current.InventoryCD.Trim());
 if (inv != null && inv.InventoryID.HasValue)
 {
    grp.Item.Current = grp.Item.Search<InventoryItem.inventoryID>(inv.InventoryID);
    throw new PXRedirectRequiredException(grp, "Reloading Item");
 }
}

如果您不想刷新整个屏幕,您可以不抛出异常而是刷新其他用户 (Yura Zaletskyy) 在此 post 上建议的所需视图方法。