【问题标题】:Make a Field Mandatory on the Graph Level在图表级别设置必填字段
【发布时间】:2018-08-28 11:59:34
【问题描述】:

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

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

我当前的问题是,我需要一种将 Customer Locations 与旧系统中的客户位置相关联的方法。添加字段DCL_ID 很容易按照To Add a Custom Data Field 文档完成。我通过设置使该列成为必需的

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

到数据访问类as outlined here 的属性部分。然后我使用布局编辑器将该字段添加到我的表单中。

此时一切似乎都很好。该字段在 UI 中显示一个星号,并验证是否提供了一个值。然后我意识到 Customer Locations 并不是唯一使用CR.Location 的地方——Account Locations 也使用它。经过一番挖掘,我发现 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 级别定义要求时那样。

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

设置:

【问题讨论】:

  • 可能是字段名称中的下划线导致附加的缓存无法正确注册图形级别属性更改?尝试使用不带下划线的字段名称。文档提到应该避免这种情况,如下所示:help.acumatica.com/Wiki/(W(2))/…
  • @Brendan 解决了它!如果您可以将其发布为答案,我会接受。
  • 感谢您的确认。在其他方面,这可能会导致现在无法捕捉到的问题。

标签: attributes field acumatica dac


【解决方案1】:

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

Acumatica 文档提到应该避免这种情况,如下所示: Database Design Guidelines

表和列命名约定下找到:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-02
    • 1970-01-01
    • 1970-01-01
    • 2016-06-07
    • 1970-01-01
    • 2018-01-06
    • 1970-01-01
    • 2019-09-30
    相关资源
    最近更新 更多