【问题标题】:Same custom field on both Location screen and Customer screen位置屏幕和客户屏幕上的相同自定义字段
【发布时间】:2019-01-31 22:24:16
【问题描述】:

我正在尝试将 Acumatica 2017 R2 中的相同自定义字段添加到 位置屏幕 (AR303020) 和客户 (AR303000) 屏幕。 “客户 > 交付设置”选项卡上还有其他本机字段,它们展示了我试图匹配的行为。 (例如:税务登记 ID、税务区等)可以从客户屏幕或位置屏幕查看/编辑这些字段。

使用自定义项目浏览器,我可以轻松地将字段添加到位置屏幕。

接下来,我想在“客户 > 交付设置选项卡 > 默认位置设置组”中添加一个新的自定义字段,该字段使用与添加到“位置”屏幕的自定义字段相同的 DAC。

但我不确定如何为客户屏幕正确定义相同的字段。默认情况下,自定义浏览器将自定义字段添加到 CR.Address DAC。我试过用这个定义创建一个新的 CR.Address 字段:

发布期间没有错误,但 Acumatica 不会加载客户或位置屏幕。错误是“无效的列名'UsrCertificateDate”。我故意没有将 UsrCertificateDate 列添加到 CRAddress 数据库表中,因为该列之前已添加到 Location 表中。如果只需要一个,我不希望维护两个数据库字段。

如何使这两个屏幕上的自定义字段协同工作?从客户屏幕编辑默认位置应该会在从位置屏幕查看位置时更改值,反之亦然。

【问题讨论】:

    标签: acumatica


    【解决方案1】:

    首先,您应该考虑 DAC Location 和 Address 的声明:

    地点:

    [Serializable]
    public class Location : IBqlTable, IPaymentTypeDetailMaster, ILocation
    {
      .
      .
    

    地址:

    [Serializable]
    public class Address : IBqlTable, IAddressBase, IValidatedAddress, IPXSelectable
    {   
       .
       .
       .
    

    从声明中可以看出,它们都实现了 IBqlTable,因此这意味着 Location 和 Address 在 Acumatica 中作为独立的实体存在。 在您的数据库中跟踪 sql 将向您显示两个表都有自己的生命:

    select top 10 * from Location
    
    select top 10 * from Address
    

    您将看到不同的输出。这也意味着您不能对同一张表使用一个 DAC 扩展,但您需要扩展。此外,您还需要为 Location 和 Address 表添加两列。

    还有一点需要注意,DAC 是 CR.Address 和 CRAddress 之间的区别。

    看看 CRAddress 声明:

    [Serializable]
    public class CRAddress : IBqlTable, IAddress, IAddressBase, IValidatedAddress
    {
        .
        .
        .
    

    从声明中可以看出,实体 CRAddress 是第三个表。 如果假设所有这些,您将两次将同一列添加到位置和地址 DAC 扩展,或者作为另一种选择,您可以创建表 CertificationDates,它将认证日期作为列之一,并且在两个扩展中都有 ID将 CertificationDates 作为外键。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-02
      • 2010-12-18
      • 1970-01-01
      • 2018-10-06
      • 1970-01-01
      • 2018-03-11
      • 2018-11-29
      • 1970-01-01
      相关资源
      最近更新 更多