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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.02.2010, 10:47   #1  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
вопрос по LedgerBondServer_RU
В этом классе есть метод processMSTDiff
и там пара строк
X++:
        bondMstDiff(true);
        bondMstDiff(false);
Может кто-нибудь пояснить смысл всего метода и этой пары в частности?

Проблема в том, что на очень большом журнале, Аксапта (3.0sp4) не может преодолеть перебор всех комбинаций проводок. Хочется уменьшить число операций, но пока я не понял смысл этого перебора.

Кстати, код аналогичен и на AX2009.
Старый 12.02.2010, 11:30   #2  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
корреспонденция ошибки округления по основной валюте.
1. сначала собираются все неоткорреспондированные проводки в Mapы
2. потом корреспондируются проводки с совпадающими характеристиками
3. потом всё остальное

2. можно ускорить, если не фильтровать, а лукапить по мепу

Последний раз редактировалось belugin; 12.02.2010 в 11:46.
За это сообщение автора поблагодарили: Wamr (3).
Старый 12.02.2010, 12:06   #3  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от belugin Посмотреть сообщение
корреспондируются проводки с совпадающими арактеристиками, потом всё остальное
Судя по коду
X++:
if ((_equals ? bondTransObjectDebet.equals(bondTransObjectCredit) : true))
проводки с совпадающими арактеристиками, обрабатываются дважды.

В любом случае непонятно для чего нужно два прохода? Важна последовательность обработки? Сомнительно. И потом, даже если и важна, всё равно можно обойтись без дублирования проверки на equals.

И уж совершенно точно незачем делать проверку наличия bondTransObjectDebet.remainAmountMST() во вложенном цикле. Правильно будет так:
X++:
...
while (enumeratorDebet.moveNext())
        {
            bondTransObjectDebet = this.findBondTransObject(enumeratorDebet.currentValue());
            // -->>
            if (bondTransObjectDebet.remainAmountMST() == 0)
            {
                continue;
            }
            // <<--
            enumeratorCredit.reset();
            while (enumeratorCredit.moveNext())
            {
//                if (bondTransObjectDebet.remainAmountMST() == 0)
//                {
//                    break;
//                }
                ...
Пусть не большая, но всё таки оптимизация
Старый 12.02.2010, 12:15   #4  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
тогда надо менять ключ маппинга
В чем смысл такого странного ключа
[ledgerTrans.CurrencyCode, bondTransObject.remainAmountMST(), ledgerTrans.Dimension, i], содержимое которого не используется..
сортировка?

S.Kuskov
с такой оптимизаций вас ждет большой сюрприз
Старый 12.02.2010, 12:22   #5  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
1. я думаю сортировка
2. да обрабатываются дважды, если после первого прохода что-то осталось
3. Да, надо менять ключ или делать отельный меп характеристики -> ключ или вообще временную таблицу с сооотв. индексом
Старый 12.02.2010, 12:22   #6  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Wamr Посмотреть сообщение
с такой оптимизаций вас ждет большой сюрприз
Точно. bondTransObjectDebet.remainAmountMST() меняет своё значение внутри вложенного цикла. Не заметил
Старый 12.02.2010, 12:29   #7  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
временным таблицам не доверяю

Есть другой путь. Периодически удалять из мапа записи с нулевыми суммами, чтобы сокращать
для каждой новой строки количество переборов.
Старый 12.02.2010, 12:35   #8  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от Wamr Посмотреть сообщение
временным таблицам не доверяю
Тогда для начала снесите \Data Dictionary\Tables\TmpLedgerBondWorkTable_RU
Старый 12.02.2010, 12:36   #9  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
будет время - снесу
надо спросить у Ивана может уже снесли
Старый 12.02.2010, 13:03   #10  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
почему вы не доверяете времнным таблицам?
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Вопрос по Проектам PSA DAX: Функционал 35 19.01.2007 22:26
Еще вопрос про покрытие по аналитикам в Сводном планировании rt2 DAX: Функционал 3 24.03.2006 18:56
Вопрос о скорости COM и XML djoker DAX: Программирование 6 02.12.2004 13:37
расчеты с персоналом. НДФЛ. вопрос чайника shumelka DAX: Функционал 2 25.03.2004 11:36
Вопрос к пользователю при сохранении данных в таблице Anais DAX: Программирование 1 23.03.2004 19:46

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

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

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