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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 24.05.2022, 08:38   #1  
DaniilT is offline
DaniilT
Участник
 
37 / 10 (1) +
Регистрация: 28.04.2020
Быстрая форма
Доброго дня. Подскажите как сделать форму, у которой была бы хорошая производительность? Задача тривиальная, как мне показалась на первый взгляд.
Нужно создать форму с заказами на продажу, статус которых "Открытый заказ". Как добавлять range на источник данных я знаю. Проблема в том, что из-за большого количества дисплейных методов форма очень долго открывается. Пробовал кэшировать все методы, не помогает. Работаю в AX2012

X++:
public void init()
{
    super();

     qbr_purchStatus = this.query().dataSourceTable(tableNum(PurchTable)).addRange(fieldNum(PurchTable, PurchStatus));
     qbr_purchStatus.value(SysQuery::value((PurchStatus::Backorder))); // Открытый заказ
  
     this.cacheAddMethod(tablemethodstr(PurchTable, displayPaid_vsn));
     this.cacheAddMethod(tablemethodstr(PurchTable, dislpaySumInvoice_vsn));
     this.cacheAddMethod(tablemethodstr(PurchTable, displayNotPaid_vsn));
     this.cacheAddMethod(tablemethodstr(PurchTable, displayRemainPurchPhysical_vns));
     this.cacheAddMethod(tablemethodstr(PurchTable, displayPurchQty_vns));
     this.cacheAddMethod(tablemethodstr(PurchTable, displayTotalAmount_vsn));
     this.cacheAddMethod(tablemethodstr(PurchTable, displayToPay_vsn));
}

Последний раз редактировалось DaniilT; 24.05.2022 в 08:50.
Старый 24.05.2022, 09:11   #2  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,388 / 1712 (64) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от DaniilT Посмотреть сообщение
Проблема в том, что из-за большого количества дисплейных методов форма очень долго открывается
Т.е. вы спрашиваете как быстро отобразить на форме результат вычислений дисплейных методов. которые сами по себе долго вычисляются? Простите, но без конкретики это звучит именно так.

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

Можно идти по пути оптимизации расчётов, индексы добавить недостающие, почистить ненужные архивные данные.
Также возможно у вас там для каждой строки по сто раз одно и тоже пересчитывается. Тогда можно думать над более глубоким кэшированием. Запоминать где-нибудь промежуточные значения, участвующие в вычислениях. Но чтобы об этом рассуждать нужно понять где происходят основные потери времени.
Старый 24.05.2022, 09:24   #3  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
617 / 300 (12) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
На датасорсе указан индекс?
Также проверьте, сколько времени занимают вычисления в каждом дисплейном методе. Постарайтесь оптимизировать самые медленные.
Цитата:
Сообщение от DaniilT Посмотреть сообщение
Нужно создать форму с заказами на продажу, статус которых "Открытый заказ".
Извините, поправлю. PurchTable - заказы на покупку. SalesTable - заказы на продажу.
__________________
// no comments
Старый 24.05.2022, 10:07   #4  
ice is offline
ice
Участник
Аватар для ice
Лучший по профессии 2014
 
1,592 / 361 (16) ++++++
Регистрация: 23.03.2006
если у вас дисплейные методы на гриде, убрать самые тяжелые из них на другую закладку
За это сообщение автора поблагодарили: S.Kuskov (2).
Старый 24.05.2022, 13:02   #5  
imir is offline
imir
Участник
 
157 / 153 (6) ++++++
Регистрация: 28.05.2010
Вопрос в итоге про закупки или продажи? Посмотрите как в закупках реализован fast-tab справа от лист-пейджа. Мы такой-же сделали для формы заказов. Данные хранятся в физической таблице аналогично таблице PurchTotalsSummary. Только в стандарте там надо жать кнопку "обновить", а мы сделали пакетник, кторый эти суммы по заказам актуализирует. В таблице сделали галку "актуально" и сбрасываем ее, когда в заказе добавляют строки или меняют суммы, либо происходит оплата и т.п..

Последний раз редактировалось imir; 24.05.2022 в 13:08.
За это сообщение автора поблагодарили: EVGL (3), dim-gin (1), axm2017 (1).
Старый 24.05.2022, 17:10   #6  
dim-gin is offline
dim-gin
Участник
 
26 / 36 (2) +++
Регистрация: 15.04.2014
Адрес: СПб
В старых аксаптах можно было бы ещё начать с совсем простого: если клиент достаточно "далеко" от AOS'а (например, раза в два дальше рекомендуемых 4 мс), то тяжёлые display-методы будут тратить время на перегонку данных туда-сюда, что может стать заметно на формах.
Но не знаю, актуально ли это для 2012й.
Старый 25.05.2022, 16:08   #7  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
670 / 506 (18) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
сделай view или временную таблицу со всеми нужными полями из этих дисплей-методов и прикрути к PurchTable.

дополнительный профит: сможешь фильтровать и сортировать по этим полям.

кстати, не факт, что форма медленно открывается именно из-за дисплей-методов. попробуй для эксперимента закомментить их и сравнить время открытия. если оно так же медленно это делает, то есть смысл потрейсить.
__________________
Felix nihil admirari
Старый 25.05.2022, 16:22   #8  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,651 / 2587 (94) +++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
У нас форма заказов / закупок может тупить 20-40 секунд при первом открытии.
Прикол в том что время уходит не на выборку данных а на начитывание из БД модели определения формы, табличек датасорсов со всеми методами.

Попробуйте перезайти в аксапту и переключиться в компанию dat. Или сделать тест на базе пустышке.
Если открывается также медленно, то скорее всего у вас та же проблема.
Но тормоза проявляются только на первом открытии формы.
Старый 25.05.2022, 17:16   #9  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
670 / 506 (18) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
а также: https://alexvoy.blogspot.com/2017/01...nce-issue.html
__________________
Felix nihil admirari
Старый 26.05.2022, 21:28   #10  
samolalex is offline
samolalex
Участник
Аватар для samolalex
Самостоятельные клиенты AX
 
258 / 107 (4) +++++
Регистрация: 18.06.2010
Адрес: Москва
А нет ли опций (аналогов опций) allowUseOfPreloadedForm / Form.AllowPreLoading в AX2009?
__________________
С уважением, Александр.
Теги
display метод, производительность, форма

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Зависает форма при выполнении executeQuery Vasiliusis DAX: Программирование 3 28.01.2016 11:42
Как класс->запрос->форма. Как такое создать? kitty DAX: Программирование 16 09.09.2014 12:52
лукап-форма с доп. фильтром patron DAX: Программирование 10 30.03.2007 12:19
LookUp форма и параметры SnowMan DAX: Программирование 7 18.09.2003 16:04
Произвольная Lookup форма Maxim Gorbunov DAX: База знаний и проекты 0 30.11.2001 21:59
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 11:48.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.