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

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

Режим разделения итогов в 1С: назначение, настройка и типичные ошибки

Что такое режим разделения итогов в 1С, чем отличаются варианты «при проведении» и «при записи», как выбрать режим и проверить результат.

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

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

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

Что именно делает режим разделения итогов

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

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

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

Два значения режима: «При проведении» и «При записи»

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

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

КритерийПри проведении (разделение вкл.)При записи (разделение выкл.)
Параллельное проведениеНизкий риск блокировокВысокий риск конфликтов транзакций
Чтение итоговСуммирование по разделам, чуть сложнееЧтение из единой таблицы
Рекомендуемое применениеРегистры с интенсивной записью, много пользователейРегистры с редкой записью или строгими требованиями к актуальности итогов
Значение по умолчанию в типовыхИспользуется для большинства регистровПрименяется точечно, по решению разработчиков конфигурации

Как выбрать режим для конкретного регистра

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

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

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

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

По регистру проводят документы несколько пользователей одновременноОставьте или установите режим «При проведении» (разделение включено)
В журнале регистрации часто встречаются ошибки конфликта блокировок при проведенииПроверьте, что для регистра включено разделение итогов, и пересчитайте итоги
Регистр заполняется редко, одним потоком, итоги читаются очень частоДопустимо рассмотреть режим «При записи», предварительно протестировав на копии базы
Регистр входит в типовую конфигурацию на поддержкеНе меняйте режим без крайней необходимости — это усложнит обновления

Как посмотреть и изменить режим в конфигураторе

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

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

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

Связь с пересчётом и актуальностью итогов

Разделение итогов часто путают с пересчётом итогов, но это разные операции. Пересчёт итогов (через «Тестирование и исправление» или программно методом ПересчитатьИтоги) восстанавливает итоговые таблицы по данным движений и нужен при расхождении остатков. Смена режима разделения меняет саму структуру хранения итогов, после чего пересчёт обычно выполняется автоматически в ходе реструктуризации.

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

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

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

Проведение документов по регистру
Норма

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

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

Ошибки «Конфликт блокировок» или «Превышено время ожидания» появляются регулярно

Остатки в отчётах
Норма

Остатки совпадают с данными до смены режима и с суммой движений

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

Остатки расходятся с движениями или обнулились

Скорость отчётов по регистру
Норма

Время формирования отчётов не выросло заметно

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

Отчёты стали формироваться значительно медленнее

Типичные ошибки и ограничения

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

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

Типичные ошибки
01
Отключение разделения итогов на базе с параллельной работой — резкий рост ошибок конфликта блокировок
02
Смена режима без резервной копии и теста на копии — риск длительного простоя при реструктуризации
03
Ожидание, что смена режима исправит расхождения остатков — для этого нужен пересчёт итогов
04
Изменение свойства типового регистра без документирования — проблемы при обновлении конфигурации
05
Игнорирование монопольного режима — обновление конфигурации БД не выполнится при активных сеансах

FAQ

Какой режим разделения итогов выбрать для нового регистра накопления?

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

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

Потому что все транзакции проведения стали обновлять одни и те же строки единой таблицы итогов. При одновременном проведении документов с совпадающими измерениями (товар, склад, организация) транзакции блокируют друг друга. Решение — вернуть режим «При проведении» и пересчитать итоги.

Нужно ли пересчитывать итоги после смены режима разделения?

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

Влияет ли режим разделения итогов на скорость отчётов?

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

Можно ли менять режим разделения итогов в типовой конфигурации?

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

Чем разделение итогов отличается от управляемых блокировок?

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

Итог

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

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