Использование механизма разделения итогов регистров накопления в 1С
- Массовые ожидания на блокировках при одновременном проведении документов несколькими десятками пользователей.
- События
TLOCKSсо временем ожидания свыше 20-40 секунд на таблицах итогов регистров накопления (_AccumRgT). - Ошибки параллелизма в высоконагруженных операциях списания со склада или взаиморасчетов.
1. Принцип работы механизма разделения итогов
По умолчанию итоги регистра накопления хранятся в одной записи на каждую комбинацию измерений. При параллельной записи двух документов по одному товару второй документ ждет завершения транзакции первого. Разделение итогов создает до 50 параллельных записей (слотов) в таблице итогов, исключая взаимоблокировку.
2. Включение разделения итогов в конфигураторе 1С
- Откройте свойства регистра накопления;
- Перейдите на вкладку Прочие;
- Установите флаг Использовать разделение итогов;
- (Опционально) Задайте режим разделения итогов для конкретных измерений.
3. Программное включение и управление через код 1С
// Включение использования разделения итогов для всех регистров
Для Каждого Рег Из Метаданные.РегистрыНакопления Цикл
РегистрыНакопления[Рег.Имя].УстановитьИспользованиеРазделенияИтогов(Истина);
КонецЦикла;4. Регламентное объединение (схлопывание) разделенных итогов
Для предотвращения разрастания таблицы итогов настройте регламентное задание 1С «Слияние разделенных итогов» (раз в сутки в нерабочее время):
// Программный вызов регламентной процедуры слияния
РегистрыНакопления.ТоварыНаСкладах.СлитьРазделенныеИтоги(); Частые вопросы (FAQ)
Замедляет ли разделение итогов операцию чтения остатков?
Да, чтение остатков становится немного медленнее, так как СУБД суммирует значения по всем слотам разделения (до 50 записей). Однако это полностью окупается устранением очередей на запись.
Сколько слотов разделения создает платформа 1С?
Платформа 1С использует псевдослучайный номер слота от 0 до N (по умолчанию до 50), распределяя параллельные транзакции по разным физическим строкам таблицы СУБД.
Нужно ли включать разделение итогов для регистров сведений?
Нет, механизм разделения итогов применяется исключительно к регистрам накопления и регистрам бухгалтерии (таблицы агрегированных итогов).
Что произойдет, если не выполнять регламентное слияние итогов?
Таблица итогов регистра разрастется в десятки раз, что приведет к деградации скорости формирования отчетов и расчета остатков.