Режим разделения итогов для регистров накопления

#std664

Область применения: управляемое приложение, мобильное приложение, обычное приложение.

1. При проектировании регистра накопления следует помнить, что остатки по одному набору измерений хранятся в одном ресурсе регистра. То есть, степень параллельности при работе с регистром фактически зависит от состава его измерений. Состав измерений необходимо подбирать в соответствии с тем, насколько мелко должны быть «нарезаны» остатки, исходя из прикладной функциональности системы. 

2. В том случае, если состав измерений не позволяет обеспечить необходимую параллельность при работе с регистром, рекомендуется использовать режим разделения итогов аналогично регистрам бухгалтерии.
Следует учитывать, что режим разделения итогов не обеспечит параллельность при контроле остатков по регистру. Если контроль остатков необходим, то следует перенести его как можно ближе к концу транзакции

Рассмотрим в качестве примера регистр накопления ТоварыНаСкладах со следующим составом измерений: 

  
Пример 1

Предположим два пользователя одновременно проводят документы, которые записывают движения в данный регистр накопления. При этом первый пользователь пишет следующий набор записей: 

Склад Номенклатура
1 Основной склад Кресло-качалка
2 Основной склад Кухонный гарнитур "Тинга-2"
3 Склад №2 Мебельный гарнитур "Торэ"

Второй пользователь пишет в этот же регистр следующий набор записей:

Склад Номенклатура
1 Основной склад Мебельный гарнитур "Торэ"
2 Склад №2 Кресло-качалка

Эти наборы записей не содержат строк, совпадающих по значениям всех измерений, поэтому ожидание на блокировке в данном случае не возникнет.

Пример 2

Предположим, что второй пользователь записывает следующий набор записей

Склад Номенклатура
1 Основной склад Кухонный гарнитур "Тинга-2"
2 Склад №2 Кресло-качалка
3 Оптовый склад Спальный гарнитур "Инга-М"

Этот набор записей содержит строку (№1), совпадающую по значениям всех измерений со строкой набора записей первого пользователя (№2).

В этом случае возникнет ожидание на блокировке и один из пользователей будет дожидаться окончания операции другого пользователя, то есть общая производительность системы снизится.

Регистр накопления также поддерживает режим разделения итогов, который позволит в данной ситуации избежать блокировки (см. Пример 3).

Пример 3

Если для данного регистра накопления включен режим разделения итогов, то будет возможна параллельная запись двух наборов, даже в том случае если они содержат одинаковые (по значениям измерений) строки.

Однако, если при этом используется контроль остатков, то режим разделения итогов не даст положительного эффекта. Иначе говоря, режим разделения итогов для регистра накопления работает аналогично регистру бухгалтерии. Для снижения влияния этой блокировки на общую производительность системы нужно перенести контроль остатков как можно ближе к концу транзакции.

См. также