К статье
Практический материал

Администрирование · 11 мин

Разделение итогов в 1С: для чего нужен этот механизм

Разделение итогов в 1С: что это, для чего используется, влияние на параллельность проведения документов и производительность. Настройка, риски и проверка результата.

Разделение итогов — это механизм платформы 1С:Предприятие, который определяет, как система хранит и обновляет предрасчитанные итоги по регистрам накопления. От него напрямую зависит, могут ли два пользователя одновременно проводить документы по одному и тому же регистру, или один сеанс будет ждать завершения другого. В базах с десятками активных пользователей правильная настройка этого механизма часто становится разницей между комфортной работой и постоянными ошибками блокировок.

Механизм появился как ответ на типичную проблему: когда документ проводится, система пересчитывает итоги регистра, и на этот период таблица итогов блокируется. Если итоги хранятся «в одну строку» на весь регистр, параллельное проведение двух документов невозможно — второй сеанс встаёт в очередь. Разделение итогов заставляет платформу хранить отдельные строки итогов для каждого сеанса, что снимает взаимные блокировки ценой некоторого усложнения хранения.

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

Что такое итоги регистра и зачем их разделять

Регистры накопления в 1С хранят не только движения документов, но и заранее рассчитанные итоги — остатки и обороты по измерениям. Именно благодаря итогам отчёт по остаткам склада формируется быстро, а не перебором миллионов записей движений. Когда документ проводится, платформа обновляет и движения, и связанные с ними итоги — эти операции выполняются в одной транзакции.

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

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

Как механизм работает на практике

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

Чтение итогов при этом немного усложняется. Чтобы получить остаток, система суммирует строки по всем разделителям. На небольшом количестве сеансов это незаметно, но при сотнях накопленных разделителей чтение может замедляться. Поэтому платформа периодически выполняет свёртку — объединяет строки с разными разделителями в одну. Свёртка обычно происходит при пересчёте итогов, обновлении итогов или в фоновых операциях обслуживания.

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

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

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

Типичные сценарии, где разделение итогов оправдано: оптовая торговля с одновременным вводом десятков реализаций по одним складам, производственный учёт с массовым проведением документов списания материалов, складской учёт с интенсивной работой кладовщиков в WMS-режиме. Во всех этих случаях документы часто затрагивают одни и те же измерения регистров.

Обратная ситуация: небольшая база на 5–10 пользователей, где документы проводятся эпизодически и по разным складам или организациям. Здесь конкуренции за итоги практически нет, и включение разделителя только добавит строк в таблицы итогов и лишнюю работу при чтении. То же относится к базам, где основная нагрузка — отчёты, а не проведение.

Маршрут решения

Как выбрать действие

В технологическом журнале регулярно видны таймауты и конфликты блокировок на таблицах итогов регистровВключайте разделение итогов по проблемным регистрам и контролируйте результат
Ошибки блокировок есть, но они связаны с записями движений или справочников, а не итоговРазделение итогов не поможет — анализируйте порядок записи и логику проведения
Пользователей мало, проведение редкое, жалоб на блокировки нетОставьте режим по умолчанию, включение не даст выигрыша
База файловаяМеханизм ориентирован на клиент-серверный вариант; в файловой базе конкуренция решается иначе

Как включить и настроить механизм

Режим разделения итогов настраивается для каждого регистра накопления отдельно. В конфигураторе откройте свойства регистра и найдите параметр «Разделение итогов». Два основных значения: «Выкл» — итоги ведутся без разделителя, и «Вкл» — при обновлении итогов используется разделитель по сеансу. Изменение применяется после обновления конфигурации базы данных.

Для регистров с видом «Остатки» дополнительно важен параметр режима разделения: вариант «Остатки и обороты» означает, что разделитель используется и для таблицы остатков, и для оборотов. В типовых конфигурациях для наиболее нагруженных регистров (товары на складах, расчёты с контрагентами) разделение итогов часто уже включено разработчиками — перед изменением проверьте текущее состояние.

После изменения настройки желательно выполнить пересчёт итогов по регистру: в режиме 1С:Предприятие через «Операции → Управление итогами» или средствами тестирования и исправления. Это приведёт таблицы итогов в согласованное состояние и выполнит свёртку накопленных данных.

