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

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

Особое внимание уделим практическим примерам настройки агрегатов для регистров накопления и расчёта, а также разберём, как избежать типичных ошибок при их использовании. Если вы когда-нибудь видели в конфигураторе пункты «Агрегаты» или «Регламентные операции» и не знали, зачем они нужны — этот гайд для вас.

Что такое агрегаты в 1С и зачем они нужны

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

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

  • 📊 Аналитических отчётов (например, оборотно-сальдовая ведомость по большому количеству счетов).
  • 📈 Регистров накопления с высокой детализацией (например, движения товаров по складам).
  • Долгих операций, где пересчёт данных занимает минуты или часы.

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

💡

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

Виды агрегатов в 1С: регистровые и виртуальные таблицы

В 1С 8.3 существует два основных типа агрегатов, которые решают разные задачи:

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

Разница между ними заключается в способе хранения и обновлении:

Характеристика Агрегаты регистров Агрегаты виртуальных таблиц
Где настраиваются В свойствах регистра (конфигуратор) Автоматически при первом запросе
Когда обновляются При записи движений в регистр По регламентному заданию или вручную
Где хранятся В таблицах базы данных В специальных служебных таблицах
Пример использования Остатки товаров на складе Обороты по счёту 60 за квартал

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

📊 Как часто вы сталкиваетесь с медленной работой отчётов в 1С?
Постоянно
Иногда
Рядом
Никогда

Как настроить агрегаты для регистра накопления

Настройка агрегатов для регистра накопления выполняется в конфигураторе и требует прав разработчика. Рассмотрим процесс на примере регистра ТоварыНаСкладах:

  1. Откройте конфигуратор и найдите нужный регистр в дереве объектов (раздел Общие → Регистры накопления).
  2. Перейдите на вкладку Агрегаты в свойствах регистра.
  3. Установите флажок Использовать агрегаты.
  4. В разделе Периодичность агрегатов выберите интервалы, для которых будут храниться итоги (например, День, Месяц, Квартал).
  5. Настройте Регламентные операции для автоматического обновления агрегатов (например, ночное обслуживание базы).

Пример настройки периодичности:


// В конфигураторе для регистра ТоварыНаСкладах:

Агрегаты.Периодичность.Добавить(ТипПериодичности.День);

Агрегаты.Периодичность.Добавить(ТипПериодичности.Месяц);

Агрегаты.Периодичность.Добавить(ТипПериодичности.Год);

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

  • 🔄 Через меню Администрирование → Обслуживание → Регламентные операции → Перестроить агрегаты.
  • 🖥️ С помощью командной строки (для больших баз):
    Designer.exe /IBName "ИмяБазы" /Execute "ПерестроитьАгрегаты()"

Сделать резервную копию базы|Проверить свободное место на диске|Определить оптимальную периодичность|Настроить регламентные задания для обновления|Протестировать работу на копии базы-->

Когда агрегаты тормозят систему: типичные ошибки

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

  • 🚫 Слишком частая периодичность. Если настроить агрегаты по часам для регистра, который обновляется раз в месяц, система будет тратить ресурсы на ненужные пересчёты.
  • 🚫 Агрегаты для редко используемых отчётов. Нет смысла кешировать данные, к которым обращаются раз в год.
  • 🚫 Отсутствие регламентного обновления. Если агрегаты не перестраиваются автоматически, они устаревают и начинают выдавать неверные данные.
  • 🚫 Игнорирование размера базы. Агрегаты занимают дополнительное место на диске. Для больших баз это может стать проблемой.

Признаки того, что агрегаты работают неэффективно:

  • ⚠️ Отчёты формируются дольше, чем без агрегатов.
  • ⚠️ Размер базы данных неоправданно вырос (проверьте таблицы _Aggregates* в SQL).
  • ⚠️ Регламентные задания по обновлению агрегатов выполняются слишком долго.
Как проверить размер агрегатов в базе SQL

Для Microsoft SQL Server выполните запрос:

SELECT

t.NAME AS TableName,

s.Name AS SchemaName,

p.rows AS RowCounts,

SUM(a.total_pages) * 8 AS TotalSpaceKB

FROM

sys.tables t

INNER JOIN

sys.indexes i ON t.OBJECT_ID = i.object_id

INNER JOIN

sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id

INNER JOIN

sys.allocation_units a ON p.partition_id = a.container_id

LEFT OUTER JOIN

sys.schemas s ON t.schema_id = s.schema_id

WHERE

t.NAME LIKE '%Aggregates%'

GROUP BY

t.Name, s.Name, p.Rows

ORDER BY

TotalSpaceKB DESC;

Это покажет, какие агрегаты занимают больше всего места.

Если вы обнаружили, что агрегаты мешают работе, их можно:

  • 🔧 Отключить для конкретного регистра (снять флажок Использовать агрегаты).
  • 🔧 Уменьшить периодичность (например, оставить только месячные итоги).
  • 🔧 Настроить ручное обновление вместо автоматического.
💡

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

