Acumatica 2024 R1中‘ShowItems’命令位置查询
Acumatica 2024 R1中ShowItems命令的位置查找
问题背景
从Acumatica 2022 R2升级至2024 R1后,销售订单界面网格区的“Add Items”按钮命令从AddInvBySite变更为ShowItems:
2022 R2的按钮配置
<CustomItems> <px:PXToolBarButton Text="Add Items" Key="cmdASI"> <AutoCallBack Command="AddInvBySite" Target="ds"> <Behavior CommitChanges="True" PostData="Page" /> </AutoCallBack> </px:PXToolBarButton> </CustomItems>
对应的BLC代码:
public PXAction<SOOrder> addInvBySite; [PXUIField(DisplayName = "Add Items", MapEnableRights = PXCacheRights.Select, MapViewRights = PXCacheRights.Select)] [PXLookupButton] public virtual IEnumerable AddInvBySite(PXAdapter adapter) { if (sitestatus.AskExt((PXGraph g, string viewName) => sitestatusfilter.Cache.Clear()) == WebDialogResult.OK) { return AddInvSelBySite(adapter); } sitestatusfilter.Cache.Clear(); sitestatus.Cache.Clear(); return adapter.Get(); }
2024 R1的按钮配置
<CustomItems> <px:PXToolBarButton Text="Add Items" Key="cmdASI"> <AutoCallBack Command="ShowItems" Target="ds"> <Behavior CommitChanges="True" PostData="Page" /> </AutoCallBack> </px:PXToolBarButton> </CustomItems>
但在自定义BLC或页面源码中找不到ShowItems命令的定义,以下是定位方法:
定位ShowItems命令的方法
1. 检查系统内置基类/父类
Acumatica 2024 R1重构了库存项选择逻辑,ShowItems命令通常定义在SOOrderEntry的父类或通用库存操作基类中:
- 查看
PX.Objects.SO.SOOrderEntry的继承链,确认是否有父类(如PX.Objects.IN.InventorySelectorBase)包含该命令 - 检查
PX.Objects.IN命名空间下的通用库存选择类,新版本将跨单据的库存选择逻辑统一到这类基类中
2. 查找动态注入的BLC扩展
ShowItems可能通过PXExtensionAttribute动态注入到SOOrderEntry中:
- 检查项目中自定义的
SOOrderEntry扩展类,是否有注册ShowItems动作的代码 - 查看系统自带的扩展(如
PX.Objects.SO.Extensions.SOInventoryExtension),这类扩展负责添加通用单据的库存操作命令
3. 全局代码搜索
在Visual Studio中执行以下步骤:
- 右键解决方案 → 选择“查找所有引用”
- 搜索关键词
ShowItems,勾选“包括外部项目”(覆盖系统DLL:PX.Objects.SO.dll、PX.Objects.IN.dll) - 从搜索结果中查看类定义,即可定位到命令所在的BLC或扩展类
4. 参考官方版本说明
查看Acumatica 2024 R1的Release Notes,在“Sales Order Management”板块中会标注命令重构的迁移说明,直接指向ShowItems的实现位置
内容的提问来源于stack exchange,提问作者pmfith
相关产品推荐
相关产品推荐

