Также решил воспользоваться советом CDR и модифицировал методы :
InventTrans.Update()
InventTrans.Insert()
InventTrans.Delete()
поставив тело каждого метода в блок try и написав такой блок catch в каждом методе :
X++:
catch (Exception::UpdateConflict)
{
// warning(this.GRD_getWarningStr4UpdateConflict());
throw Exception::UpdateConflictNotRecovered;
}
catch (Exception::DuplicateKeyException)
{
// warning(this.GRD_getWarningStr4DuplicateKeyException());
throw Exception::DuplicateKeyExceptionNotRecovered;
}
При такой модификации ошибка расхождения InventTrans и InventSum не возникнет, даже используя джоб
Развалились InventSum - InventTrans
Так пожалуй будет надежней.
Нельзя полагаться на то, что никто из разработчиков не ошибется при обработке исключений, для кода содержащего InventTrans.Update()