Агрегаты и регламентные задания: как автоматизировать обновление

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

  1. Создайте новое регламентное задание в разделе Администрирование → Регламентные задания.
  2. Выберите тип задания — Обновление агрегатов или Перестроение агрегатов (второе нужно после изменений в конфигурации).
  3. Настройте расписание. Оптимальное время — ночные часы, когда в базе нет пользователей.
  4. Укажите, для каких регистров или виртуальных таблиц нужно обновлять агрегаты (можно выбрать все или конкретные).

Пример настройки расписания:

  • 🕒 Для ежедневных агрегатов: выполнение в 02:00.
  • 📅 Для месячных: выполнение 1-го числа в 03:00.

Важно учитывать:

  • ⚠️ Если агрегаты обновляются во время работы пользователей, это может вызвать блокировки и замедление системы.
  • ⚠️ Для больших баз обновление агрегатов может занимать несколько часов. В этом случае стоит разбить процесс на части или использовать фоновые задания.
💡

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

Практические примеры: где агрегаты дают максимальный эффект

Агрегаты наиболее полезны в следующих сценариях:

1. Торговые системы с большим ассортиментом

Если у вас тысячи номенклатурных позиций и ежедневные движения по складам, агрегаты для регистра ТоварыНаСкладах ускорят:

  • 📋 Формирование остатков по складам.
  • 📊 Отчёты по товарообороту (например, Анализ продаж).
  • 🔍 Поиск товаров с нулевыми остатками.

2. Бухгалтерские отчёты с высокой детализацией

Для регистров бухгалтерии (например, Хозрасчетный) агрегаты ускоряют:

  • 📑 Оборотно-сальдовую ведомость по всем счётам.
  • 💰 Анализ субконто (например, расчёты с контрагентами).
  • 📈 Карточку счёта с детализацией по дням.

3. Системы расчёта зарплаты

В модуле Зарплата и Управление Персоналом агрегаты полезны для:

  • 👥 Расчёта начислений и удержаний по сотрудникам.
  • 📅 Формирования отчётов по фонду оплаты труда.
  • 💸 Аналитики по видам расчётов (премии, больничные и т. д.).

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

Реальный кейс ускорения

В одной из компаний отчёт по остаткам товаров на 50 складах формировался 45 минут. После настройки агрегатов по дням и неделям время сократилось до 2 минут. При этом размер базы увеличился всего на 12 ГБ (при общем объёме 200 ГБ).

Как проверить, работают ли агрегаты в вашей базе

Чтобы понять, используются ли агрегаты и насколько они эффективны, выполните следующие шаги:

  1. Проверьте настройки регистров:
    • Откройте конфигуратор.
    • Найдите нужный регистр накопления или расчёта.
    • Посмотрите на вкладку Агрегаты — если флажок Использовать агрегаты установлен, агрегаты включены.
  2. Анализируйте планы запросов:
    • Включите отладку запросов (Отладка → Начать отладку).
    • Выполните отчёт, который должен использовать агрегаты.
    • Посмотрите, есть ли в плане запроса упоминание таблиц с суффиксом _Aggregates.
  • Проверьте регламентные задания:
    • Перейдите в Администрирование → Регламентные задания.
    • Найдите задания с типами Обновление агрегатов или Перестроение агрегатов.
    • Оцените размер агрегатов:
      • В SQL Server Management Studio найдите таблицы с именами, содержащими _Aggregates.
      • Посмотрите их размер — если он сопоставим с размером основных таблиц, возможно, агрегаты избыточны.

    Если агрегаты настроены, но отчёты всё равно работают медленно, проверьте:

    • ⚠️ Актуализированы ли данные (возможно, регламентное задание не выполнялось).
    • ⚠️ Правильно ли выбрана периодичность (например, запрашиваются помесячные данные, а агрегаты построены только по дням).
    • ⚠️ Нет ли блокировок на таблицы агрегатов (проверьте в SQL Profiler).

    FAQ: Частые вопросы об агрегатах в 1С

    🔹 Можно ли использовать агрегаты в базовой версии 1С?

    Нет, агрегаты доступны только в клиент-серверных версиях 1С:Предприятие (начиная с 8.2). В файловом варианте или базовой версии этот механизм не работает.

    🔹 Сколько места занимают агрегаты?

    Объём зависит от количества данных и периодичности. Например, для регистра с 1 млн записей и агрегатами по дням, месяцам и годам может потребоваться 10–30% от размера основных данных. Для точной оценки проверьте таблицы _Aggregates* в SQL.

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

    Это зависит от частоты изменения данных:

    • 📅 Ежедневно — если данные обновляются каждый день (например, продажи).
    • 📆 Еженедельно/ежемесячно — для аналитических отчётов с низкой частотой изменений.
    • 🔄 Вручную — если данные меняются редко (например, справочники).

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

    🔹 Можно ли отключить агрегаты для конкретного отчёта?

    Да, для этого в тексте запроса отчёта добавьте директиву:

    //{ОпцииЗапроса.ИспользоватьАгрегаты = Ложь}

    Это заставит систему игнорировать агрегаты и считать данные «с нуля». Полезно для тестирования или если агрегаты устарели.

    🔹 Почему после обновления конфигурации агрегаты перестали работать?

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

    1. Обновить конфигурацию базы данных.
    2. Выполнить Перестроить агрегаты вручную или через регламентное задание.

    Иначе система будет игнорировать устаревшие агрегаты.