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