Порядок действий
  1. 1
    Зафиксируйте проблему: соберите из технологического журнала факты конфликтов блокировок на итогах конкретных регистров
  2. 2
    Сделайте резервную копию базы или выполните настройку сначала на копии
  3. 3
    В конфигураторе для проблемного регистра накопления установите «Разделение итогов» в значение «Вкл»
  4. 4
    Обновите конфигурацию базы данных, при необходимости — в монопольном режиме
  5. 5
    Выполните пересчёт итогов по регистру через «Управление итогами»
  6. 6
    Наблюдайте за работой в пиковые часы: количество конфликтов блокировок должно снизиться

Ограничения и побочные эффекты

Первый побочный эффект — рост объёма таблиц итогов. Каждый активный сеанс создаёт свои строки, и пока не выполнена свёртка, количество записей растёт пропорционально числу сеансов. На больших базах это ощутимо увеличивает размер таблиц и время полного пересчёта итогов.

Второй эффект — замедление чтения итогов при большом числе накопленных разделителей. Отчёты и оперативные запросы остатков суммируют больше строк. Если обслуживание (свёртка и пересчёт) не выполняется регулярно, через несколько месяцев можно получить обратную ситуацию: блокировок нет, но отчёты стали медленнее.

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

Как проверить, что настройка помогла

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

Дополнительно контролируйте обратную сторону: время формирования ключевых отчётов по остаткам и размер таблиц итогов. Если конфликты исчезли, а отчёты не замедлились заметно — настройка работает как задумано. Если отчёты просели, проверьте регулярность свёртки итогов и рассмотрите настройку регламентного обслуживания.

Контрольные точки

Как проверить результат

Ошибки конфликтов блокировок в технологическом журнале
Норма

Количество конфликтов на итогах регистров заметно снизилось или сошло к нулю

Тревожный признак

Конфликты остались на прежнем уровне — проблема не в итогах

Время формирования отчётов по остаткам
Норма

Время сопоставимо с показателями до включения разделения

Тревожный признак

Отчёты стали ощутимо медленнее — требуется свёртка итогов и обслуживание

Размер таблиц итогов в СУБД
Норма

Рост умеренный и стабилизируется после пересчётов

Тревожный признак

Таблицы растут без свёртки — обслуживание не выполняется

Типичные ошибки при работе с механизмом

Самая частая ошибка — включение разделения итогов «на всякий случай» по всем регистрам подряд. Это увеличивает объём хранения и нагрузку на чтение там, где конкуренции сеансов никогда не было. Включать следует точечно, по регистрам с подтверждёнными конфликтами.

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

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

Типичные ошибки
01
Включение разделителя по всем регистрам без анализа — лишний объём и нагрузка без выигрыша
02
Ожидание общего ускорения — механизм устраняет только блокировки итогов, а не медленные запросы
03
Отсутствие регламентного пересчёта и свёртки итогов — постепенное замедление отчётов
04
Изменение настройки в рабочей базе без копии и тестирования — риск длительной блокировки пользователей
Итог

Что важно запомнить

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

Частые вопросы

Ускорит ли разделение итогов проведение документов?

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

Нужно ли включать разделение итогов в файловой базе?

Как правило, нет. Механизм ориентирован на клиент-серверную архитектуру, где СУБД управляет блокировками на уровне строк. В файловом варианте конкуренция сеансов устроена иначе, и выигрыша от разделителя практически не будет.

Почему после включения разделения итогов отчёты стали медленнее?

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

Можно ли включить разделение итогов только для части регистров?

Да, и это рекомендуемый подход. Настройка задаётся индивидуально для каждого регистра накопления. Включайте её только для регистров, по которым зафиксированы реальные конфликты блокировок — обычно это регистры товарных остатков и взаиморасчётов.

Что делать, если конфликты блокировок остались после включения?

Значит, источник конкуренции — не итоги. Проанализируйте технологический журнал: какие таблицы фигурируют в конфликтах. Часто причина в блокировках движений, справочников, регистров сведений или в порядке обращения к данным в коде проведения — это решается доработкой логики, а не настройкой итогов.