Что значит «разрешить разделение итогов» в 1С?

База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Что значит «разрешить разделение итогов» в 1С?

Просмотр 1 ветки ответов
  • Автор
    Записи
    • #38888
      Фото аватараOdineski
      Участник

        Что означает «разрешить разделение итогов» в настройках регистра накопления?

      • #38889
        bot_avaOdin — Одинэсник
        Участник

          «Разрешить разделение итогов» означает разрешить платформе хранить итоги регистра не в одной общей записи, а в нескольких отдельных записях, если несколько сеансов одновременно записывают движения по одним и тем же наборам измерений.

          Это механизм повышения параллельности записи в:

          — регистрах накопления;
          — регистрах бухгалтерии.

          ## Проблема без разделения итогов

          Допустим, несколько пользователей одновременно проводят документы по одному складу и одной номенклатуре.

          Регистр накопления хранит итог по комбинации:

          Без разделения итогов несколько транзакций могут одновременно пытаться изменить одну и ту же итоговую запись:

          Одна транзакция хочет уменьшить итог на 5, другая на 10. Им обеим нужно изменить одну запись итогов. В результате повышается вероятность:

          — ожиданий блокировок;
          — взаимоблокировок;
          — тайм-аутов;
          — снижения параллельности проведения документов.

          ## Что происходит при включенном разделении итогов

          При включенном механизме платформа может создать отдельные записи итогов для разных параллельно работающих транзакций:

          При чтении итогового значения платформа учитывает все такие записи:

          Для прикладного решения результат остается тем же. Пользователь не работает с «разделенными» итогами напрямую. Платформа сама объединяет их при получении итогов.

          ## Что именно разделяется

          Разделяются не движения регистра и не данные по пользователям. Разделяются внутренние записи таблиц итогов.

          Обычная структура выглядит для прикладного решения примерно так:

          При разделении итогов внутри базы могут появиться несколько записей для одной комбинации измерений. У этих записей есть внутренний признак разделения.

          В прикладном коде вы по-прежнему получаете обычный итог:

          Платформа сама суммирует необходимые части.

          ## Важное свойство

          Разделение итогов:

          — повышает параллельность записи;
          — уменьшает конкуренцию транзакций за одну запись итогов;
          — обычно ускоряет проведение при одновременной работе пользователей;
          — может увеличить объем таблиц итогов;
          — может несколько усложнить получение и обслуживание итогов;
          — не заменяет управляемые блокировки при контроле остатков.

          Основная формула:

          ## Почему иногда говорят «быстрее читает, медленнее записывает»

          Здесь нужно аккуратно понимать формулировку.

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

          Но у механизма есть цена:

          — при записи могут создаваться дополнительные записи;
          — при чтении платформа может учитывать несколько частей итогов;
          — итоговые таблицы могут занимать больше места;
          — при обслуживании и пересчете итогов требуется больше работы.

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

          ## Связь с использованием итогов

          Это разные настройки.

          ### Использование итогов

          Определяет, будут ли использоваться предварительно рассчитанные итоги для ускорения получения остатков и оборотов.

          ### Разрешение разделения итогов

          Определяет, может ли платформа хранить изменения итогов в нескольких разделенных записях при параллельной записи.

          Возможны разные состояния:

          или:

          Для оперативного учета обычно нужны оба механизма, но решение зависит от нагрузки и особенностей регистра.

          ## Где настраивается

          В конфигураторе свойство находится у регистра накопления, в свойствах регистра:

          После разрешения в конфигурации фактический режим использования также может управляться в пользовательском режиме через обработку управления итогами.

          То есть важно различать:

          1. Разрешено в конфигурации
          Платформа может использовать разделение итогов для данного регистра.

          2. Включено в информационной базе
          Механизм реально используется в текущем режиме работы базы.

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

          ## Как это связано с управляемыми блокировками

          Это два разных механизма.

          ### Разделение итогов

          Снижает конкуренцию при записи итоговых данных регистра.

          ### Управляемая блокировка

          Не позволяет нескольким документам одновременно проверить и изменить один и тот же остаток.

          Например, контроль остатков должен выполняться с блокировкой:

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

          Поэтому:

          ## Когда разделение итогов имеет смысл

          Обычно его рассматривают для регистров, в которые одновременно пишут много пользователей:

          — остатки товаров;
          — товары на складах;
          — взаиморасчеты;
          — денежные средства;
          — заказы и резервирование;
          — регистры, по которым часто проводятся документы в параллельных сеансах.

          Особенно актуально, когда:

          — много пользователей одновременно проводят документы;
          — документы пишут движения по одним складам и товарам;
          — есть тайм-ауты блокировок;
          — возникают взаимоблокировки на регистрах;
          — в технологическом журнале видны ожидания блокировок при записи итогов.

          ## Когда не стоит включать без проверки

          Не следует включать разделение итогов автоматически на всех регистрах.

          Причины:

          — увеличивается объем итоговых таблиц;
          — усложняется работа с итогами;
          — дополнительная оптимизация может быть не нужна при небольшой нагрузке;
          — проблема может быть не в итогах, а в неправильной блокировке, длинной транзакции или записи последовательностей;
          — при плохом алгоритме проведения разделение итогов не исправит ошибку прикладной логики.

          Сначала анализируют:

          1. какие документы пишут в регистр;
          2. сколько пользователей проводят их одновременно;
          3. по каким измерениям возникает конкуренция;
          4. есть ли ожидания и взаимоблокировки;
          5. правильно ли установлены управляемые блокировки;
          6. не удерживается ли транзакция дольше необходимого.

          ## Пример для экзамена

          Предположим, регистр накопления:

          Измерения:

          Ресурс:

          Два документа одновременно записывают движения по:

          Без разделения итогов они конкурируют за одну итоговую запись.

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

          Фраза для экзамена:

          > Разрешение разделения итогов позволяет повысить параллельность работы с регистром накопления при одновременной записи движений. Изменения итогов могут записываться в разные записи, а при чтении данные суммируются. Механизм уменьшает конкуренцию за итоговые записи, но увеличивает объем хранимых итоговых данных и не заменяет блокировку при контроле остатков.

          Рекомендую посмотреть здесь: https://helpf.pro/faq/view/545.html

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С