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

如何从VendorBalanceSummary DAC获取余额值并在Checks and Payments界面展示

解决"Invalid Object Name VendorBalanceSummary"错误的步骤

1. 确认DAC引用与命名空间

确保代码中正确引入VendorBalanceSummary所在的命名空间,该DAC属于应付模块核心类:

using PX.Objects.AP;

未正确引用会导致编译器无法识别DAC,进而在数据库查询阶段触发对象不存在的错误。

2. 不要直接把选择器绑定到VendorBalanceSummary

VendorBalanceSummary是基于APVendorBalance视图构建的汇总型DAC,并非物理数据表,不适合直接作为选择器数据源。推荐两种正确获取余额的方式:

  • 字段更新事件中查询余额:在Checks and Payments(APCheck)的图中,通过VendorID直接查询余额并赋值到界面字段:
public virtual void APCheck_VendorID_FieldUpdated(PXCache cache, PXFieldUpdatedEventArgs e)
{
    APCheck row = e.Row as APCheck;
    if (row?.VendorID == null) return;

    VendorBalanceSummary balance = VendorBalanceSummary.PK.Find(Base, row.VendorID);
    if (balance != null)
    {
        // 将余额赋值到自定义字段(需提前在APCheckExt中定义usrVendorBalance)
        cache.SetValueExt<APCheckExt.usrVendorBalance>(row, balance.CuryBalance);
    }
}
  • 选择器关联展示余额:将选择器绑定到Vendor主DAC,通过关联查询在选择器中附带余额字段:
[PXSelector(
    typeof(Search<Vendor.bAccountID>),
    typeof(Vendor.acctCD),
    typeof(Vendor.acctName),
    typeof(VendorBalanceSummary.curyBalance),
    SubstituteKey = typeof(Vendor.acctCD),
    DescriptionField = typeof(Vendor.acctName)
)]
[PXUIField(DisplayName = "Vendor")]
public virtual int? VendorID { get; set; }

3. 验证底层视图存在

检查Acumatica数据库中是否存在APVendorBalance视图(VendorBalanceSummary对应的底层数据库对象)。若视图缺失,需重新发布Acumatica系统的数据库脚本,或通过实例维护工具修复数据库结构。

4. 清除缓存并重新发布

  • 进入系统Maintenance页面,执行Clear Cache操作清除应用程序缓存
  • 重新发布自定义项目,确保DAC元数据正确同步到数据库

5. 检查权限配置

确认当前操作的用户角色拥有APVendorBalance视图的Read权限,可在Security Roles的权限设置中添加对应视图的访问权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 10:18:30