Администрирование · 10 мин
Агрегаты регистров накопления в 1С: что это и как их использовать
Агрегаты регистров накопления в 1С: что это такое, как включить и настроить, когда они ускоряют отчёты, ограничения, типичные ошибки и ответы на вопросы.
Агрегаты регистров накопления — это механизм платформы 1С:Предприятие, который хранит заранее рассчитанные итоги по оборотным регистрам накопления. Вместо того чтобы при каждом запросе пересчитывать обороты по всей таблице движений, система обращается к готовым агрегированным данным, и отчёт строится заметно быстрее.
Механизм актуален для баз с большим объёмом движений: сотни тысяч и миллионы записей в регистрах товаров, продаж, взаиморасчётов. На небольших базах эффект почти незаметен, а на крупных разница в скорости формирования отчёта может составлять десятки раз.
Агрегаты — не универсальное ускорение, а инструмент с чёткими условиями применения. Они работают только для оборотных регистров накопления и только тогда, когда запрос обращается к виртуальной таблице оборотов с отбором по измерениям, входящим в агрегат. Ниже разберём устройство механизма, порядок настройки и ограничения.
Что такое агрегаты и как они устроены
Оборотный регистр накопления хранит движения (приходы и расходы) в разрезе измерений: номенклатура, склад, контрагент, период. Когда отчёт запрашивает обороты за месяц по группе товаров, платформа без агрегатов суммирует все подходящие строки таблицы движений. Чем больше строк, тем дольше расчёт.
Агрегат — это дополнительная служебная таблица, в которой обороты уже просуммированы по выбранному набору измерений и по периодам. Например, агрегат по измерению «Номенклатура» содержит готовые обороты по каждому товару за каждый период. Запрос к виртуальной таблице оборотов с отбором по номенклатуре платформа выполнит по этой компактной таблице, а не по полному регистру.
Для одного регистра можно создать несколько агрегатов с разными составами измерений. Платформа автоматически выбирает оптимальный агрегат под конкретный запрос: чем точнее агрегат совпадает с отборами запроса, тем эффективнее выборка.
В каких случаях агрегаты дают эффект
Основной сценарий — отчёты и запросы к виртуальной таблице «Обороты» оборотного регистра накопления на базе с большим числом записей. Типичные примеры: отчёты по продажам, оборачиваемости товаров, взаиморасчётам за длительные периоды.
Эффект зависит от соотношения объёма данных и числа периодов. Если в регистре миллионы строк, а агрегат сжимает их до тысяч суммарных записей, ускорение существенное. Если строк немного, выигрыш не окупит затрат на хранение и обновление агрегатов.
Агрегаты не ускоряют запросы к остаткам. Для регистров остатков платформа использует собственную таблицу итогов, и механизм агрегатов там просто не применяется. Также агрегаты не помогают, если запрос обращается к физической таблице движений напрямую, а не к виртуальной таблице оборотов.
Когда включать агрегаты
Как включить и настроить агрегаты в конфигураторе
Настройка выполняется в конфигураторе и требует монопольного доступа к базе при обновлении структуры. Порядок действий следующий.
Откройте конфигуратор, найдите нужный оборотный регистр накопления в дереве конфигурации и откройте его свойства. На вкладке, связанной с агрегатами (в типовых интерфейсах — команда «Агрегаты» в палитре свойств или контекстном меню), установите флаг использования агрегатов и отметьте измерения, по которым нужны предрасчитанные итоги.
После изменения настроек обновите конфигурацию базы данных. Платформа создаст таблицы агрегатов и выполнит первоначальное построение — на больших регистрах это может занять продолжительное время, поэтому операцию планируют на нерабочие часы.
- 1Сделайте резервную копию базы перед изменением структуры
- 2Откройте конфигуратор и найдите оборотный регистр накопления
- 3В свойствах регистра включите использование агрегатов и выберите нужные измерения
- 4Обновите конфигурацию базы данных в нерабочее время
- 5Выполните первоначальное построение агрегатов
- 6Проверьте скорость целевого отчёта до и после на реальном периоде
Обновление агрегатов и режимы работы
Агрегаты не обновляются автоматически при каждом проведении документа — это отличает их от итогов регистров. Данные в агрегатах актуализируются специальной операцией обновления, которую запускают вручную, из кода или регламентным заданием.
Существует два подхода к актуальности. Первый — периодическое обновление по расписанию, например ночью: отчёты днём работают быстро, но данные агрегатов отстают от текущих движений. Второй — обновление перед формированием отчёта: данные точные, но пользователь ждёт перестроения.
На практике чаще выбирают ночное регламентное обновление, а в отчётах явно указывают, по состоянию на какой момент рассчитаны обороты. Для оперативных отчётов, где важна актуальность до минуты, агрегаты либо не используют, либо комбинируют с обычным расчётом по последнему неагрегированному периоду.
Ограничения и типичные ошибки
Главное ограничение — агрегаты применяются только к оборотным регистрам накопления и только к виртуальной таблице оборотов. Запросы к остаткам, к физической таблице регистра и к регистрам сведений механизм не ускоряет.
Второе ограничение — состав измерений. Если отчёт отбирает данные по измерению, не включённому ни в один агрегат, платформа будет считать обороты обычным способом. Поэтому состав агрегатов проектируют под реальные отчёты, а не «про запас».
Третий момент — расход ресурсов. Каждый агрегат — это дополнительное дисковое пространство и время на обновление. На регистре с десятком измерений включение всех возможных комбинаций способно замедлить систему сильнее, чем ускорить отчёты.
Как проверить, что агрегаты реально работают
Простой способ — замерить время формирования целевого отчёта до включения агрегатов и после построения. Замер делайте на одном и том же периоде и при сопоставимой загрузке сервера, иначе сравнение некорректно.
Более точный метод — технологический журнал или план запроса на стороне СУБД. Если платформа использует агрегат, запрос обращается к таблице агрегатов, а не к полной таблице движений, и число обрабатываемых строк резко падает.
Дополнительно проверьте корректность данных: сравните обороты по отчёту, построенному с агрегатами, с контрольным расчётом без них на том же периоде. Значения должны совпадать при актуальном состоянии агрегатов.
Как проверить результат
Заметно сократилось после построения агрегатов
Не изменилось — вероятно, запрос не попадает в агрегат или регистр небольшой
Обороты с агрегатами и без них идентичны на контрольном периоде
Расхождения — агрегаты устарели, требуется обновление
Обновление выполняется в нерабочее время и не мешает пользователям
Обновление запускается днём и блокирует работу
Альтернативы агрегатам
Если агрегаты по какой-то причине не подходят, есть другие способы ускорить отчёты по оборотам. Самый распространённый — оптимизация самого запроса: корректные отборы, отказ от соединений с лишними таблицами, использование параметров виртуальной таблицы вместо фильтрации после выборки.
Второй вариант — собственные служебные регистры сведений или накопления, в которые обороты сворачиваются регламентным заданием под конкретный отчёт. Это требует разработки, но даёт полный контроль над составом данных и моментом актуализации.
Третий путь — архитектурный: разнесение оперативного учёта и аналитики, вынос тяжёлой отчётности в отдельную копию базы или внешнее хранилище данных. Это оправдано на очень крупных внедрениях, где даже агрегаты не справляются с нагрузкой.
Сравнение подходов к ускорению отчётов по оборотам
Штатный механизм без разработки; подходит для оборотных регистров и типовых отчётов, но требует обновления и места
Бесплатно и быстро внедряется, но предел ускорения ограничен объёмом данных
Гибкий контроль состава и актуальности, но требует разработки и сопровождения
Снимает нагрузку с оперативной системы, но усложняет инфраструктуру и обмены
Часто задаваемые вопросы
Агрегаты ускоряют отчёты по остаткам?
Нет. Механизм агрегатов работает только с оборотными регистрами накопления и виртуальной таблицей оборотов. Для остатков платформа использует собственные таблицы итогов, и их скорость оптимизируется другими средствами: актуальностью итогов, структурой запроса, индексами.
Нужно ли перепроводить документы после включения агрегатов?
Нет. Агрегаты строятся по уже существующим движениям регистра. После включения достаточно выполнить первоначальное построение агрегатов — платформа сама просуммирует накопленные данные без перепроведения документов.
Как часто нужно обновлять агрегаты?
Частота зависит от требований к актуальности отчётов. Чаще всего настраивают регламентное обновление раз в сутки в нерабочее время. Если отчёты должны отражать движения в реальном времени, агрегаты для таких сценариев лучше не использовать.
Сколько агрегатов можно создать для одного регистра?
Платформа позволяет создать несколько агрегатов с разными наборами измерений. Практический предел определяется здравым смыслом: каждый агрегат занимает место и увеличивает время обновления, поэтому создают только те комбинации, которые реально используются в отчётах.
Почему после включения агрегатов отчёт не стал быстрее?
Частые причины: запрос обращается к физической таблице движений, а не к виртуальной таблице оборотов; отбор идёт по измерению, не входящему ни в один агрегат; агрегаты не построены или устарели; объём регистра слишком мал, чтобы ускорение было заметным.
Агрегаты занимают много места в базе?
Дополнительный объём зависит от числа агрегатов и кардинальности измерений. Каждый агрегат компактнее исходной таблицы движений, но суммарно несколько агрегатов могут ощутимо увеличить размер базы. Перед включением оцените свободное место и ограничьтесь действительно нужными комбинациями измерений.
Что важно запомнить
Агрегаты — предрасчитанные итоги оборотных регистров накопления, ускоряющие отчёты по оборотам на больших базах. Включайте их точечно под реальные отчёты, обновляйте регламентно в нерабочее время и проверяйте эффект замером. Для остатков, малых баз и прямых запросов к движениям механизм не работает.