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