Попробуйте также улучшить код.
Например конструкцию
X++:
while select forupdate tmpInventJournalTrans
{
tmpInventJournalTrans.delete();
}
замените на
X++:
delete_from tmpInventJournalTrans;
Помимо удаления
select forupdate используется, когда вы хотите обновить запись через метод update(). Используя вставку записей через метод insert(), вам незачем что-либо выбирать оператором
select.
Поэтому в этом куске кода выборка для обновлений будет лишней.
X++:
while select ITrans
where iTrans.JournalId == ijourTo.JournalId
{
select forupdate tmpInventJournalTrans; // <- лишний код
ttsbegin;
tmpInventJournalTrans.clear();
tmpInventJournalTrans.ItemId = itrans.ItemId;
tmpInventJournalTrans.Qty = abs(itrans.Qty);
tmpInventJournalTrans.InventDimId = itrans.inventDimId;
tmpInventJournaltrans.LedgerAccountIdOffset = itrans.LedgerAccountIdOffset;
tmpInventJournaltrans.insert();
ttscommit;
//info(tmpInventJournalTrans.ItemId);
}