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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.07.2010, 16:06   #1  
Poleax is offline
Poleax
Модератор
Аватар для Poleax
MCP
MCBMSS
Злыдни
 
1,353 / 595 (22) +++++++
Регистрация: 17.02.2005
Адрес: msk
Записей в блоге: 34
Post
Цитата:
Сообщение от sukhanchik Посмотреть сообщение
и еще вдогонку. Штатная проверка пустых аналитик действует сразу на все таблицы по всем аналитикам. Поэтому ее неудобно устанавливать. Я сделал аналог штатной проверки - для этого мне пришлось добавить всего одно поле DenyEmptyDimension в таблицу DimensionSetRuleTable (плюс вывести галку в нижний грид формы правил набора аналитик) и написать буквально 5 строчек кода в \Classes\DimensionSetValidation\checkDimension:
X++:
public boolean checkDimension(Common        _caller,
                              fieldId       _dimensionFieldId,
                              boolean       _checkWriteValidation,
                              boolean       _silent = false)
{
........
                if (validateDimension != emptyDimension)
                {
                    if (_silent)
                    {
                        isValid = isValid && this.isValidCombination(setId, hierarchyId, validateDimension, prefixDimension);
                    }
                    else
                    {
                        isValid = isValid && this.checkCombination(setId, hierarchyId, validateDimension, prefixDimension);
                    }
                }
                //Проверка на пустую аналитику -->
                else
                {
                    if (_checkWriteValidation && dimensionSetRuleSearch.dimensionSetRuleTable().DenyEmptyDimension)
                    {
                        isValid = checkFailed("@SYS79468");
                    }
                }
                // Проверка на пустую аналитику  <--
........
}
Добавление таким образом галки позволило мне применить правило к целому набору (но не всему массиву) на уровне конкретной таблицы (а не всех таблиц)
Рассматривая данный код в Ax 2009 Rollup 5 было выявлено.
метод вызывается с параметром _checkEmptyDimension
X++:
public boolean checkDimension(Common        _caller,
                              fieldId       _dimensionFieldId,
                              boolean       _checkWriteValidation,
                              boolean       _silent = false,
                              boolean       _checkEmptyDimension = false,
                              boolean       _isPrefix = false)
только теперь принудительно включена проверка на пустые аналитики (#define.ValidateEmptyDimensions(true)), т.е.
X++:
public boolean checkDimensions(boolean _checkWriteValidation)
{
    #LedgerJournalFaults
    #define.ValidateEmptyDimensions(true)

    boolean             ok = true;
    DimensionSetCaller  dimensionSetCaller;
    ;

    if (isConfigurationkeyEnabled(configurationkeynum(DimensionSetHierarchy)))
    {
        dimensionSetCaller = DimensionSetCaller::construct(this, fieldnum(LedgerJournalTrans, Dimension));
        ok = appl.dimensionSetValidation(false, dimensionSetCaller.getCompanyId()).checkDimension(this,
                                                                fieldnum(LedgerJournalTrans, Dimension),
                                                                _checkWriteValidation,
                                                                false,
                                                                #ValidateEmptyDimensions) && ok;

        if (ok)
        {
            // InterCoDimension field should only be set when the two accounts
            // are different or there is an offset account.
В методе \Classes\DimensionSetValidation\checkDimension отрабатывает ELSE
X++:
            // don't check empty dimensions unless expressely told to
            if (validateDimension != emptyDimension || _checkEmptyDimension)
            {
                if (_silent)
                {
                    isValid = this.isValidCombination(setId, hierarchyId, validateDimension, prefixDimension, _isPrefix) && isValid;
                }
                else
                {
                    isValid = this.checkCombination(_caller, _dimensionFieldId, setId, hierarchyId, validateDimension, dimensionSetRule.RefLedgerAccount, prefixDimension, _isPrefix) && isValid;
                }
            }
Проблема по вопросу Заблокировать финансовую аналитику? в \Classes\DimensionSetValidation\checkCombination строка 36

Стек вызова.
Код:
[s]    \Classes\DimensionSetValidation\checkCombination                                                       36
[s]    \Classes\DimensionSetValidation\checkDimension                                                        123
[s]    \Data Dictionary\Tables\LedgerJournalTrans\Methods\checkDimensions                                     13
[s]    \Classes\LedgerJournalCheckPost\checkJournal                                                          212
[s]    \Classes\LedgerJournalCheckPost\run                                                                    72
[c]    \Classes\LedgerJournalCheck\main                                                                       41
[c]    \Classes\FormFunctionButtonControl\Clicked
__________________

This posting is provided "AS IS" with no warranties, and confers no rights.
За это сообщение автора поблагодарили: sukhanchik (2).
Теги
иерархия, финансовая аналитика

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Можно ли отключить и включить аналитику? miklenew DAX: Функционал 24 30.01.2008 14:00
Игра "Поймай аналитику" Hamster DAX: Функционал 6 12.10.2004 17:53
Почему договору нельзя сквозную аналитику присвоить? George V. Tavrizoff DAX: Функционал 3 27.02.2004 11:05
Как грамотно связать ГК и Складскую аналитику? /для отчета/ Anais DAX: Программирование 17 19.02.2004 17:42
Как создать новую складскую аналитику? Михаил Андреев DAX: Программирование 2 18.08.2003 22:43

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

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

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