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