12.02.2010, 10:47 | #1 |
----------------
|
вопрос по LedgerBondServer_RU
В этом классе есть метод processMSTDiff
и там пара строк X++: bondMstDiff(true); bondMstDiff(false); Проблема в том, что на очень большом журнале, Аксапта (3.0sp4) не может преодолеть перебор всех комбинаций проводок. Хочется уменьшить число операций, но пока я не понял смысл этого перебора. Кстати, код аналогичен и на AX2009. |
|
12.02.2010, 11:30 | #2 |
Участник
|
корреспонденция ошибки округления по основной валюте.
1. сначала собираются все неоткорреспондированные проводки в Mapы 2. потом корреспондируются проводки с совпадающими характеристиками 3. потом всё остальное 2. можно ускорить, если не фильтровать, а лукапить по мепу Последний раз редактировалось belugin; 12.02.2010 в 11:46. |
|
|
За это сообщение автора поблагодарили: Wamr (3). |
12.02.2010, 12:06 | #3 |
Участник
|
Цитата:
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 |
----------------
|
тогда надо менять ключ маппинга
В чем смысл такого странного ключа [ledgerTrans.CurrencyCode, bondTransObject.remainAmountMST(), ledgerTrans.Dimension, i], содержимое которого не используется.. сортировка? S.Kuskov с такой оптимизаций вас ждет большой сюрприз |
|
12.02.2010, 12:22 | #5 |
Участник
|
1. я думаю сортировка
2. да обрабатываются дважды, если после первого прохода что-то осталось 3. Да, надо менять ключ или делать отельный меп характеристики -> ключ или вообще временную таблицу с сооотв. индексом |
|
12.02.2010, 12:22 | #6 |
Участник
|
|
|
12.02.2010, 12:29 | #7 |
----------------
|
временным таблицам не доверяю
Есть другой путь. Периодически удалять из мапа записи с нулевыми суммами, чтобы сокращать для каждой новой строки количество переборов. |
|
12.02.2010, 12:35 | #8 |
Участник
|
|
|
12.02.2010, 12:36 | #9 |
----------------
|
будет время - снесу
надо спросить у Ивана может уже снесли |
|
12.02.2010, 13:03 | #10 |
Участник
|
почему вы не доверяете времнным таблицам?
|
|