Это поле добавлено в версии 3.0 для уменьшения взаимных блокировок.
Грубо говоря - идея следующая:
В старой Axapta (2.5/2.1) обороты по счетам и аналитикам накапливались в таблицах ledgerBalances и ledgerBalancesDim в разрезе счетов и периодов и в разрезе счетов, периодов и аналитик соответственно. Классы разноски в ledgerTrans после записи в саму ledgerTrans обновляли обороты в этих таблицах. Соответственно - если я начинал разносить журнал из 5000 строк, система обновляла одну из строк в ledgerBalances (скажем - по счету 60.01) и эта строка блокировалась до конца транзакции. При этом все остальные транзакции, которые пытались выполнить проводку на счет 60.01, ожидали ее окончания. Ну а поскольку разноска журнала из 5000 строк может занимать эдак часик, а то и два, все это приводило к высокому уровню блокировок, и большому количеству перекуров среди пользователей.
В версии 3.0 эти таблицы заменили на таблицы ledgerBalancesTrans и ledgerBalancesDimTrans. При этом - обороты по счету могут записываться в любую из 20 строк которые этому счету соответствуют. То есть - при обновлении ledgerTrans система более или менее случаным (в зависимости от номера сессии) образом выбирает одну из этих строк и пишет туда сумму оборотов. Благодаря этому - вероятность взаимных блокировок уменьшается в 20 раз. В то же время - если классам LedgerBalanceDim* или подобным необходимо посчитать обороты за период, то в общем-то, не возникает большой разницы между чтением одной строки из таблицы и чтением 20 строк из той же таблицы (Серверное железо-то теперь очень даже мощное). Так что тут проблем с производительностью не возникает.
|