![]() |
#5 |
Участник
|
Я тут в очередной раз занимался оптимизацией разноски розничных продаж и наткнулся еще на пару возможных улучшений.
1. Метод writeTaxAmount_W, который тут ранее оптимизировали вызывает в цикле метод CustVendInvoiceTrans.initFromTaxWorkTrans_RU(). Там выполняется неиндексируемый запрос к злосчастной темповухе TmpTaxWorkTrans. Единственный селективный фильтр там это номер лота InventTransId, но индекса по нему нету. Получается примерно такая трассировка В общем нужно добавить индекс и плюс пришлось еще поменять немного код на поиске. X++: if (SysCountryRegionCode::isLegalEntityInCountryRegion([#isoRU])) { //+ sergey.m 03.02.2022 FRE_20421639_001 if (!_sourceRecId) { select taxWorkTrans index hint InventTransIdx where taxWorkTrans.SourceTableId == _sourceTableId && taxWorkTrans.InventTransId == _inventTransId && taxWorkTrans.TaxDirection != TaxDirection::UseTax && taxWorkTrans.TaxOrigin != TaxOrigin::TaxReversed; } else { //- sergey.m 03.02.2022 FRE_20421639_001 select taxWorkTrans where taxWorkTrans.SourceTableId == _sourceTableId && ((_sourceRecId && taxWorkTrans.SourceRecId == _sourceRecId) || (! _sourceRecId && taxWorkTrans.InventTransId == _inventTransId)) && taxWorkTrans.TaxDirection != TaxDirection::UseTax && taxWorkTrans.TaxOrigin != TaxOrigin::TaxReversed; } 2. В классе Tax метод lineTaxAmount. В начале метода проверяется что в таблице есть записи немного экзотическим методом, считая их количество. Я поменял так, хотя можно было наверное вообще убрать запрос, меня пока и так устраивает. X++: if (this.taxParameters().TaxSpecifyLine) { if (this.taxParameters().TaxSpecifyLine) { //+ sergey.m 03.02.2022 FRE_20421639_001 //select count(RecId) from taxWorkTrans; select firstOnly RecId from taxWorkTrans; //- sergey.m 03.02.2022 FRE_20421639_001 if (taxWorkTrans.RecId > 0 && !this.useSubLedgerJournalLines()) { // Posting out of TmpTaxWorkTrans |
|
|
За это сообщение автора поблагодарили: trud (10), Logger (5). |
Теги |
faq, tax, налоги, оптимизация, производительность |
|
![]() |
||||
Тема | Ответов | |||
Вызов метода базового класса | 15 | |||
jerry-dynamics: tax codes | 0 | |||
Вызов класса из другого класса | 9 | |||
передача курсора в два класса | 3 | |||
Запустить метод класса | 2 |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|