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

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

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

Агрегаты регистров накопления в 1С: что это такое, как включить и настроить, когда они ускоряют отчёты, ограничения, типичные ошибки и ответы на вопросы.

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

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

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

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

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

Агрегат — это дополнительная служебная таблица, в которой обороты уже просуммированы по выбранному набору измерений и по периодам. Например, агрегат по измерению «Номенклатура» содержит готовые обороты по каждому товару за каждый период. Запрос к виртуальной таблице оборотов с отбором по номенклатуре платформа выполнит по этой компактной таблице, а не по полному регистру.

Для одного регистра можно создать несколько агрегатов с разными составами измерений. Платформа автоматически выбирает оптимальный агрегат под конкретный запрос: чем точнее агрегат совпадает с отборами запроса, тем эффективнее выборка.

В каких случаях агрегаты дают эффект

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

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

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

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

Когда включать агрегаты

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

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

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

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

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

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

Обновление агрегатов и режимы работы

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

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

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

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

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

Второе ограничение — состав измерений. Если отчёт отбирает данные по измерению, не включённому ни в один агрегат, платформа будет считать обороты обычным способом. Поэтому состав агрегатов проектируют под реальные отчёты, а не «про запас».

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

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

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

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

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

Дополнительно проверьте корректность данных: сравните обороты по отчёту, построенному с агрегатами, с контрольным расчётом без них на том же периоде. Значения должны совпадать при актуальном состоянии агрегатов.

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

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

Время формирования отчёта по оборотам
Норма

Заметно сократилось после построения агрегатов

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

Не изменилось — вероятно, запрос не попадает в агрегат или регистр небольшой

Совпадение данных
Норма

Обороты с агрегатами и без них идентичны на контрольном периоде

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

Расхождения — агрегаты устарели, требуется обновление

Нагрузка на сервер при обновлении
Норма

Обновление выполняется в нерабочее время и не мешает пользователям

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

Обновление запускается днём и блокирует работу

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

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

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

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

Сравнение подходов к ускорению отчётов по оборотам

Агрегаты платформы

Штатный механизм без разработки; подходит для оборотных регистров и типовых отчётов, но требует обновления и места

Оптимизация запроса

Бесплатно и быстро внедряется, но предел ускорения ограничен объёмом данных

Собственные сводные регистры

Гибкий контроль состава и актуальности, но требует разработки и сопровождения

Вынос аналитики в отдельную базу

Снимает нагрузку с оперативной системы, но усложняет инфраструктуру и обмены

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

Агрегаты ускоряют отчёты по остаткам?

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

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

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

Как часто нужно обновлять агрегаты?

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

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

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

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

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

Агрегаты занимают много места в базе?

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

Итог

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

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