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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 03.02.2015, 20:51   #1  
DTD is offline
DTD
Участник
 
183 / 18 (1) ++
Регистрация: 09.08.2005
Показать только одну аналитику в tabFinancialDimensions на форме
Как можно спрятать "ненужные" аналитики в табе финансовых аналитик на форме ?
Самое близкое что нашел в стандартном апп - это инвентсайт форма, но там все на линке сильно замешано.

Нужно просто иметь возможность сохранить дефалтное значение только для Костцентра, но спрятать другие аналитики чтобы не вводить пользователей в заблуждение что те тоже будут дефолтится. Ну или сделать нередактируемыми хотя бы.

Спасибо
__________________
_databaseTransDelete ... bl@$ !
Старый 03.02.2015, 22:37   #2  
Jorj is offline
Jorj
Участник
Аватар для Jorj
 
11 / 14 (1) ++
Регистрация: 03.10.2006
Адрес: Киев
Вариант
Возможно такой подход подойдет
__________________
Не принимайте жизнь всерьез - это временное явление...
Старый 04.02.2015, 14:07   #3  
DTD is offline
DTD
Участник
 
183 / 18 (1) ++
Регистрация: 09.08.2005
Не хотелось бы править системные классы. Думал может спрятать через имя контрола лишние, но они там динамические все, надо как-то перебором делать, пока без результатов.

element.control(element.controlId(formControlStr(MyForm, DimensionEditRowGroup2))).visible(false);

компилятор конечно ругается на контрол так как его нет до запуска формы
__________________
_databaseTransDelete ... bl@$ !
Старый 04.02.2015, 14:39   #4  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Посмотрите, как реализован метод \Classes\DimensionDefaultingControllerBase\setEditability
Старый 04.02.2015, 16:16   #5  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
375 / 562 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
За список отображаемых аналитик отвечает метод DimensionDefaultingControllerBase.parmDisplayedDimensionSet()

В него нужно передать ссылку на отображаемый набор, ссылка получается через DimensionAttributeSetStorage().save(), пример как можно получить ее можно посмотреть в DimensionCache::getDimensionAttributeSetForLedger().
__________________
Sergey Nefedov
За это сообщение автора поблагодарили: sukhanchik (2), gl00mie (2).
Старый 22.02.2015, 22:14   #6  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Сложно)

На базовом классе DimensionControllerObject есть несколько делегатов, вызовы которых используются при создании контролов аналитик

делегат DimensionLinkShowField отвечает за пропуск создания контрола (parmCancel() класса-события DimensionLinkCancelEventArgs должен вернуть True)
делегат DimensionLinkAllowFieldEdit - за возможность блокирования изменения контрола (DimensionLinkCancelEventArgs.parmCancel() == true)
делегат DimensionLinkMarkFieldOptional - за обязательность (DimensionLinkCancelEventArgs.parmCancel() == true)

Для подписки на событие, необходимо реализовать паблик-метод, соответствующий подписываемому делегату, в классе-обработчике формы (на самой форме нельзя - подписка не будет выполнена)

Определение аналитики выполняется по идентификатору аналитики (DimensionAttributeRecId)

X++:
// Метод в классе-обработчике
public void showDimensionControl(DimensionLinkCancelEventArgs _e)
{
    ;

    if (_e)
        _e.parmCancel(_e.parmDimensionAttributeId() != ViewDimensionAttributeRecId);
}

//Подпись на событие DimensionLinkShowField
...
    dimensionDefaultingController = DimensionDefaultingController::constructInGroupWithValues(
...
//подписка на событие
//myHadlerClass.showDimensionControl - это Instance-метод класса
    dimensionDefaultingController.DimensionLinkShowField += eventhandler(myHadlerClass.showDimensionControl);
//если потребуется использовать статический метод
    dimensionDefaultingController.DimensionLinkShowField += eventhandler(MyHadlerClass::staticShowDimensionControl);
...
__________________
Axapta v.3.0 sp5 kr2
За это сообщение автора поблагодарили: Oz (2), Logger (3).
Теги
ax2012, financialdimensions2012

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как связать 3 таблицы на форме kitty DAX: Программирование 10 18.04.2013 08:27
Как мне обновить Grid расположенный на другой форме? Yuri Safronov DAX: Программирование 17 22.01.2013 14:18
Поля из разных таблиц в динамической Lookup-форме samolalex DAX: Программирование 8 06.06.2011 20:20
Отображение связи n:n на форме mazzy DAX: Программирование 22 16.03.2011 16:19
Связь между таблицами в форме Акавешка DAX: Программирование 8 31.01.2011 08:11

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

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

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