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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.11.2012, 22:33   #1  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
AX2012: a way to keep it simple
AX2009:
X++:
static void setDimension(Args _args)
{
    CustTable                       custTable;    
    
    ttsBegin;
    while select forUpdate custTable   
        where custTable.LineOfBusinessId
    {
        custTable.Dimension[1] = custTable.LineOfBusinessId;
        custTable.update();           
    }        
    ttsCommit;
}
AX2012:
X++:
static void setDimension(Args _args)
{
    DimensionValue                  dimValue;
    CustTable                       custTable;
    
    DimensionFinancialTag           dimFinTag;
    FinancialTagCategory            finTagCat;
    DimensionAttributeDirCategory   dimAttrCat;
    DimensionAttribute              dimAttr;
    DimensionAttributeValueSetItem  dimAttrSetItem;
    DimensionAttributeValue         dimAttrValue;
    DimensionDefault                dimDefaultRecId;                               
    
    ttsBegin;
    while select forUpdate custTable   
        order by custTable.LineOfBusinessId // the dimension value is stored here
        where custTable.LineOfBusinessId
    {
        if (custTable.LineOfBusinessId != dimValue)  
        {
            dimValue = custTable.LineOfBusinessId;
            dimDefaultRecId = 0;

            select firstOnly dimFinTag
                where dimFinTag.Value == dimValue
            join finTagCat
                where finTagCat.RecId == dimFinTag.FinancialTagCategory
            join dimAttrCat     
                where dimAttrCat.DirCategory == finTagCat.RecId
            join dimAttr
                where dimAttr.RecId == dimAttrCat.DimensionAttribute
            join dimAttrValue        
                where dimAttrValue.DimensionAttribute == dimAttr.RecId
                   && dimAttrValue.EntityInstance     == dimFinTag.RecId;
    
            while select count(RecId), maxOf(DimensionAttributeValue) from dimAttrSetItem
                group by DimensionAttributeValueSet
            {
                if (dimAttrSetItem.RecId == 1 && dimAttrSetItem.DimensionAttributeValue == dimAttrValue.RecId)
                {
                    dimDefaultRecId = dimAttrSetItem.DimensionAttributeValueSet;    
                    break;
                }
            }
        }        
        custTable.DefaultDimension = dimDefaultRecId;
        custTable.update();           
    }        
    ttsCommit;
}
Разумеется, не забываем сначала пройтись по таблице и сохранить все уникальные значения аналитики вручную, чтобы система создала записи DimensionAttributeValue и DimensionAttributeValueSetItem.

Последний раз редактировалось EVGL; 13.11.2012 в 22:43.
За это сообщение автора поблагодарили: mazzy (2), S.Kuskov (2).
Теги
ax2012, dmf

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
axblog4u: Display Web Image Content in Forms using Dynamics AX2012 Blog bot DAX Blogs 0 28.05.2012 19:12
emeadaxsupport: AX2012 and AX2009 or AX4 side by side - AOS performance counters overwritten Blog bot DAX Blogs 0 13.03.2012 18:11
axblog4u: Dynamics AX2012: Create Custom Service using X++ Blog bot DAX Blogs 0 24.01.2012 21:11
sumitax: AX2012 – One stop for all documentation released my Microsoft Blog bot DAX Blogs 0 26.09.2011 19:13
ukax: Microsoft Dynamics AX2012 - Partner Update Briefing Blog bot DAX Blogs 0 23.07.2011 20:15

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 14:49.