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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.07.2016, 06:10   #1  
macklakov is offline
macklakov
NavAx
Аватар для macklakov
 
2,232 / 975 (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).
Старый 03.08.2016, 08:28   #3  
macklakov is offline
macklakov
NavAx
Аватар для macklakov
 
2,232 / 975 (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   #4  
Link is offline
Link
Британский учённый
Аватар для Link
Соотечественники
 
568 / 523 (19) +++++++
Регистрация: 25.11.2005
Адрес: UK
Записей в блоге: 9
Цитата:
Сообщение от macklakov Посмотреть сообщение
Хм... Проверил как свойство работает. Оно меняет дефолтную видимость, которую пользователь может для себя лично менять. Т.е. имеет смысл job-иком или индусом проставить на ВСЕ Parts в системе свойство как No, а пользователь потом ручками включит то, что ему нужно/нравится.
При условии, что пользователь должен быть осведомлен об этих партс. Не проще ли оставить как есть, а если у кого тормозит пусть уже тогда отключают парты на нужных формах.
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще.
За это сообщение автора поблагодарили: ax_mct (3).
Старый 04.08.2016, 03:01   #5  
macklakov is offline
macklakov
NavAx
Аватар для macklakov
 
2,232 / 975 (37) +++++++
Регистрация: 03.04.2002
Цитата:
Сообщение от Link Посмотреть сообщение
Не проще ли оставить как есть, а если у кого тормозит пусть уже тогда отключают парты на нужных формах.
Так фишка в том, что помимо конкретных форм, партс тормозят всю систему в целом. Поэтому лучше чтобы пользователи активировали лишь то, что им реально нужно. Правда их может раздражать что при деплойменте иногда нужно бывает usage data обнулять и эти партс им надо будет заново видимыми делать.
__________________
Isn't it nice when things just work?
Старый 26.07.2016, 16:33   #6  
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   #7  
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   #8  
macklakov is offline
macklakov
NavAx
Аватар для macklakov
 
2,232 / 975 (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, 21:58   #9  
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:39   #10  
macklakov is offline
macklakov
NavAx
Аватар для macklakov
 
2,232 / 975 (37) +++++++
Регистрация: 03.04.2002
Цитата:
Сообщение от b_nosoff Посмотреть сообщение
Перекройте в SysSetupFormRun
Этот код не работает, но он дал мне понимание почему мне этот подход не нравится. PartList выдает набор объектов. А это значит что они уже должны быть инициализированы. Значит query уже отработали. Т.е. проблему это не решит.
__________________
Isn't it nice when things just work?
Старый 03.05.2020, 11:15   #11  
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, время: 19:47.