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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.07.2016, 06:10   #1  
macklakov is offline
macklakov
NavAx
Аватар для macklakov
 
2,232 / 974 (37) +++++++
Регистрация: 03.04.2002
Fact boxes
Добрый день

У нас возникли некоторые затруднения с производительностью, поэтому хотелось бы отключить те Fact Boxes, которые пользователям не нужны. Иначе говоря, задача отключить все Fact Boxes, кроме некоторых.
Не подскажите способ как это сделать с минимальными телодвижениями?
Заранее благодарю

AX 2012 R2 CU9
__________________
Isn't it nice when things just work?
Старый 26.07.2016, 14:58   #2  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от macklakov Посмотреть сообщение
Добрый день

У нас возникли некоторые затруднения с производительностью, поэтому хотелось бы отключить те Fact Boxes, которые пользователям не нужны. Иначе говоря, задача отключить все Fact Boxes, кроме некоторых.
Не подскажите способ как это сделать с минимальными телодвижениями?
Заранее благодарю

AX 2012 R2 CU9
Если с минимальными то в каждой форме в узле Parts в свойствах конкретного Form Part поставить Visible = No.
Оставить Visible = Yes для тех самых некоторых.

Часа два работы при наличии списка этих форм, всяко в районе 15-30.
Если уж хочется для всех форм то можно и джобик написать.

Имея в виду что глобально SysClientPerf.FactBoxesEnabled отключать не подходит.
За это сообщение автора поблагодарили: macklakov (2).
Старый 26.07.2016, 16:33   #3  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
Цитата:
Сообщение от macklakov Посмотреть сообщение
Добрый день

У нас возникли некоторые затруднения с производительностью, поэтому хотелось бы отключить те Fact Boxes, которые пользователям не нужны. Иначе говоря, задача отключить все Fact Boxes, кроме некоторых.
Не подскажите способ как это сделать с минимальными телодвижениями?
Заранее благодарю

AX 2012 R2 CU9
Способ 1 "Если хочется покодить"
- набросал на скорую руку, произв. эксплуатацию не проходило
- можно вынести в настройке конкретизацию, какие именно фактбоксы отключить

\Classes\SysFormRun\isFormPart
X++:
// EVGA: 26.07.2016
public client static boolean isFormPart(FormRun _formRun, Args _args = null)
{
    boolean             ret;
    MenuItemName        menuItemName;
    MenuItemObjectType  menuItemObjectType;
    Args                args;
    
    args = _formRun ? _formRun.args() : _args;

    if (args && args.menuItemType() == MenuItemType::Display)
    {
        menuItemName = args.menuItemName();

        menuItemObjectType = new MenuFunction(menuItemName, MenuItemType::Display).objectType();

        if (menuItemObjectType == MenuItemObjectType::FormPart ||
            menuItemObjectType == MenuItemObjectType::InfoPart || 
            menuItemObjectType == MenuItemObjectType::CueGroup)
        {
            ret = true;
        }
    }

    return ret;
}
\Classes\ClassFactory\formRunClassOnClient
X++:
client static FormRun formRunClassOnClient(xArgs args)
{
    SysSetupFormRun sysSetupFormRun;

    if (SysTaskRecorderEventManager::parmRecording())
    {
        return SysTaskRecorderSetupFormRun::newArgs(args);
    }
    
    // EVGA: 26.07.2016 --> 
    if (SysFormRun::isFormPart(null, args))
    {
       return null;
    }
    // EVGA: 26.07.2016 <--

    sysSetupFormRun = new SysSetupFormRun(args);
    return sysSetupFormRun;
}

Способ 2 "Без кастомизаций, но все-равно покодить"
- Пробежаться по SysLastValue и отключить лишнее
Вложение 10887

Последний раз редактировалось DSPIC; 28.09.2017 в 01:50.
За это сообщение автора поблагодарили: mazzy (2), macklakov (11), Logger (15).
Старый 29.07.2016, 00:55   #4  
b_nosoff is offline
b_nosoff
Читатель
Аватар для b_nosoff
MCP
MCBMSS
 
