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

Acumatica 2024 R1:GL403000表单添加子账户描述列失败求助

解决Acumatica 2024 R1 GL403000表单添加子账户描述列无数据问题

问题原因

你当前使用PXDBScalar直接关联Sub表获取描述,但GLHistoryEnquiryResult是查询结果类(非物理数据库表),PXDBScalar依赖数据库表的直接关联映射,无法对这类临时结果集生效,导致列无数据。

正确实现步骤

1. 调整DAC扩展代码

移除PXDBScalar,改用非数据库绑定字段标记,代码如下:

public class GLHistoryEnquiryResultExt : PXCacheExtension<GLHistoryEnquiryResult>
{
    [PXString(60, IsUnicode = true)]
    [PXUIField(DisplayName = "子账户描述")]
    [PXUnboundDefault]
    public virtual string UsrSubaccountDescription { get; set; }
    public abstract class usrSubaccountDescription : PX.Data.BQL.BqlString.Field<usrSubaccountDescription> { }
}

2. 扩展表单图填充数据

通过扩展AccountHistoryBySubEnq图的行选择事件,在数据加载时从Sub表查询描述并赋值:

public class AccountHistoryBySubEnqExt : PXGraphExtension<AccountHistoryBySubEnq>
{
    protected void _(Events.RowSelected<GLHistoryEnquiryResult> e)
    {
        GLHistoryEnquiryResult row = e.Row;
        if (row == null) return;

        Sub sub = PXSelect<Sub, Where<Sub.subCD, Equal<Required<Sub.subCD>>>>.Select(Base, row.SubCD);
        if (sub != null)
        {
            GLHistoryEnquiryResultExt ext = row.GetExtension<GLHistoryEnquiryResultExt>();
            ext.UsrSubaccountDescription = sub.Description;
        }
    }
}

3. 配置ASPX添加列

在GL403000的ASPX文件中,找到对应数据网格(PXGrid),添加如下列配置:

<px:PXGridColumn DataField="UsrSubaccountDescription" Width="200" />

核心说明

  • GLHistoryEnquiryResult是查询生成的临时结果集,并非物理数据库表,因此不能依赖数据库映射类属性获取关联数据,必须通过图的事件逻辑手动填充。
  • RowSelected事件会在每行数据加载时触发,能确保子账户描述与当前行数据同步。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 06:53:15