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

如何在销售订单BLC中获取客户自定义字段Inner Branch ID的值?

销售订单获取客户自定义字段的解决方案

嘿,刚好我在Acumatica开发中处理过类似的自定义字段场景,来帮你理清这两个问题:

1. 销售订单界面能不能获取客户的自定义字段?

当然可以!在Acumatica里,只要你已经在客户实体上创建了Inner Branch ID这个自定义字段,销售订单界面完全能关联显示它。主要有两种实现方式:

  • 界面配置法(不用写代码):打开销售订单页面的设计器,找到你想放置这个字段的位置,添加一个新字段。然后在字段属性里,把DataField设为客户DAC(比如Customer或BAccount)的自定义字段名,再把DataSource指定为当前订单关联的客户数据源(比如Current<SOOrder>.Customer)。这样只要你选中客户,这个字段就会自动从客户记录里拉取Inner Branch ID的值了。
  • 代码扩展法:如果需要更灵活的逻辑(比如字段联动、权限控制),可以扩展SOOrderEntry BLC,在客户选择完成后,自动把Inner Branch ID同步到销售订单的某个字段(可以是销售订单的自定义字段,也可以只是纯显示用)。

2. 如何在销售订单BLC中获取Inner Branch ID?需要用PXSelect吗?

这个得分情况来看,不是必须用PXSelect,要看你的需求:

情况一:获取当前订单关联客户的Inner Branch ID

如果是当前销售订单已经选中了客户,完全不用额外查库!SOOrderEntry BLC里已经内置了客户视图Base.Customer,当你选好客户后,Base.Customer.Current就是对应的客户记录。假设你的自定义字段是扩展在Customer DAC上的(字段名一般是UsrInnerBranchID,Acumatica自定义字段默认带Usr前缀),代码可以这么写:

// 先拿到当前订单的客户ID
int? currentCustomerID = Base.Document.Current?.CustomerID;
if (currentCustomerID != null)
{
    // 直接从内置的客户视图取当前记录
    Customer currentCustomer = Base.Customer.Current;
    if (currentCustomer != null)
    {
        // 获取扩展字段的值
        string innerBranchID = currentCustomer.GetExtension<CustomerExt>().UsrInnerBranchID;
        // 这里就可以用这个值做后续处理啦
    }
}

情况二:查询任意特定客户的Inner Branch ID

如果你需要查询某个指定客户ID的这个字段值,那确实可以用PXSelect或者更高效的PXSelectReadonly/PXSelectSingle。举个例子:

int targetCustomerID = 1001; // 替换成你要查询的客户ID
// 用PXSelectSingle直接取客户记录
Customer targetCustomer = PXSelectSingle<Customer, Where<Customer.bAccountID, Equal<Required<Customer.bAccountID>>>>.Select(Base, targetCustomerID);
if (targetCustomer != null)
{
    string innerBranchID = targetCustomer.GetExtension<CustomerExt>().UsrInnerBranchID;
}

或者直接查扩展类:

CustomerExt targetCustomerExt = PXSelectReadonly<CustomerExt, Where<Customer.bAccountID, Equal<Required<Customer.bAccountID>>>>.Select(Base, targetCustomerID);
if (targetCustomerExt != null)
{
    string innerBranchID = targetCustomerExt.UsrInnerBranchID;
}

小提醒

记得确认你的自定义字段是正确扩展在Customer或BAccount DAC上的,扩展类的命名(比如CustomerExt)和字段名要对应上,不然会拿不到值哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:33:01