К статье
Практический материал

Администрирование · 10 мин

Агрегаты регистра накопления в 1С: назначение, настройка и ограничения

Что такое агрегаты регистра накопления в 1С, чем отличаются от итогов, когда их включать и как настроить. Практические советы, ограничения и ошибки.

Агрегаты регистра накопления — это механизм платформы 1С, предназначенный для ускорения получения итогов по оборотным регистрам накопления. Когда отчёт строится по оборотному регистру (например, «Продажи» или «ТоварыНаСкладах» в разрезе оборотов), платформа вынуждена суммировать миллионы движений. Агрегаты позволяют заранее сохранить предрассчитанные суммы по выбранным измерениям и периодам, чтобы отчёт читал готовые значения вместо полного перебора записей.

Механизм появился в платформе 8.2 и ориентирован прежде всего на крупные базы, где оборотные регистры содержат десятки миллионов записей, а отчёты по ним строятся регулярно — например, анализ продаж по менеджерам, номенклатуре и складам. В небольших базах агрегаты обычно не нужны: стандартные итоги и виртуальные таблицы справляются достаточно быстро.

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

Что такое агрегаты и как они устроены

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

Физически агрегаты хранятся в отдельных таблицах базы данных и обновляются платформой автоматически при проведении документов — либо сразу (оптимальный режим), либо отложенно. Каждый агрегат увеличивает объём базы и замедляет запись движений, поэтому их количество и состав подбирают под реальные отчёты, а не «про запас».

Чем агрегаты отличаются от итогов и виртуальных таблиц

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

ПараметрИтоги регистраАгрегаты
Вид регистраОстатки и оборотыТолько обороты
СоставФиксирован платформойЗадаёт разработчик: измерения и периодичность
ВключениеПо умолчаниюВручную в конфигураторе
ОбновлениеАвтоматически при проведенииАвтоматически или по расписанию (перестроение)
Когда оправданыВсегдаБольшие базы, тяжёлые оборотные отчёты

Ключевое отличие в гибкости: итоги платформа считает по своей схеме, а агрегаты вы проектируете под конкретные аналитические разрезы. Если отчёт всегда группирует данные по контрагенту и месяцу, агрегат «Контрагент + месяц» даст максимальный выигрыш.

Когда агрегаты действительно нужны

Решение о включении агрегатов принимают по симптомам, а не превентивно. Характерные признаки: отчёты по оборотному регистру строятся минутами, в базе накоплены миллионы записей движений, а типовые меры (индексы, обновление статистики СУБД, свёртка старых периодов) уже применены и не дали нужного эффекта.

При этом есть ситуации, где агрегаты не помогут или не нужны. Если отчёт тормозит из-за соединений с другими таблицами, неоптимального запроса или отсутствия индексов — сначала чинится запрос. Если отчётам нужны остатки, а не обороты — агрегаты неприменимы в принципе. Если база небольшая и отчёты строятся за секунды — агрегаты только добавят накладных расходов на запись.

Маршрут решения

Как выбрать действие

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

Как настроить агрегаты в конфигураторе

Настройка выполняется в конфигураторе: откройте нужный регистр накопления (вид «Обороты»), перейдите на закладку «Данные» или вызовите свойство «Агрегаты» палитры свойств — в зависимости от версии платформы откроется диалог управления агрегатами. В нём задаётся периодичность (например, «Месяц»), оптимальный режим обновления и список агрегатов с отмеченными измерениями.

Для каждого агрегата вы отмечаете флажками измерения, которые войдут в его состав. Чем меньше измерений в агрегате, тем компактнее таблица и тем быстрее чтение, но тем меньше отчётов он сможет обслужить. Платформа использует агрегат только если запрос группирует данные по набору измерений, который «покрывается» этим агрегатом.

