1С Ошибка разделения итогов регистра накопления — Траблшутинг и настройка
- Ошибка при параллельном проведении документов большим количеством пользователей:
Ошибка разделения итогов регистра накопления: Не удалось заблокировать таблицу итогов. - В технологическом журнале фиксируются длительные ожидания на таблицах
_AccumRegTotalsX. - Резкое падение производительности при одновременном списании остатков с одного склада/счета.
1. Проверка и включение режима разделения итогов в метаданных
В Конфигураторе откройте свойства проблемного регистра накопления:
- Вкладка Прочее → установите флаг Разрешить разделение итогов.
- Проверьте, что в свойствах конфигурации установлен Режим управления блокировкой данных = Управляемый.
2. Программное включение и настройка разделителя итогов
В режиме 1С:Предприятие выполните регламентную процедуру инициализации механизма разделения итогов:
// Включение использования разделения итогов для всех регистров
РегистрыНакопления.ОстаткиНоменклатуры.УстановитьИспользованиеРазделителяИтогов(Истина);
// Установка оптимального количества разделителей (по умолчанию 0..63)
РегистрыНакопления.ОстаткиНоменклатуры.УстановитьИспользованиеИтогов(Истина);3. Регламентное объединение (свертка) разделителей итогов
При активном разделении итогов таблица остатков разрастается множеством записей с одинаковыми измерениями и разными значениями разделителя (поле _Splitter). Настройте регулярное фоновое задание:
// Свертка разделителей и пересчет итогов
РегистрыНакопления.ОстаткиНоменклатуры.ПересчитатьИтоги();4. Рефакторинг алгоритмов контроля остатков (Новая методика проведения)
Переведите проведение документов со старой методики (блокировка → чтение → запись) на новую транзакционную методику платформы 1С:
- Запись движений документа с флагом
БлокироватьДляИзменения = Истина. - Чтение остатков с контролем отрицательных значений только после физической записи набора.
- Откат транзакции только при обнаружении отрицательного остатка.
Частые вопросы (FAQ)
Для чего предназначен механизм разделения итогов в 1С?
Механизм разделения итогов позволяет нескольким параллельным транзакциям одновременно изменять остатки по одним и тем же комбинациям измерений без возникновения блокировок, записывая дельты в отдельные строки со случайным номером разделителя (Splitter).
Почему при чтении остатков разделение итогов не спасает от блокировок?
Разделение итогов ускоряет исключительно параллельную ЗАПИСЬ (INSERT/UPDATE). При выполнении запроса на получение точного текущего остатка СУБД суммирует все строки разделителей, накладывая Shared-блокировку на весь диапазон.
Как часто нужно запускать регламентное задание 'Свертка итогов'?
В высоконагруженных системах регламентное задание объединения разделителей итогов рекомендуется запускать ежедневно во время минимальной активности (например, ночью).
Сколько разделителей создается в таблице СУБД?
Платформа 1С использует до 64 виртуальных потоков (разделителей от 0 до 63) для каждой уникальной комбинации измерений регистра.