|
12.05.2010, 18:07 | #1 |
Участник
|
Сделал синхронизацию, переиндексацию (для всех таблиц), глоб. компиляцию. Удалил запись в systemSequences кот. относится к PurchParmSubTable. После всего наблюдается след. эффект: джоб работает стабильно, все хорошо до тех пор, пока не делается попыток разнести счет(накладную) по поставщику. после этого опять та же ошибка. Если перезайти в Аксапту, то все повторяется - джоб опять работает и т.д..
А это разве плохо? Я смотрел в отладчике - при разноске счета(накладной) по поставщику PurchFormLettrer.suspendRecIDs вызывается для каждого счета, и все это в одной сессии. |
|
14.05.2010, 12:23 | #2 |
Участник
|
Разобрался. Ключевым моментом оказалось использование разработчиками объекта RecordInsertList для вставки запиесй.
Во время разноски используется метод X++: PurchFormLettrer.suspendRecIDs() Вставка происходит след образом - табл. purchParmTable.insert, внутри Insert вызывается метод X++: purchParmSubTable::createFromPurchParmTable(PurchParmTable _purchParmTable, boolean _insert = true) X++: purchParmSubTable.insert() X++: this.insertPurchParmSubTable(purchParmSubTable) Второй раз вызов createFromPurchParmTable (уже с параметром _insert = true) происходит при отработке метода X++: protected void recordInsertListInsert() { recordInsertPurchParmTable.insertDatabase(); recordInsertPurchParmSubTable.insertDatabase(); recordInsertPurchParmLine.insertDatabase(); recordInsertPurchParmLine_Asset.insertDatabase(); this.removeRecIdSuspension(); } X++: recordInsertPurchParmTable.insertDatabase() А происходит повторный вызов из-за того, что у нас включено логирование на таблице purchParmSubTable (на Insert). Как только отключили логирование все заработало. |
|
|
За это сообщение автора поблагодарили: AlGol (1), lev (2), Ivanhoe (3), gl00mie (5), S.Kuskov (3). |