Порядок настройки
  1. 1
    Определите, какие отчёты тормозят, и выпишите измерения, по которым они группируют данные
  2. 2
    Откройте оборотный регистр в конфигураторе и перейдите к настройке агрегатов
  3. 3
    Задайте периодичность (обычно месяц) и создайте агрегаты с нужными наборами измерений
  4. 4
    Выберите режим обновления: оптимальный (при проведении) или отложенное перестроение
  5. 5
    Обновите конфигурацию базы данных и выполните первоначальное построение агрегатов
  6. 6
    Проверьте скорость целевых отчётов и объём занятого места

После включения агрегаты необходимо построить по уже существующим данным — это длительная операция на больших регистрах, её планируют на нерабочее время. Построение и перестроение выполняется либо из конфигуратора, либо штатными средствами управления итогами в режиме предприятия.

Обновление, перестроение и обслуживание

Агрегаты требуют регулярного обслуживания. При оптимальном режиме платформа дописывает изменения в агрегаты при каждом проведении документа — это ускоряет отчёты, но увеличивает время записи. При отложенном режиме проведение идёт быстрее, но агрегаты нужно периодически перестраивать, иначе отчёты покажут устаревшие данные или платформа вообще не использует агрегат из-за его неактуальности.

Практическое правило: если документы проводятся непрерывно и их поток велик (сотни документов в час), отложенное обновление с перестроением по расписанию — например, ночью — обычно выгоднее. Если документов немного, а отчёты нужны в любой момент, лучше оптимальный режим.

Ограничения и типичные ошибки

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

Типичные ошибки
01
Создание агрегатов «про запас» по всем комбинациям измерений — база раздувается, проведение замедляется, а выигрыша нет
02
Включение агрегатов без анализа запросов — отчёт группирует данные иначе, и платформа агрегат не использует
03
Отложенный режим без регламентного перестроения — отчёты показывают устаревшие данные или игнорируют агрегаты
04
Попытка применить агрегаты к регистру остатков — механизм для таких регистров недоступен
05
Первоначальное построение в рабочее время — блокировки и жалобы пользователей

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

Как проверить, что агрегаты работают

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

Контрольные точки

Как проверить результат

Время построения целевого отчёта
Норма

Заметно сократилось по сравнению с замером до настройки

Тревожный признак

Время не изменилось — вероятно, запрос не покрывается составом агрегата

План запроса на СУБД
Норма

Читаются компактные таблицы агрегатов

Тревожный признак

Полное сканирование таблицы движений — агрегат не используется

Актуальность данных в отчёте
Норма

Данные совпадают с контрольным запросом по движениям

Тревожный признак

Расхождения — при отложенном режиме требуется перестроение

Время проведения документов
Норма

Замедление незначительное и приемлемое

Тревожный признак

Проведение заметно деградировало — сократите число агрегатов или перейдите на отложенный режим

Начинайте с одного-двух агрегатов под самый тяжёлый отчёт и измеряйте эффект. Добавлять новые агрегаты стоит только при подтверждённой потребности: каждый из них — плата объёмом базы и скоростью записи за скорость чтения.
ПЗ
Практическое замечание

Часто задаваемые вопросы

Можно ли включить агрегаты для регистра накопления с видом «Остатки»?

Нет. Механизм агрегатов доступен только для оборотных регистров накопления. Для регистров остатков платформа хранит итоги по своей схеме, и оптимизация там достигается другими средствами: периодичностью итогов, индексами и корректными запросами к виртуальным таблицам.

Ускорят ли агрегаты отчёты в небольшой базе?

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

Нужно ли перестраивать агрегаты после изменения их состава?

Да. Изменение набора измерений или периодичности требует обновления конфигурации базы данных и полного перестроения агрегатов по накопленным данным. На больших регистрах эту операцию выполняют в нерабочее время после резервного копирования.

Почему отчёт не стал быстрее после включения агрегатов?

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

Сколько агрегатов можно создать для одного регистра?

Платформа позволяет создать несколько агрегатов с разными комбинациями измерений, но каждый занимает место и нагружает запись. На практике ограничиваются минимальным набором, покрывающим реально используемые отчёты, — обычно это единицы агрегатов на регистр.

Итог

Что важно запомнить

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