Показать сообщение отдельно
Старый 22.10.2018, 20:02   #340  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5788 (200) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
PurchLine.update() в D365FO стал просто великолепен: мало того, что метод раздулся до 370 строк (что, PurchLineType.update()? не, не слышали), так он еще и начал пересчитывать налоги по заказу на покупку - видать, какой-то костыль для отображения итогов по заказу в виде FormPart.
X++:
if (this.distributionUpdateNeeded(purchLineOrig))
{
    if (purchTable.InclTax &&
        (this.hasAmountChanged(purchLineOrig) || this.hasTaxChanged(purchLineOrig)))
    {
        PurchTotals::newPurchTable(purchTable).calc(false, false, true);
        PurchLine::logMeasure(instrumentation, classStr(PurchTotals), methodStr(PurchTotals, calc), stopWatch);
    }
Конечно, на тестовых данных с 10-ю строками всё прекрасно, а вот в реальных условиях, когда строк эдак под 600 и более, какая-нить отмена недопоставленного количества превращается в десятки минут ожидания, так еще и блокировки на PurchTableVersion вешаются, так что несколько заказов на покупку в параллель штатно не отменишь.
Цитата:
Сообщение от Blog bot Посмотреть сообщение
How much telemetry are we collecting? A lot, like, really a lot!
Да, спасибо, в последней версии всё стало работать еще тормознее за счет того, что каждый чих пишется в EventLog, и по нему можно найти проблемное место. Но толку-то? Как вот надо извратиться, чтобы при запрете оверлеинга, одними extension'ами отрубить этот холостой пересчет налогов на каждой строке? Чтоб служба медом не казалась, PurchLine.distributionUpdateNeeded() сделан закрытым (private), так что свой пост-обработчик туда не повесишь.

Последний раз редактировалось gl00mie; 22.10.2018 в 20:08.
За это сообщение автора поблагодарили: fed (3), raz (5), sukhanchik (4).