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

Non-Stock Items屏幕子账户选择器用户字段配置咨询

配置和标准SubAccount字段逻辑一致的自定义子账户选择器

我来帮你理清Acumatica里SubAccount属性的工作机制,以及怎么快速配置出和Non-Stock Items屏幕标准字段完全一致的自定义子账户选择器。

先搞懂SubAccount属性的核心作用

你之前用PXSelector配置Account字段没问题,但子账户和主账户是强关联的,Acumatica专门提供了SubAccount这个专用属性——它封装了标准子账户选择器的所有内置逻辑:自动关联当前主账户、匹配公司分支、过滤用户有权限访问的子账户、验证子账户有效性,甚至连选择器的显示格式(子账户ID+描述)都帮你搞定了,比手动写PXSelector省超多代码。

一步步配置自定义子账户字段

1. 在DAC扩展中定义字段

假设你是在InventoryItem的扩展DAC里加自定义字段,直接用SubAccount属性即可,核心是要指定关联的主账户字段(也就是Non-Stock Items里标准Account字段对应的InventoryItem.accountID):

public class InventoryItemExtension : PXCacheExtension<PX.Objects.IN.InventoryItem>
{
    #region UsrCustomSubAccountID
    // 第一个参数绑定主账户字段,自动过滤关联的子账户
    [SubAccount(typeof(InventoryItem.accountID), 
               DisplayName = "自定义子账户", 
               DescriptionField = typeof(SubAccount.description))]
    public virtual int? UsrCustomSubAccountID { get; set; }
    public abstract class usrCustomSubAccountID : PX.Data.BQL.BqlInt.Field<usrCustomSubAccountID> { }
    #endregion
}

2. 在ASPX页面添加选择器控件

不需要额外复杂配置,直接绑定到自定义字段就行,SubAccount属性已经内置了选择器的所有行为:

<px:PXLayoutRule runat="server" StartRow="True" />
<px:PXSelector ID="edUsrCustomSubAccountID" runat="server" DataField="UsrCustomSubAccountID" />

和你之前的Account字段配置对比

你用PXSelector配置Account字段是正确的,因为Account本身是独立的主数据;但子账户必须依赖主账户,SubAccount属性帮你自动处理了:

  • 当主账户切换时,子账户选择器自动过滤出仅关联该主账户的子账户
  • 自动匹配当前登录的公司分支,只显示该分支下的子账户
  • 自动应用用户的子账户权限,看不到无权访问的子账户
  • 验证子账户是否有效(比如是否被停用)

如果用普通PXSelector手动实现这些逻辑,你需要写大量的Where条件、权限检查代码,而SubAccount属性一行就搞定了。

注意事项

  • 确保你的扩展DAC正确引用了InventoryItem的accountID字段,这样选择器才能正确关联主账户
  • 如果你的自定义字段需要绑定其他主账户(比如不是InventoryItem的accountID),只需要修改SubAccount属性的第一个参数即可
  • 测试时可以切换不同的主账户,看看子账户选择器是否自动过滤,这是验证逻辑是否和标准字段一致的关键

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:45:19