03.02.2015, 20:51 | #1 |
Участник
|
Показать только одну аналитику в tabFinancialDimensions на форме
Как можно спрятать "ненужные" аналитики в табе финансовых аналитик на форме ?
Самое близкое что нашел в стандартном апп - это инвентсайт форма, но там все на линке сильно замешано. Нужно просто иметь возможность сохранить дефалтное значение только для Костцентра, но спрятать другие аналитики чтобы не вводить пользователей в заблуждение что те тоже будут дефолтится. Ну или сделать нередактируемыми хотя бы. Спасибо
__________________
_databaseTransDelete ... bl@$ ! |
|
03.02.2015, 22:37 | #2 |
Участник
|
Вариант
__________________
Не принимайте жизнь всерьез - это временное явление... |
|
04.02.2015, 14:07 | #3 |
Участник
|
Не хотелось бы править системные классы. Думал может спрятать через имя контрола лишние, но они там динамические все, надо как-то перебором делать, пока без результатов.
element.control(element.controlId(formControlStr(MyForm, DimensionEditRowGroup2))).visible(false); компилятор конечно ругается на контрол так как его нет до запуска формы
__________________
_databaseTransDelete ... bl@$ ! |
|
04.02.2015, 14:39 | #4 |
Участник
|
Посмотрите, как реализован метод \Classes\DimensionDefaultingControllerBase\setEditability
|
|
04.02.2015, 16:16 | #5 |
Участник
|
За список отображаемых аналитик отвечает метод DimensionDefaultingControllerBase.parmDisplayedDimensionSet()
В него нужно передать ссылку на отображаемый набор, ссылка получается через DimensionAttributeSetStorage().save(), пример как можно получить ее можно посмотреть в DimensionCache::getDimensionAttributeSetForLedger().
__________________
Sergey Nefedov |
|
|
За это сообщение автора поблагодарили: sukhanchik (2), gl00mie (2). |
22.02.2015, 22:14 | #6 |
Участник
|
Сложно)
На базовом классе 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). |