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