197 / 143 (5) +++++
Регистрация: 01.12.2004
Адрес: Msk
Записей в блоге: 13
Есть специальный класс PartList для этого. Пример тут, например.
__________________
Axapta non erubescit
За это сообщение автора поблагодарили: mazzy (2).
Старый 03.08.2016, 08:25   #5  
macklakov is offline
macklakov
NavAx
Аватар для macklakov
 
2,232 / 974 (37) +++++++
Регистрация: 03.04.2002
Цитата:
Сообщение от b_nosoff Посмотреть сообщение
Есть специальный класс PartList для этого. Пример тут, например.
Не вижу особого смысла. Если уж кодить конкретные формы, то проще, быстрее и надежнее удалить Part или выставить видимость No
__________________
Isn't it nice when things just work?

Последний раз редактировалось macklakov; 03.08.2016 в 08:36.
Старый 03.08.2016, 08:28   #6  
macklakov is offline
macklakov
NavAx
Аватар для macklakov
 
2,232 / 974 (37) +++++++
Регистрация: 03.04.2002
Цитата:
Сообщение от ax_mct Посмотреть сообщение
в свойствах конкретного Form Part поставить Visible = No.
Хм... Проверил как свойство работает. Оно меняет дефолтную видимость, которую пользователь может для себя лично менять. Т.е. имеет смысл job-иком или индусом проставить на ВСЕ Parts в системе свойство как No, а пользователь потом ручками включит то, что ему нужно/нравится.
__________________
Isn't it nice when things just work?

Последний раз редактировалось macklakov; 03.08.2016 в 08:38. Причина: разобрался
За это сообщение автора поблагодарили: ax_mct (3).
Старый 03.08.2016, 12:48   #7  
Link is offline
Link
Британский учённый
Аватар для Link
Соотечественники
 
568 / 523 (19) +++++++
Регистрация: 25.11.2005
Адрес: UK
Записей в блоге: 9
Цитата:
Сообщение от macklakov Посмотреть сообщение
Хм... Проверил как свойство работает. Оно меняет дефолтную видимость, которую пользователь может для себя лично менять. Т.е. имеет смысл job-иком или индусом проставить на ВСЕ Parts в системе свойство как No, а пользователь потом ручками включит то, что ему нужно/нравится.
При условии, что пользователь должен быть осведомлен об этих партс. Не проще ли оставить как есть, а если у кого тормозит пусть уже тогда отключают парты на нужных формах.
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще.
За это сообщение автора поблагодарили: ax_mct (3).
Старый 03.08.2016, 21:58   #8  
b_nosoff is offline
b_nosoff
Читатель
Аватар для b_nosoff
MCP
MCBMSS
 
197 / 143 (5) +++++
Регистрация: 01.12.2004
Адрес: Msk
Записей в блоге: 13
Цитата:
Сообщение от macklakov Посмотреть сообщение
Если уж кодить конкретные формы
Я не предлагал кодить конкретные формы. Перекройте в SysSetupFormRun
X++:
public void run()
{
    PartList partList;
    FormRun formPart;
    int idx;

    super();

    partList = new PartList(this);

    for (idx = partList.partCount(); idx > 0; idx--)
    {
        formPart = partList.getPartById(idx);

        if (formPart)
        {
            formPart.design().visible(false);
        }
    }

    partList.finalize();
}
__________________
Axapta non erubescit
Старый 04.08.2016, 03:01   #9  
macklakov is offline
macklakov
NavAx
Аватар для macklakov
 
