从Dynamics AX 2012中的purchline获取线的尺寸

时间:2014-04-02 07:35:54

标签: axapta dimensions dynamics-ax-2012

当我创建采购订单并创建与该采购订单关联的采购订单行时,我可以打开该行的行详细信息,然后单击该行的“财务维度”选项卡并选择财务维度与采购订单行关联。

完成此操作后,如果我在SQL Server中检查数据库,我可以在PURCHTABLE中看到我的采购订单的条目,以及相关表PURCHLINE中的相应行,该表使用PURCHID字段将多个PURCHLINE行与一个PURCHTABLE相关联行。

然而 - 虽然在客户端,我可以看到与我的PURCHLINE相关的财务维度,通过查看采购订单屏幕的行详细信息部分,我找不到此信息存储在数据库中的哪个位置将其链接到我的PURCHLINE行。

PURCHLINE表有一个LEDGERDIMENSION字段,[我可以通过查看AOT确定]将它与DIMENSIONATTRIBUTEVALUECOMBINATION中的行相关联,但是在PURCHLINE的所有行中,LEDGERDIMENSION字段设置为0。 PURCHLINE表中的DEFAULTDIMENSION字段具有值,但是它所关联的表(DIMENSIONATTRIBUTEVALUESET)只有一个HASH作为其内容 - 并且与任何其他表没有明显的关系,这将允许我找出它代表的维度。

有没有人知道数据库中存储哪些数据允许Dynamics AX将一组财务维度属性与采购订单行相关联?

2 个答案:

答案 0 :(得分:4)

谢谢你Jan的建议 - 他们让我朝着正确的方向前进。在阅读白皮书后,根据第24页的信息[特别],我能够将以下SQL汇总在一起,该SQL通过单个采购订单行提取给定采购订单的财务维度。它根据采购订单编号提取财务维度。请注意,如果采购订单中有多行,您需要做更多工作才能将行分开 - 但这段代码可以为您提供很多方法:

select
    ddv.DISPLAYVALUE,
    ddv.NAME 
from
    PURCHLINE pl
    inner join DEFAULTDIMENSIONVIEW ddv on (ddv.DEFAULTDIMENSION = pl.DEFAULTDIMENSION )
where
    pl.PURCHID = '<put purchase order number here>'

幸运的是,有一个视图可以帮助您导航财务维度的相当复杂的表结构,因为它们存在于与动态轴安装相关联的SQL服务器数据库中。

要分离给定采购订单中多行的财务维度,以下sql可以完成这项工作:

select
    ddv.DISPLAYVALUE,
    ddv.NAME,
    pl.LINENUMBER 
from
    PURCHLINE pl
    inner join DEFAULTDIMENSIONVIEW ddv on (ddv.DEFAULTDIMENSION = pl.DEFAULTDIMENSION )
where
    pl.PURCHID = '<put purchase order number here>'
order by
    pl.LINENUMBER, ddv.NAME

答案 1 :(得分:1)

使用DefaultDimension字段链接购买行的默认尺寸。 LedgerDimension字段链接帐号,但通常不会设置。

DimensionAttributeValueSet表还有一个RecId字段,这是一个有趣的字段。它与DimensionAttributeValueSetItem表格相关联等更多复杂情况。

要了解有关AX 2012中新维度框架的更多信息,请尝试阅读有关新维度框架的whitepaper