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

Acumatica销售订单库存查询属性过滤报InventoryItem.NoteID绑定错误

问题解决方案

错误根因

Acumatica的属性过滤逻辑默认会依赖属性宿主表的NoteID字段,SOSiteStatusSelected是销售订单库存查询的投影DAC,默认数据视图未关联InventoryItem表,触发过滤时属性查询逻辑尝试引用InventoryItem.NoteID但该表未加入当前查询上下文,导致绑定失败。

修复步骤

  • 给SOSiteStatusSelected扩展类添加关联InventoryItem的NoteID字段,标记为非可见DB字段,通过InventoryID外键关联取值
public class SOSiteStatusSelectedExt : PXCacheExtension<SOSiteStatusSelected>
{
    [PXDBGuid(BqlField = typeof(InventoryItem.noteID))]
    [PXUIField(Visible = false)]
    public virtual Guid? InventoryItem_NoteID { get; set; }
    public abstract class inventoryItem_NoteID : PX.Data.BQL.BqlGuid.Field<inventoryItem_NoteID> { }
}
  • 调整自定义PXAddAttributeColumns特性,指定属性宿主的NoteID字段为新增的扩展字段,替换默认的InventoryItem.NoteID绑定逻辑
// 原特性声明参考
// [PXAddAttributeColumns(typeof(InventoryItem), ...)]
// 修改后指定扩展字段作为NoteID来源
[PXAddAttributeColumns(typeof(InventoryItem), typeof(SOSiteStatusSelectedExt.inventoryItem_NoteID), ...)]
  • 修改销售订单库存查询对应的数据视图BQL,左连InventoryItem表确保关联字段存在于查询上下文
    找到SOInquiry业务逻辑类中SOSiteStatusSelected对应的数据视图,添加LeftJoin<InventoryItem, On<InventoryItem.inventoryID, Equal<SOSiteStatusSelected.inventoryID>>>到BQL语句中即可。

验证步骤

  • 重启Acumatica实例,打开销售订单库存查询页面,确认自定义属性列正常展示
  • 为属性列添加过滤条件,验证过滤功能正常无报错
  • 保存自定义过滤器,重新加载过滤器验证功能正常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 12:39:02