![]() |
#14 |
Участник
|
Цитата:
при помощи этого поля попытались уменьшить вероятность блокировок. раньше, чтобы найти промежуточную сумму, нужно было сделать find. теперь - нужно сделать sum() с разными Variant. Но фундаментальный механизм работы с промежуточными финансовыми итогами не изменился. 1. программист говорит - вставь запись (ключевые-поля, изменения-сумм) 2. поскольку у сумм установлено свойство relative 2.1. система ищет существующую запись с этими ключевыми полями 2.2. если находит, то выполняет update полей со свойством relative (со всеми полагающимися блокировками) 2.3. если не находит, то выполняет insert разница между старыми и новыми версиями только в случайном параметре Variant. Этот параметр уменьшает вероятность попадания на шаг 2.2. Но ни в коем случае не исключает этот шаг. Цитата:
Но эта операция - очень тяжелая. Она блокирует все и надолго. Она скорее призвана исправить ситуации, нежели является регламентной. Промежуточные итоги могут содержать неактуальные значения в двух случаях: 1. программист использовал doUpdate, doInsert, doDelete вместо нормальных Update, Insert, Delete на таблице LedgerTrans 2. программист изменял записи в LedgerTrans прямыми запросами в SQL. Если выполняется нормальная и штатная работа с LedgerTrans, то система всегда держит промежуточные итоги актуальными. Цитата:
![]() write - это тоже наследие конкорда. ты попробуй ![]() Цитата:
попробуй. создай свою табличку и изнасилуй ее ![]() Цитата:
при таком подходе получается, что у системы никогда балансы неактуальны. не думаю, что на такое пошли бы. не знаю. |
|
Теги |
ledgerbalance, ledgerbalancesdimtrans, ledgerbalancestrans, главная книга, итоги, сальдо, crm2011 |
|
|