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

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

Агрегаты в 1С 8.3: как включить, настроить и когда использовать

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

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

Механизм появился в платформе 8.1 и сохранился в 8.3, однако с развитием итогов регистров и СКД его роль изменилась. В типовых конфигурациях последних редакций агрегаты используются редко, а в ряде решений отключены полностью. Тем не менее в старых самописных и сильно доработанных конфигурациях агрегаты встречаются, и разработчику важно понимать, как они устроены, как их включить, обновить и когда от них лучше отказаться.

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

Что такое агрегаты и как они работают

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

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

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

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

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

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

После изменения структуры конфигурации и обновления базы данных агрегаты необходимо построить. Это делается через обработку «Управление агрегатами» (в типовых конфигурациях, где она предусмотрена) или программно методами менеджера регистра накопления.

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

Обновление и перестроение агрегатов

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

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

МенеджерРегистра = РегистрыНакопления.Продажи;

МенеджерРегистра.УстановитьИспользованиеАгрегатов(Истина);

МенеджерРегистра.ОбновитьАгрегаты();

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

Когда агрегаты оправданы, а когда нет

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

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

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

Агрегаты

Подходят для больших оборотных регистров со стабильным составом аналитики; требуют ручного или регламентного обновления и дополнительного места

Итоги регистров

Обновляются платформой автоматически при записи; ускоряют остатки и обороты без настройки, но не дают выбора состава измерений

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

Помогает при любом регистре; не требует дополнительного хранения, но требует анализа плана запроса и индексов

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

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

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

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

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

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

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

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

Расхождения в оборотах — агрегат не построен или повреждён

Скорость отчёта
Норма

Время формирования заметно сократилось

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

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

Актуальность
Норма

Граница актуальности близка к текущей дате

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

Граница сильно отстаёт — регламентное обновление не работает

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

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

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

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

Альтернативы агрегатам в современных решениях

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

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

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

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

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

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

Работают ли агрегаты с регистрами остатков?

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

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

Нет. Платформа сама выбирает подходящий агрегат при обращении к виртуальной таблице оборотов, если его состав покрывает запрос. Запросы и настройки СКД изменять не требуется.

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

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

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

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

Можно ли временно отключить агрегаты без удаления?

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

Итог

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

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