31.03.2007, 15:17 | #1 |
Участник
|
тупость при удалении из InventJournalTrans
удаляли сегодня инвентаризационный журнал,я громко матюкался когда обнаружил этот тупняк (88000 строк журнала удалялось 4 часа).
итак таблица: InventJournalTrans X++: void delete() { ; ttsbegin; appl.inventUpdateTTSControl().setTTSBeginLock(); super(); if (this.journalType == InventJournalType::Count) InventItemLocation::updateStopCountingJournal(this); InventUpd_DeleteMovement::newMovement(InventMovement::construct(this)).updateNow(); if (this.voucher) { if (this.numOfVoucherLines() == 0) // нас интересует эта строка !!! JournalError::deleteVoucher(tableNum(InventJournalTable),this.journalId,this.voucher); } appl.inventUpdateTTSControl().setTTSCommitLock(); ttscommit; } X++: Integer numOfVoucherLines() { return (select forceplaceholders count(recId) from inventJournalTrans index hint VoucherIdx where inventJournalTrans.journalId == this.journalId && inventJournalTrans.voucher == this.voucher).recId; } X++: // SHiSHok 20070331 boolean voucherLineExist() { return (select firstfast firstonly forceplaceholders recId from inventJournalTrans index hint VoucherIdx where inventJournalTrans.journalId == this.journalId && inventJournalTrans.voucher == this.voucher).recId != 0; } void delete() { ; ttsbegin; appl.inventUpdateTTSControl().setTTSBeginLock(); super(); if (this.journalType == InventJournalType::Count) InventItemLocation::updateStopCountingJournal(this); InventUpd_DeleteMovement::newMovement(InventMovement::construct(this)).updateNow(); if (this.voucher) { // if (this.numOfVoucherLines() == 0) // if (!this.voucherLineExist()) JournalError::deleteVoucher(tableNum(InventJournalTable),this.journalId,this.voucher); } appl.inventUpdateTTSControl().setTTSCommitLock(); ttscommit; }
__________________
--- SHiSHok |
|
|
За это сообщение автора поблагодарили: mazzy (5), belugin (6), kashperuk (3), konopello (2), fialka (1), bobski (1). |
Теги |
inventjournal, оптимизация, производительность, запрос (query) |
|
|