首页 文章

位置屏幕和客户屏幕上的相同自定义字段

提问于
浏览
0

我正在尝试将Acumatica 2017 R2中的相同自定义字段添加到 both 位置屏幕(AR303020)和客户(AR303000)屏幕 . 在"Customers > Delivery Settings"标签上找到了其他原生字段,它们展示了我正在尝试匹配的行为 . (示例:税务登记ID,税区等)可以从“客户”屏幕或“位置”屏幕查看/编辑这些字段 .

使用Customization Project浏览器,我可以轻松地将该字段添加到Location屏幕 .

CR.Location definition

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

但我不确定如何为Customers屏幕正确定义相同的字段 . 默认情况下,自定义浏览器会向CR.Address DAC添加自定义字段 . 我尝试使用此定义创建一个新的CR.Address字段:

CR.Address definition

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

如何在这两个屏幕上自定义字段一起工作?从“客户”屏幕编辑默认位置时,应从“位置”屏幕查看位置时更改值,反之亦然 .

1 回答

  • 0

    首先,您应该考虑DAC位置和地址的声明:

    地点:

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

    地址:

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

    从声明中可以看出,它们都实现了IBqlTable,因此它意味着位置和地址在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扩展,或者作为另一个选项,您可以创建表证书日期,其中将认证日期作为列之一,并且在两个扩展中都具有ID用于CertificationDates作为外键 .

相关问题