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

如何在不同BLC的另一页面显示自定义字段?(以Brand字段为例)

在SOOrderEntry销售订单明细页面展示InventoryItem的自定义Brand字段

嘿,这个需求我之前处理过好多次,其实按照Acumatica的自定义规范,分几步就能轻松实现,咱们一步步来:

1. 确认自定义Brand字段的基础信息

首先得确认你在InventoryItemMaint里创建的Brand字段具体细节:

  • 字段的系统名称(比如UsrBrand,Acumatica自定义字段默认会加Usr前缀)
  • 确认这个字段是存储在InventoryItem DAC对应的数据库表中(一般自定义字段都会默认存在)

2. 扩展SOLine DAC,关联InventoryItem的Brand字段

销售订单明细对应的核心DAC是SOLine,我们需要在它的扩展类中添加一个字段,用来关联并展示InventoryItem里的Brand值。创建以下DAC扩展代码:

using PX.Data;
using PX.Objects.IN;
using PX.Objects.SO;

public class SOLineExt : PXCacheExtension<SOLine>
{
    #region UsrBrand
    // 通过InventoryID关联InventoryItem的自定义Brand字段
    [PXDBScalar(typeof(Search<InventoryItem.usrBrand, 
        Where<InventoryItem.inventoryID, Equal<SOLine.inventoryID>>>))]
    [PXUIField(DisplayName = "Brand", Enabled = false)] // 设置为只读,因为值从库存项目拉取
    public virtual string UsrBrand { get; set; }
    public abstract class usrBrand : PX.Data.BQL.BqlString.Field<usrBrand> { }
    #endregion
}

3. 在SOOrderEntry页面的明细网格中添加Brand列

接下来把这个字段加到销售订单明细的页面上,通过自定义项目操作:

  • 打开你的Acumatica自定义项目,添加SOOrderEntry页面(对应页面ID:SO301000)
  • 找到页面里的Transactions明细网格(就是显示销售订单行的表格)
  • 点击网格的「编辑」按钮,在列列表中点击「添加」
  • 在弹出的列属性窗口中:
    • 「数据字段」选择刚才创建的SOLineExt.UsrBrand
    • 设置「显示名称」为「Brand」,调整合适的宽度
    • 可以勾选「只读」确保字段不能在订单明细里修改(如果不需要修改的话)
  • 保存自定义项目并发布

4. 验证效果

发布完成后,打开任意销售订单进入明细页面,就能看到新增的Brand列自动显示对应库存项目的品牌值了。如果需要让这个字段支持筛选或者排序,你可以在DAC扩展的字段上添加PXFilterable属性,或者在页面网格的列属性里开启筛选功能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:37:35