0

Acumatica 的新手在这里。我已经对我们的系统进行了少量定制,现在正潜入添加定制数据字段。

我的目标是将 Acumatica 中的硬件发货信息同步到我们的旧(过时和专有)硬件管理系统中,因为我们暂时需要继续使用该系统进行保修计算。我计划最终将其构建到 Acumatica 中。

我当前的问题是,我需要一种将客户位置与旧系统中的客户位置相关联的方法。添加字段DCL_ID很容易按照添加自定义数据字段文档完成。我通过设置使该列成为必需

[PXDefault]
[PXUIField(DisplayName="DCL Account ID", Required = true)]

到这里概述的数据访问类的属性部分。然后我使用Layout Editor将该字段添加到我的表单中。

在这一点上,一切似乎都很好。该字段在 UI 中显示一个星号,并验证是否提供了一个值。然后我意识到Customer Locations不是唯一使用的地方- Account LocationsCR.Location也使用它。进行一些挖掘后,我发现Account Locations可以包含比Customer Locations更多的帐户类型。我只需要Customer Locations需要此属性。因此,我选择使用To Make a Field Mandatory on the Graph Level

这是我的CustomerLocationMaint代码:

using System;
using PX.Data;
using PX.Objects.CR;
using System.Collections.Generic;
using PX.Objects;
using PX.Objects.AR;

namespace PX.Objects.AR
{
  public class CustomerLocationMaint_Extension : PXGraphExtension<CustomerLocationMaint>
  {
    #region Event Handlers

    [PXDefault]
    [PXCustomizeBaseAttribute(typeof(PXUIFieldAttribute), "Required", true)]
    protected virtual void SelectedCustomerLocation_UsrDCL_ID_CacheAttached(PXCache cache)
    {

    }

    #endregion
  }
}

保存并发布自定义项后,该字段不再作为必填字段,就像我在 DAC 级别定义要求时那样。

在此处输入图像描述

那么,我做错了什么?我已经多次阅读并重新阅读文档,但找不到我的错误。

设置: CR.位置

布局编辑器:AR303020

客户位置维护

4

1 回答 1

2

我的想法是字段名称中的下划线导致附加的缓存无法正确注册图形级别属性更改。使用不带下划线的字段名称是表和列的首选命名约定。

Acumatica 文档提到应该避免这种情况,如下所示: 数据库设计指南

在表和列命名约定下找到:

不要在表名或列名中使用下划线符号 (_),因为它是 Acumatica Framework 中的保留符号。例如,CompanyType 是一个有效的列名,而 Company_Type 是无效的。

于 2018-03-19T21:05:05.250 回答