【发布时间】:2018-02-21 19:26:23
【问题描述】:
我试图弄清楚如何通过 SQL 从 Axapta 2012 表中获取我的主要账户的当前余额。
有人知道怎么做吗?
【问题讨论】:
标签: sql axapta dynamics-ax-2012
我试图弄清楚如何通过 SQL 从 Axapta 2012 表中获取我的主要账户的当前余额。
有人知道怎么做吗?
【问题讨论】:
标签: sql axapta dynamics-ax-2012
表MainAccount 的方法getBalance 似乎是一个不错的起点。不幸的是,此方法使用类LedgerBalanceMainAccountAmounts 来计算余额。我认为在 SQL 中重新创建该类的逻辑即使不是不可能也是非常困难的。
根据您的要求,一种替代方法可能是在 x++ 中编写一个函数,将 getBalance 方法的结果写入新表,然后您可以使用 SQL 查询该新表。
但我建议您研究开箱即用的选项来分析主要客户数据,例如管理报告或 BI。
【讨论】:
谢谢。但我已经找到了解决方案。
这是我在另一个论坛上的解决方案。
https://community.dynamics.com/ax/f/33/p/268863/762367#762367
基本上我想要的是具有通过->“传统财务报告”->“行定义”->定义的结构的主账户ID “结构设计师”。
使用这些帐户 ID,我进入 [DIMENSIONATTRIBUTEVALUECOMBINATION] 然后进入 [GENERALJOURNALACCOUNTENTRY] 并进入 [GENERALJOURNALENTRY] 以获取 指定时间范围内的“交易”。
然后我将这些交易相加得到账户余额。
WITH mainaccs(recid, PARENTRECID,[Name]) AS (
SELECT RecId,
PARENTRECID,
[Name]
FROM [LEDGERROWDEFLINE]
where PARENTRECID = 0
UNION ALL
SELECT cur.RecId,
cur.PARENTRECID,
cur.[Name]
FROM [LEDGERROWDEFLINE] cur, mainaccs
WHERE cur.PARENTRECID = mainaccs.recid
)
SELECT
ma.MAINACCOUNTID,
Sum(gjae.TRANSACTIONCURRENCYAMOUNT) amount
FROM mainaccs maccs
inner join [MAINACCOUNT] ma on ma.MainaccountId = maccs.Name
inner join [DIMENSIONATTRIBUTEVALUECOMBINATION] davc on ma.RECID = davc.MAINACCOUNT
inner join [GENERALJOURNALACCOUNTENTRY] gjae on gjae.LEDGERACCOUNT = davc.DISPLAYVALUE
inner join [GENERALJOURNALENTRY] gje on gje.RecId = gjae.GENERALJOURNALENTRY
where YEAR(gje.ACCOUNTINGDATE) = 2017
group by ma.MAINACCOUNTID
order by ma.MAINACCOUNTID
【讨论】: