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

Разработка и Конфигурация · 12 мин

Что такое агрегаты в 1С и как с ними работать

Агрегаты в 1С: что это такое, зачем нужны, как создать и настроить агрегаты регистра накопления, когда их использовать и какие есть ограничения.

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

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

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

Как устроен механизм агрегатов

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

Ключевая идея — компромисс между объёмом хранения и скоростью запросов. Полная таблица движений содержит каждую строку каждого документа. Агрегат содержит одну строку на комбинацию измерений за период. Если за месяц по регистру «Продажи» прошло 500 000 движений, а уникальных комбинаций «Номенклатура + Склад» всего 20 000, то агрегат по этим измерениям будет в десятки раз меньше исходной таблицы.

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

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

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

Типичный сценарий: торговая компания строит ежедневные отчёты по продажам в разрезе номенклатуры и складов за произвольные периоды. Регистр накопления содержит несколько миллионов записей, отчёт формируется по 30–60 секунд. Включение агрегатов по измерениям «Номенклатура» и «Склад» с периодичностью «Месяц» сокращает время построения до нескольких секунд, потому что платформа читает компактную таблицу итогов вместо полного сканирования движений.

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

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

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

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

Как включить и настроить агрегаты

Настройка выполняется в конфигураторе. Откройте нужный регистр накопления (вид «Обороты») и перейдите к свойствам, связанным с агрегатами. Платформа позволяет задать список агрегатов, для каждого из которых указывается состав измерений и периодичность. Также доступен инструмент подбора оптимального состава агрегатов: платформа анализирует структуру регистра и предлагает варианты, покрывающие типовые комбинации измерений.

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

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

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

Режимы использования и обновления

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

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

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

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

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

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

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

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

Проверка сводится к сопоставлению времени формирования отчётов до и после включения механизма. Выберите 2–3 типовых отчёта с фиксированными параметрами (один и тот же период, отборы), замерьте время построения до включения агрегатов, затем после построения агрегатов повторите замер в сопоставимых условиях нагрузки. Устойчивое сокращение времени — признак того, что оптимизатор использует агрегаты.

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

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

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

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

Время заметно сократилось при тех же параметрах отчёта

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

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

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

Свежие движения учитываются в отчёте корректно

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

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

Скорость проведения документов
Норма

Проведение замедлилось незначительно или не изменилось

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

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

Размер базы данных
Норма

Прирост объёма умеренный и ожидаемый

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

База выросла непропорционально — лишние агрегаты следует удалить

Альтернативы агрегатам

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

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

Сравнение вариантов

Агрегаты регистра накопления

Встроенный механизм платформы, прозрачен для запросов; ограничение — только оборотные регистры и дополнительный объём хранения

Оптимизация запросов и индексов

Не требует дополнительного места; эффект ограничен при очень больших объёмах сканируемых данных

Сводные регистры с регламентным расчётом

Гибкость структуры и расписания; требует разработки и контроля корректности расчёта

Вынос аналитики во внешнее хранилище

Разгружает основную базу; усложняет инфраструктуру и актуализацию данных

Частые вопросы

Агрегаты доступны для любых регистров накопления?

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

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

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

Могут ли агрегаты замедлить работу базы?

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

Что произойдёт, если агрегаты устарели?

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

Как управлять агрегатами программно?

Через менеджер соответствующего регистра накопления доступны методы получения состава агрегатов, их построения, обновления и установки режима использования. Это позволяет включать обслуживание агрегатов в регламентные задания.

Стоит ли включать агрегаты в небольшой базе?

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

Итог

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

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