AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX Blogs
DAX
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.08.2019, 15:29   #1  
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))),
                );
        }
    }
Старый 12.08.2019, 15:35   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от raz Посмотреть сообщение
X++:
        qbds1.addSelectionField(fieldNum(GeneralJournalAccountEntry, TransactionCurrencyAmount), SelectionField::Sum);
группировка по валюте?
__________________
полезное на axForum, github, vk, coub.
Старый 12.08.2019, 16:38   #3  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,490 / 1060 (38) ++++++++
Регистрация: 22.07.2003
Адрес: МО
Цитата:
Сообщение от mazzy Посмотреть сообщение
группировка по валюте?
Это был тестовый Job, что бы поверить, рабочий вариант не такой.
Старый 12.08.2019, 16:44   #4  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
672 / 512 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
Цитата:
Сообщение от raz Посмотреть сообщение
Это был тестовый Job, что бы поверить, рабочий вариант не такой.
мой-то вариант чем не рабочий?
__________________
Felix nihil admirari
Старый 12.08.2019, 15:40   #5  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от raz Посмотреть сообщение
X++:
        qbds3 = qbds1.addDataSource(tableNum(DimensionAttributeValueCombination));
....
        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)));
Я правильно понимаю, что сейчас есть таблица, устроенная подобно InventDim, в которой каждое значение аналитики находится в своей колонке. а в GeneralJournalAccountEntry указывается идентификатор, подобный InventDim?
__________________
полезное на axForum, github, vk, coub.
Старый 12.08.2019, 16:41   #6  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
672 / 512 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
Цитата:
Сообщение от mazzy Посмотреть сообщение
Я правильно понимаю, что сейчас есть таблица, устроенная подобно InventDim, в которой каждое значение аналитики находится в своей колонке. а в GeneralJournalAccountEntry указывается идентификатор, подобный InventDim?
ага. на-ка вот, насладись красотой!

Нажмите на изображение для увеличения
Название: DimensionAttributeValueCombination.png
Просмотров: 121
Размер:	95.6 Кб
ID:	12365

открываешь такой это чудо-юдо в бровзере, а там - хоба-на!

Нажмите на изображение для увеличения
Название: DimensionAttribute2.png
Просмотров: 130
Размер:	74.9 Кб
ID:	12366

круче, чем у копперфильда, разрезающего амаяка акопяна!

а поиск идёт по имени столбца

X++:
/// <summary>
    /// Gets the Value fieldId of the <c>DimensionAttributeValueCombination</c> table for a <c>DimensionAttribute</c> name.
    /// </summary>
    /// <param name = "_dimensionAttributeName">The name of the <c>DimensionAttribute</c>.</param>
    /// <returns>The Id of the Value field.</returns>
    public static FieldId getDimensionValueFieldId(Name _dimensionAttributeName)
    {
        container cachedResult = DimensionCache::getValue(DimensionCacheScope::DimensionKeyValueColumn, [DimensionMetadataConstants::DimensionCombinationValueColumn, _dimensionAttributeName]);

        if (cachedResult == conNull())
        {
            DimensionAttribute dimensionAttribute = DimensionAttribute::findByName(_dimensionAttributeName);

            if (!dimensionAttribute)
            {
                throw error(Error::wrongUseOfFunction(funcName()));
            }

            if (dimensionAttribute.getStatus() == DimensionAttributeStatus::Inactive)
            {
                throw error("@Dimension:DimensionAttributeInactive");
            }

            cachedResult = [fieldName2id(tableNum(DimensionAttributeValueCombination), dimensionAttribute.DimensionValueColumnName)];
            DimensionCache::insertValue(DimensionCacheScope::DimensionKeyValueColumn, [DimensionMetadataConstants::DimensionCombinationValueColumn, _dimensionAttributeName], cachedResult);
        }

        FieldId dimensionAttributeFieldId = conpeek(cachedResult, 1);

        return dimensionAttributeFieldId;
    }
Название: DimensionAttribute.png
Просмотров: 916

Размер: 54.0 Кб
__________________
Felix nihil admirari
За это сообщение автора поблагодарили: mazzy (2).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
How to lookup and set a new value for Financial dimension Blog bot DAX Blogs 0 03.10.2015 02:35
emeadaxsupport: How to change the Storage dimension group on items with existing Inventory transactions Blog bot DAX Blogs 0 01.10.2015 21:11
NAV Team: Filtering on Dimension Values Blog bot Dynamics CRM: Blogs 0 12.06.2012 18:02
Khue Trinh: Setting up a link between a financial dimension and the site inventory dimension Blog bot DAX Blogs 0 27.09.2010 13:05
wiki.dynamicsbook: Changes Made in Navision Attain 3.60 Blog bot Dynamics CRM: Blogs 0 02.09.2008 13:23

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 06:32.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.