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

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

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

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

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

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

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

Что такое итоги регистра и почему они становятся узким местом

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

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

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

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

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

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

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

Для чего на практике включают разделение итогов

Основной и практически единственный сценарий — устранение ошибок блокировок при массовом параллельном проведении документов. Типичная картина: в базе работает 30–100 пользователей, в конце дня или в часы отгрузки одновременно проводятся десятки реализаций и перемещений, и журнал регистрации заполняется ошибками «Конфликт блокировок» по таблицам итогов регистров.

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

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

Ошибки в журнале регистрацииКонфликт блокировок при проведении

Если ошибки ссылаются на итоги регистров накопления — это прямой кандидат на включение режима

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

При 3–5 пользователях конфликты редки, эффект от режима будет минимальным

Время пиковой нагрузкиПроведение подолгу «висит» в определённые часы

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

Тип базыКлиент-серверный вариант

В файловой базе параллельность и так ограничена, разделение итогов почти ничего не даст

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

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

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

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

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

Влияние на производительность: что выигрываем и чем платим

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

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

Сравнение вариантов

Без разделения итогов

Подходит для небольших баз с малым числом пользователей. Чтение итогов максимально быстрое, но параллельное проведение вызывает конфликты блокировок

С разделением итогов

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

Важно понимать: разделение итогов не ускоряет проведение одного документа само по себе. Если база медленная из-за неоптимальных запросов, нехватки индексов или слабого сервера СУБД, режим эту проблему не решит. Он устраняет конкретное узкое место — конкуренцию за записи итогов.

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

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

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

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

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

В журнале регистрации регулярные ошибки конфликта блокировок по итогам регистра при параллельном проведенииВключите разделение итогов для проблемного регистра
База файловая или работает до 5–10 пользователей без ошибок блокировокОставьте режим выключенным — выигрыша не будет
Отчёты по остаткам после включения стали заметно медленнееПроверьте обслуживание базы и актуальность итогов; при отсутствии эффекта от режима — отключите его обратно
Медленное проведение без ошибок блокировокИщите причину в запросах, индексах и сервере СУБД — разделение итогов здесь не поможет

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

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

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

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

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

Как проверить результат после включения

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

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

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

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

Журнал регистрации в часы пик
Норма

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

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

Количество конфликтов не изменилось — причина, вероятно, не в итогах

Отчёт по остаткам регистра
Норма

Время формирования сопоставимо с прежним

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

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

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

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

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

Ошибки сохраняются и ссылаются на те же таблицы

Размер базы
Норма

Рост умеренный и ожидаемый

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

Резкий рост служебных таблиц без регламентного обслуживания

Перед включением режима полезно включить технологический журнал с событием TLOCK или собрать статистику ожиданий на блокировках средствами СУБД. Так вы точно увидите, какие регистры дают основную долю конфликтов, и включите разделение итогов точечно, а не вслепую.
ПЗ
Практическое замечание

Частые вопросы о разделении итогов

Разделение итогов ускорит работу 1С в целом?

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

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

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

Можно ли включить режим на рабочей базе без остановки работы?

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

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

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

Разделение итогов и управляемые блокировки — это одно и то же?

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

Для каких регистров включать режим в первую очередь?

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

Итог

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

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