|  09.02.2022, 12:11 | #41 | 
| Участник | Цитата:  доступ к приватной переменной map и возможность напрямую использовать методы этого map, вместо публичного интерфейса. В общем, я понял. Спасибо, что предложили решение, которое реально увеличивает производительность. | 
|  | 
|  09.02.2022, 18:16 | #42 | 
| Участник | 
			
			Да нет, вроде не ошибаюсь. Такой джоб у меня выдает 2 записи и в 2012 и в d365. Два курсора по одной таблице. Вставляете в любой, получаете записи в обоих курсорах. X++:     TmpFrmVirtual tmp1, tmp2;
    
    tmp1.clear();
    tmp1.ItemId = 'item1';
    tmp1.insert();
    
    tmp2.setTmpData(tmp1);
    
    tmp2.clear();
    tmp2.ItemId = 'item2';
    tmp2.insert();    
   
    select count(RecId) from tmp1;
    info(strFmt("%1", tmp1.recId)); | 
|  | |
| За это сообщение автора поблагодарили: mazzy (10). | |
|  09.02.2022, 21:31 | #43 | 
| Участник | 
			
			Common.setTmpData() создает новый экземпляр при передаче между клиентом и сервером. А если на одной стороне, то проще вставку сделать. Таблица же... X++:     TmpFrmVirtual tmp1, tmp2;
    
    tmp1.clear();
    tmp1.ItemId = 'item1';
    tmp1.insert();
    
    
    insert_recordset tmp2 (ItemId) 
        select ItemId from tmp1;
    tmp2.clear();
    tmp2.ItemId = 'item2';
    tmp2.insert();    
    select count(RecId) from tmp1;
    info(strFmt("tmp1 = %1", tmp1.recId));    
    select count(RecId) from tmp2;
    info(strFmt("tmp2 = %1", tmp2.recId));
				__________________ - Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... | 
|  | |
| За это сообщение автора поблагодарили: mazzy (10), DarkSpirit22 (1). | |
|  27.05.2022, 11:05 | #44 | 
| Участник | Цитата: 
		
			Сообщение от Masel
			   Я тут в очередной раз занимался оптимизацией разноски розничных продаж и наткнулся еще на пару возможных улучшений. <...> 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 \Classes\TaxPost\saveAndPost X++: public void saveAndPost(LedgerPostingController _ledgerPostingController, SelectableDataArea _companyToPost = curext()) { this.initLedgerPosting(_ledgerPostingController); //+ Abramov_ 27.05.2022 TSK0000280_08 //select count(RecId) from taxWorkTrans; select firstonly RecId from taxWorkTrans; //- Abramov_ 27.05.2022 TSK0000280_08 if (taxWorkTrans.RecId > 0 && !this.useSubLedgerJournalLines()) При создании строк накладной покупки в PurchInvoiceJournalCreate.createJournalLine() поле vendInvoiceTrans.LineAmount рассчитывается без учета экземпляра класса Tax, который был рассчитан на предыдущем шаге (в PurchInvoiceJournalCreate.initTotals()). Т.е. в initTotals мы формируем кэш проводок TaxUncommitted, и, если не передать Tax, мы делаем лишние запросы к тому же TaxUncommitted. X++: //+ Abramov_ 27.05.2022 TSK0000280_08 //vendInvoiceTrans.LineAmount = vendInvoiceInfoLine.lineAmountExclTax(vendInvoiceJour.InvoiceDate); vendInvoiceTrans.LineAmount = vendInvoiceInfoLine.lineAmountExclTax(vendInvoiceJour.InvoiceDate, this.parmTax()); //- Abramov_ 27.05.2022 TSK0000280_08 Еще мы провели эксперимент с переводом TmpTaxWorkTrans в TempDB (и обновлением существующей функциональности соответственно). Пришли к выводу, что без существенного рефакторинга кода от версии TmpTaxWorkTrans в TempDB толку нет, т.к. производительность расчета налогов упала ровно в два раза. Последний раз редактировалось DarkSpirit22; 27.05.2022 в 11:29. | 
|  | |
| За это сообщение автора поблагодарили: Logger (5). | |
| Теги | 
| faq, tax, налоги, оптимизация, производительность | 
|  | 
|  Похожие темы | ||||
| Тема | Ответов | |||
| Вызов метода базового класса | 15 | |||
| jerry-dynamics: tax codes | 0 | |||
| Вызов класса из другого класса | 9 | |||
| передача курсора в два класса | 3 | |||
| Запустить метод класса | 2 | |||
| 
 |