Ich muss das Budget für eine bestimmte Dimension berechnen (AX 2012 R2).Berechnen Budget Balance von Code
Ich führe den folgenden Code funktioniert richtig, aber es dauert eine lange Zeit zu beenden.
Es ist, weil dies alle Haushaltssalden berechnet, die AX hat und nicht nur die, die ich will.
Am Ende, die Variable BudgetTmpBalance
Es hat die Datensätze aller Budgeteinträge.
Da ist etwas, das ich nicht in Betracht ziehe. Wer weiß was ist?
Vielen Dank im Voraus.
Code:
BudgetTransactionLine recBudgetTransactionLine;
DimensionAttributeValueCombination recDimensionAttributeValueCombination;
date FiscalYearStart, FiscalYearEnd;
AccountingDistribution recAccountingDistribution;
Query query = new Query();
QueryBuildDataSource qbds;
QueryBuildDataSource qbdsJoin;
QueryBuildRange qbr;
BudgetCalculateBalance budgetCalculateBalance = new BudgetCalculateBalance();
BudgetTmpBalance budgetTmpBalance;
DimensionDisplayValue pDimensionDisplayValue;
;
pDimensionDisplayValue = "Correct Value";
select * from recDimensionAttributeValueCombination where recDimensionAttributeValueCombination.LedgerDimensionType == LedgerDimensionType::Budget &&
recDimensionAttributeValueCombination.DisplayValue == pDimensionDisplayValue;
FiscalYearStart = str2Date("01/04/" + int2str(year(today())), 123);
FiscalYearEnd = str2Date("31/03/" + int2str(year(today()) + 1), 123);
//Find recId of header that I Want (Works fine)
select BudgetTransactionHeader from recBudgetTransactionLine where recBudgetTransactionLine.LedgerDimension == recDimensionAttributeValueCombination.RecId &&
(recBudgetTransactionLine.Date >= FiscalYearStart && recBudgetTransactionLine.Date <= FiscalYearEnd);
qbds = query.addDataSource(tableNum(BudgetTransactionHeader));
qbr = qbds.addRange(FieldNum(BudgetTransactionHeader, TransactionStatus));
qbr.value(queryValue(1));
qbr = qbds.addRange(FieldNum(BudgetTransactionHeader, RecId));
qbr.value(queryValue(recBudgetTransactionLine.BudgetTransactionHeader));//Header RecId (correct value)
qbdsJoin= qbds.addDataSource(tableNum(BudgetTransactionLine));
qbdsJoin.relations(false);
qbdsJoin.fields().dynamic(NoYes::Yes);
qbdsJoin.addLink(fieldNum(BudgetTransactionHeader, RecId), fieldNum(BudgetTransactionLine, BudgetTransactionHeader));
qbdsJoin.joinMode(JoinMode::InnerJoin);
budgetCalculateBalance.parmDimensionFocus("CTA+UN+CC");
budgetCalculateBalance.parmCalculateLedgerAmounts(NoYes::Yes);
budgetCalculateBalance.parmFiscalCalendarRecId(Ledger::fiscalCalendar());
budgetCalculateBalance.parmStartDate(FiscalYearStart);
budgetCalculateBalance.parmEndDate(FiscalYearEnd);
budgetCalculateBalance.parmIncludeSubModels(NoYes::No);
budgetCalculateBalance.parmIncludeAllBudgetModelsIfNotSpecified(NoYes::No);
budgetCalculateBalance.parmBudgetModelId("TOTAL");
budgetCalculateBalance.parmBudgetType();
budgetCalculateBalance.parmAccumulateAmounts(NoYes::No);
budgetCalculateBalance.parmLedgerCategory(CurrentOperationsTax::Current);
budgetCalculateBalance.parmQuery(query);
budgetTmpBalance = budgetCalculateBalance.calculatePeriodBalances();