2,232 / 974 (37) +++++++
Регистрация: 03.04.2002
Цитата:
Сообщение от Link Посмотреть сообщение
Не проще ли оставить как есть, а если у кого тормозит пусть уже тогда отключают парты на нужных формах.
Так фишка в том, что помимо конкретных форм, партс тормозят всю систему в целом. Поэтому лучше чтобы пользователи активировали лишь то, что им реально нужно. Правда их может раздражать что при деплойменте иногда нужно бывает usage data обнулять и эти партс им надо будет заново видимыми делать.
__________________
Isn't it nice when things just work?
Старый 04.08.2016, 03:39   #10  
macklakov is offline
macklakov
NavAx
Аватар для macklakov
 
2,232 / 974 (37) +++++++
Регистрация: 03.04.2002
Цитата:
Сообщение от b_nosoff Посмотреть сообщение
Перекройте в SysSetupFormRun
Этот код не работает, но он дал мне понимание почему мне этот подход не нравится. PartList выдает набор объектов. А это значит что они уже должны быть инициализированы. Значит query уже отработали. Т.е. проблему это не решит.
__________________
Isn't it nice when things just work?
Старый 04.08.2016, 11:49   #11  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
Цитата:
Сообщение от macklakov Посмотреть сообщение
...А это значит что они уже должны быть инициализированы. Значит query уже отработали. Т.е. проблему это не решит.
Exactly! А чем мой способ #1 не подошел - я полагал, он идеально подходит под ваш requirement?
За это сообщение автора поблагодарили: macklakov (10).
Старый 04.08.2016, 14:06   #12  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от DSPIC Посмотреть сообщение
Exactly! А чем мой способ #1 не подошел - я полагал, он идеально подходит под ваш requirement?
Цитата:
Способ 1 "Если хочется покодить"
- набросал на скорую руку, произв. эксплуатацию не проходило
- можно вынести в настройке конкретизацию, какие именно фактбоксы отключить
Дык "Не подскажите способ как это сделать с минимальными телодвижениями?".

Вот самое минимальное это пройтись по свойствам форм. Без покодить, так как это создает риски - нефиг на спине слона высокие и красивые замки строить.

Тут психология разная. Постоянный программист-работник на клиенте на "собственной" AX рад поразвлекаться. Но контрактник/партнер/подрядчик так рисковать просто не может. Поэтому должно быть тупое и скучное решение.
За это сообщение автора поблагодарили: macklakov (2).
Старый 05.08.2016, 03:18   #13  
macklakov is offline
macklakov
NavAx
Аватар для macklakov
 
2,232 / 974 (37) +++++++
Регистрация: 03.04.2002
Цитата:
Сообщение от DSPIC Посмотреть сообщение
Exactly! А чем мой способ #1 не подошел - я полагал, он идеально подходит под ваш requirement?
Очень хороший способ. Идеально подходит. Спасибо огромное. Только вот ax_mct прав. Чтобы этот способ применить нужно немного больше телодвижений сделать. Надо таблицу настроек прицепить, оттестить, собрать и формализовать требования к тому что показывать, а что нет, собственно расставить галочки... Т.е. мы обязательно так и сделаем, если время будет. Но конкретно сейчас просто сделать все невидимым быстрее и проще получается.
__________________
Isn't it nice when things just work?
Старый 03.05.2020, 11:15   #14  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,940 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Немного не по теме топика, но спрошу.

Кто-нибудь в курсе, зачем таблица SysClientPerf сделана глобальной ?
Почему она хранит настройки не в разрезе пользователей.
Кто-нибудь кастомизировал хранение настроек производительности клиента в разрезе UserId ?
Теги
factboxes, formpart, partlist

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
atinkerersnotebook: The New Dynamics AX Tip #11: Showing the fact boxes Blog bot DAX Blogs 0 11.01.2016 16:11
emeadaxsupport: Microsoft Dynamics AX 2012: Workflow Basic Settings Form Has Missing Text Boxes Blog bot DAX Blogs 0 24.05.2012 01:13
axzaptech: Dynamics AX2012 Fact boxes Blog bot DAX Blogs 0 24.08.2011 16:11
AX UK: BRL Price List Fact Sheets for Microsoft Dynamics AX Blog bot DAX Blogs 0 25.01.2007 00:40
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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