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

Системный администратор 1С v8.3 (Обычные формы) 1C:Бухгалтерия Бухгалтерский учет
← На главную

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

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

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

Чтобы понять его пользу, сравним два сценария работы:

  1. Без разделения итогов. Когда несколько пользователей одновременно проводят документы, затрагивающие одну и ту же аналитику (например, один и тот же счет и субконто), система пытается обновить одну и ту же запись в таблице итогов регистра. Первый пользователь, начавший транзакцию, блокирует эту запись. Остальные пользователи вынуждены ждать, пока его транзакция завершится. Если ожидание затягивается, система выдает ошибку «Конфликт блокировки при выполнении транзакции» или ошибку таймаута. В результате работа замедляется, а пользователи недовольны.
  2. С разделением итогов. Когда режим включен, платформа действует хитрее. Вместо того чтобы всем пользователям «толкаться» у одной записи в таблице итогов, система для каждой параллельной транзакции создает новую запись. Эти записи помечаются специальным служебным полем-разделителем (_Splitter). Таким образом, пользователи не блокируют друг друга и могут параллельно сохранять свои данные. Когда системе нужно получить актуальный остаток, она просто суммирует все эти «разделенные» записи для нужной аналитики.

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

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

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

1. Сохранность данных и актуальность итогов.

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

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

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

2. Главный риск — производительность и блокировки.

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

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

Почему на самом деле зависло регламентное задание?

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

Рассмотрим более вероятные причины таких зависаний:

Вывод: отключение разделения итогов — это не решение, а лишь обходной маневр. Для настоящего решения проблемы необходимо анализировать технологический журнал 1С и средства мониторинга СУБД (например, Activity Monitor в MS SQL Server), чтобы найти источник блокировки.

Как правильно вернуть всё обратно?

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

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

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

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

← На главную