Показать сообщение отдельно
Старый 12.08.2019, 15:29   #9  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,490 / 1060 (38) ++++++++
Регистрация: 22.07.2003
Адрес: МО
https://community.dynamics.com/ax/f/...ensions-in-ax7

X++:
    private void test()
    {
        GeneralJournalAccountEntry          generalJournalAccountEntry;
        GeneralJournalEntry                 generalJournalEntry;
        DimensionAttributeValueCombination  dimensionAttributeValueCombination;

        Query                               query = new Query();
        QueryRun                            queryRun;
        QueryBuildDataSource                qbds1, qbds2, qbds3;

        str                                 strData;
        
        qbds1 = query.addDataSource(tableNum(GeneralJournalAccountEntry));
        qbds1.addSelectionField(fieldNum(GeneralJournalAccountEntry, TransactionCurrencyAmount), SelectionField::Sum);
        qbds1.addSelectionField(fieldNum(GeneralJournalAccountEntry, AccountingCurrencyAmount), SelectionField::Sum);
        qbds1.addGroupByField(fieldNum(GeneralJournalAccountEntry, TransactionCurrencyCode));

        qbds2 = qbds1.addDataSource(tableNum(GeneralJournalEntry));
        qbds2.relations(false);
        qbds2.addLink(fieldNum(GeneralJournalAccountEntry, GeneralJournalEntry), fieldNum(GeneralJournalEntry, RecId));
        qbds2.fetchMode(QueryFetchMode::One2One);
        qbds2.addGroupByField(fieldNum(GeneralJournalEntry, AccountingDate));
        qbds2.addGroupByField(fieldNum(GeneralJournalEntry, SubledgerVoucherDataAreaId));

        qbds3 = qbds1.addDataSource(tableNum(DimensionAttributeValueCombination));
        qbds3.relations(false);
        qbds3.addLink(fieldNum(GeneralJournalAccountEntry, LedgerDimension), fieldNum(DimensionAttributeValueCombination, RecId));
        qbds3.fetchMode(QueryFetchMode::One2One);
        qbds3.addGroupByField(fieldName2Id(tableNum(DimensionAttributeValueCombination), identifierStr(MainAccountValue)));
        qbds3.addGroupByField(fieldName2Id(tableNum(DimensionAttributeValueCombination), identifierStr(BusinessUnitValue)));
        qbds3.addGroupByField(fieldName2Id(tableNum(DimensionAttributeValueCombination), identifierStr(LegalEntityValue)));
        qbds3.addGroupByField(fieldName2Id(tableNum(DimensionAttributeValueCombination), identifierStr(DepartmentValue)));

        queryRun = new QueryRun(query);

        while (queryRun.next())
        {
            generalJournalAccountEntry         = queryRun.get(tableNum(GeneralJournalAccountEntry));
            generalJournalEntry                = queryRun.get(tableNum(GeneralJournalEntry));
            dimensionAttributeValueCombination = queryRun.get(tableNum(DimensionAttributeValueCombination));

            strData = strFmt('%1;%2;%3;%4;%5;%6;%7;%8;%9;', 
                generalJournalAccountEntry.TransactionCurrencyAmount,
                generalJournalAccountEntry.AccountingCurrencyAmount,
                generalJournalAccountEntry.TransactionCurrencyCode,
                generalJournalEntry.AccountingDate,
                generalJournalEntry.SubledgerVoucherDataAreaId,
                dimensionAttributeValueCombination.(fieldName2Id(tableNum(DimensionAttributeValueCombination), identifierStr(MainAccountValue))),
                dimensionAttributeValueCombination.(fieldName2Id(tableNum(DimensionAttributeValueCombination), identifierStr(BusinessUnitValue))),
                dimensionAttributeValueCombination.(fieldName2Id(tableNum(DimensionAttributeValueCombination), identifierStr(LegalEntityValue))),
                dimensionAttributeValueCombination.(fieldName2Id(tableNum(DimensionAttributeValueCombination), identifierStr(DepartmentValue))),
                );
        }
    }