【问题标题】:Get all addresses on the system Dynamics AX 2012获取系统 Dynamics AX 2012 上的所有地址
【发布时间】:2016-04-29 00:59:36
【问题描述】:

问题:

我想知道如何在查询中获取系统上的所有地址,包括(客户、供应商、银行和税务机关),并将其放在带有列的视图中(name地址)。 所以它会是当事方和非当事方实体。

我尝试做的事情:

我使用表格概念为各方找出问题:

LogisticsPostalAddress - 表包含系统中可能与各种实体相关联的地址。 是关于地址的主要信息在哪里,其余的似乎是这些地址的额外描述。

CustTable 和 VendTable 具有到 DirPartyTable 的 FK。 BankAccountTableTaxAuthorityAddress 直接与 LogisticsLocation 有关系,而 LogisticsPostalAddress 则在关系处Location_FK。

现在的问题是如何构建查询,从客户、银行账户、供应商和税务机关获取地址并将其放在具有(名称、地址)对的视图中?

已编辑

我找到了一种使用方法获取所有地址的方法,但不使用查询,效率不是很高,但对于我想要的来说已经足够了:

1) 创建表:AllAddresses 例如: 包含字段:姓名、地址

2) 创建工作:

static void GettingAllAddresses(Args _args)
{
    CustTable custTable;
    VendTable vendTable;
    TaxAuthorityAddress taxAuthorityAddress;

    LogisticsPostalAddress logisticsPostalAddress;
    AllAddresses allAddresses;

    ;

    while select * from custTable
    {
        allAddresses.Address = custTable.address();
        allAddresses.Name = custTable.name();
        allAddresses.CustAccount = custTable.AccountNum;
        allAddresses.doInsert();
    }



    //Getting all vendors
    while select * from vendTable
    {

        allAddresses.Address = vendTable.address();
        allAddresses.Name = vendTable.name();
        allAddresses.doInsert();
    }

    //Getting all tax authorities addresses
    while select * from taxAuthorityAddress
    {


        allAddresses.Address = TaxAuthorityAddress::address(taxAuthorityAddress.TaxAuthority);
        allAddresses.Name = taxAuthorityAddress.Name;
        allAddresses.doInsert();
    }

    //Getting all bank addresses
    while select * from bankAccountTable
    {
        logisticsPostalAddress = LogisticsLocationEntity::location2PostalAddress(bankAccountTable.Location);
        allAddresses.Address = logisticsPostalAddress.Address;
        allAddresses.Name = bankAccountTable.Name;
        allAddresses.doInsert();
    }
}

【问题讨论】:

  • 如果我是你,我不会尝试构建单个查询来获取所有数据,而是会构建一个临时表,该表将由对数据库执行多个查询的批处理作业填充。跨度>

标签: axapta x++ dynamics-ax-2012


【解决方案1】:

查看LogisticsEntityPostalAddressView 视图是如何构建的,它可能已经提供了您需要的信息。如果 LogisticsLocation 表中的 Description 字段不够好,而您确实需要表 BankAccountTable 中的 Name 字段,则需要构建类似的视图。

您可以看到该视图使用了视图LogisticsEntityLocationView,它有一个从多个表中提取数据的联合查询。您可以构建一个类似的视图来从BankAccountTableDirPartyTableTaxAuthorityAddress 中提取Name 字段。

【讨论】:

    【解决方案2】:

    从您的数据库图表中可以看出,全球通讯簿的关系非常复杂(而且在许多地方非常不直观)。您似乎没有解决的一件事是您获得的 LogisticsPostalAddress 是否处于活动状态(由 ValidFrom 和 ValidTo 日期确定)。 AX 的代码保留了 LogisticsPostalAddress 中正在更改的地址的当前状态,只需在更改提交前将 ValidTo 设置为 2 秒,并创建一个新的 LogisticsPostalAddress 记录,并将 ValidTo 设置为提交日期,因此它将处于活动状态。如果您没有对地址进行很多更改,那么您可能不会有太大问题,但如果有很多更改,您可能会得到很多不需要的地址记录。 http://hyperdaptive.com/2016/04/320/ 这里有一篇文章,其中包含一些可能会有所帮助的细节——它还有一些 X++ 和 SQL 代码,如果您碰巧仍在从事此工作,它们可能会非常有帮助。祝你好运。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-22
      • 2019-07-09
      • 2015-01-29
      相关资源
      最近更新 更多