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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 29.11.2007, 14:33   #1  
gefr is offline
gefr
Участник
Аватар для gefr
MCBMSS
 
147 / 17 (1) ++
Регистрация: 01.11.2004
Адрес: МО, Котельники
предвычисление полей (не кеширование методов)
Есть форма, есть набор долговычисляемых полей, которые используют значения друг друга.
Соответственно, возникает хотелка: предвычислить все значения при смене записи, в грид выводить уже готовые значения. Вопрос: в каком методе вызывать вычисление?
Если cursorNotify - он тогда для всех строк вычисляет значения для текущей строки.
Active и linkActive - нули всегда отдает...
Старый 29.11.2007, 14:42   #2  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
postLoad вызывается после считывания каждой записи.
Старый 29.11.2007, 15:09   #3  
konopello is offline
konopello
SAP
SAP
 
628 / 76 (4) ++++
Регистрация: 08.11.2005
Адрес: Минск
а может попробовать слаживать расчитаные значения во временную таблицу, и display методом их выводить. Если запись во временной таблице существует брать расчитаные значения из нее, если нет то рассчитать значения и вставить во временную таблицу, связь между обычной таблицей и временной можно сделать по recid.

Цитата:
Вопрос: в каком методе вызывать вычисление?
следовательно и нужда в этом вопросе отпадает.
Старый 29.11.2007, 16:04   #4  
gefr is offline
gefr
Участник
Аватар для gefr
MCBMSS
 
147 / 17 (1) ++
Регистрация: 01.11.2004
Адрес: МО, Котельники
2konopello: какая разница, где хранить. главное, когда рассчитать. Мой метод хранения мне нравится больше - он однозначно быстрее
2kashperuk - postLoad - это чей метод? я его найти не могу среди методов формы
Старый 29.11.2007, 16:06   #5  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от george040875 Посмотреть сообщение
2konopello: какая разница, где хранить. главное, когда рассчитать. Мой метод хранения мне нравится больше - он однозначно быстрее
2kashperuk - postLoad - это чей метод? я его найти не могу среди методов формы
это на таблице.
см для примера LedgerTrans

но быстрым такой подход не назовешь
Старый 29.11.2007, 16:10   #6  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Я бы сделал так:

1. Есть кеш (ннапример, MAP) recID --> (набор вычисляемых полей)
2. При попытке получить значение одного из дисплей методов, вычисляются они все, если их нет в кеше или берутся из кеша, если есть.
Старый 29.11.2007, 16:13   #7  
konopello is offline
konopello
SAP
SAP
 
628 / 76 (4) ++++
Регистрация: 08.11.2005
Адрес: Минск
Цитата:
2konopello: какая разница, где хранить. главное, когда рассчитать. Мой метод хранения мне нравится больше - он однозначно быстрее
к сожалению я не видел ваш метод, а просто предложил вариант решения

не вижу смысла рассчитывать все предварительно, мой метод производил бы расчет по мере необходимости, т.е. при поподании данных в grid.

Последний раз редактировалось konopello; 29.11.2007 в 16:14. Причина: ошибки......
Старый 29.11.2007, 16:16   #8  
konopello is offline
konopello
SAP
SAP
 
628 / 76 (4) ++++
Регистрация: 08.11.2005
Адрес: Минск
Цитата:
Я бы сделал так:

1. Есть кеш (ннапример, MAP) recID --> (набор вычисляемых полей)
2. При попытке получить значение одного из дисплей методов, вычисляются они все, если их нет в кеше или берутся из кеша, если есть.
ну вот фактически мой вариант только с помощью MAP
Старый 29.11.2007, 17:37   #9  
gefr is offline
gefr
Участник
Аватар для gefr
MCBMSS
 
147 / 17 (1) ++
Регистрация: 01.11.2004
Адрес: МО, Котельники
2konopello - я просто сразу не понял сути предложения. В принципе, действительно интересный вариант.
2belugin - имеющиюся готовую реализацию в системе не подскажете?
Старый 29.11.2007, 17:43   #10  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
не. не знаю.
Старый 29.11.2007, 17:49   #11  
konopello is offline
konopello
SAP
SAP
 
628 / 76 (4) ++++
Регистрация: 08.11.2005
Адрес: Минск
Цитата:
2belugin - имеющиюся готовую реализацию в системе не подскажете?
\Forms\EmplBalance_RU

только тут слегка по калечному сделано
Старый 29.11.2007, 18:23   #12  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Еще можно сделать так, как на форме Закупок, к примеру.
закладка Разноска или История разноски (там где последний документ и его дата)
Старый 29.11.2007, 18:32   #13  
gefr is offline
gefr
Участник
Аватар для gefr
MCBMSS
 
147 / 17 (1) ++
Регистрация: 01.11.2004
Адрес: МО, Котельники
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Еще можно сделать так, как на форме Закупок, к примеру.
закладка Разноска или История разноски (там где последний документ и его дата)
Фактически именно так я и сделал. только для отображения в гриде - как выяснилось не годится
Старый 29.11.2007, 19:10   #14  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от george040875 Посмотреть сообщение
2belugin - имеющиюся готовую реализацию в системе не подскажете?
Главная книга \ План счетов.
Сальдо "предвычисленное" поле
__________________
полезное на axForum, github, vk, coub.
Старый 29.11.2007, 20:18   #15  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от kashperuk Посмотреть сообщение
это на таблице.
см для примера LedgerTrans

но быстрым такой подход не назовешь
У меня он почему то 2 раза вызывается
Старый 30.11.2007, 10:08   #16  
konopello is offline
konopello
SAP
SAP
 
628 / 76 (4) ++++
Регистрация: 08.11.2005
Адрес: Минск
Цитата:
Главная книга \ План счетов.
Сальдо "предвычисленное" поле
точно, хороший пример как я его сразу не вспомнил
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
оптимальное кол-во полей в таблице SHiSHok DAX: Программирование 9 30.04.2008 18:31
Кеширование средствами аксапты Logger DAX: Программирование 27 11.10.2007 14:40
Как получить значения полей (modifiedDate, modifiedTime, modifiedBy и др.) при работе с объектами AOT типа Map? LRA DAX: База знаний и проекты 15 02.04.2007 13:37
Как перекрыть lookup для поля входящего в группу полей ATimTim DAX: Программирование 2 05.10.2005 11:26
очистка полей. простой вопрос Антон Солдатов DAX: Программирование 4 04.04.2003 10:28
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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