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

В этой статье мы детально разберём:

  • 🔹 Физическое хранение итогов — где именно в базе данных лежат агрегированные данные и как они обновляются.
  • 🔹 Роль регистров накопления — почему они центральный элемент системы итогов и как их настраивать.
  • 🔹 Виртуальные таблицы итогов — как 1С динамически формирует данные для отчётов без пересчёта.
  • 🔹 Периодичность и актуальность — почему итоги могут «устаревать» и как этого избежать.

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

1. Физическое хранение итогов: где 1С хранит агрегированные данные

В отличие от документов или справочников, итоги в 1С:Предприятие не хранятся в отдельных таблицах базы данных в «чистом» виде. Вместо этого система использует два основных механизма:

  • 📊 Таблицы регистров накопления — содержат детальные записи о движениях (например, остатки товаров или финансовые обороты).
  • 📈 Таблицы итогов — агрегированные данные, которые формируются на основе регистров и обновляются по специальным правилам.

Физически таблицы итогов хранятся в той же базе данных (например, в SQL Server или PostgreSQL), но имеют особую структуру. Например, для регистра накопления ТоварыНаСкладах система создаёт:

  • Таблицу движений (AccumulationRegister.TоварыНаСкладах.VT{ГУИД}) — все приходы/расходы.
  • Таблицу итогов (AccumulationRegister.TоварыНаСкладах.Aggregates) — агрегированные остатки по периодам.

Важно понимать, что итоги не обновляются в реальном времени. Они пересчитываются:

  • 🔄 При проведении документов, затрагивающих регистр.
  • 🕒 По расписанию (фоновые задания РегламентныеЗадания).
  • 🖥️ Вручную — через команду Пересчитать итоги в конфигураторе.
⚠️ Внимание: Если в базе включён режим Управляемое приложение, то фоновый пересчёт итогов может блокироваться длительными транзакциями. Это приводит к «зависанию» отчётов. Проверьте настройки сервера 1С!
📊 Как часто вы сталкиваетесь с проблемами итогов в 1С?
Никогда
Рядом при формировании отчётов
После обновлений конфигурации
Постоянно

2. Регистры накопления: основа механизма итогов

Регистры накопления — это основной инструмент для хранения итоговых данных в 1С. Они бывают трёх типов:

Тип регистра Назначение Пример использования
Остатки Хранение текущего состояния (например, остатки товаров). Регистр ТоварыНаСкладах.
Обороты Накопление данных за период (например, продажи по месяцам). Регистр ПродажиПоНоменклатуре.
Остатки и обороты Комбинированный вариант для сложных расчётов. Регистр ВзаиморасчётыСКонтрагентами.

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

Пример структуры регистра ТоварыНаСкладах:

Измерения:

- Склад (СправочникСсылка.Склады)

- Номенклатура (СправочникСсылка.Номенклатура)

Ресурсы:

- Количество (Число, 15, 3)

- Сумма (Число, 15, 2)

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

⚠️ Внимание: Если в регистре задано измерение с большим количеством уникальных значений (например, Контрагент с 50 000 записями), пересчёт итогов может занимать часы. Оптимизируйте структуру регистров!

Изучите список измерений — нет ли лишних?

Проверьте периодичность — можно ли уменьшить детализацию?

Убедитесь, что ресурсы имеют оптимальные типы данных (например, не Число(30,10) вместо Число(15,2))

Проведите тестовый пересчёт итогов на копии базы-->

3. Виртуальные таблицы итогов: как 1С ускоряет отчёты

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

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

ВиртуальнаяТаблица.Остатки(Регистр.ТоварыНаСкладах, , )

Виртуальные таблицы бывают нескольких типов:

  • 📅 Остатки — текущие значения на дату.
  • 📊 Обороты — суммы за период.
  • 🔄 ОстаткиИОбороты — комбинированный вариант.
  • 📈 СрезПоследних — последние записи по измерениям.

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

Пример запроса с виртуальной таблицей:

ВЫБРАТЬ

ОстаткиНоменклатура.Номенклатура КАК Номенклатура,

ОстаткиНоменклатура.КоличествоОстаток КАК Количество

ИЗ

ВиртуальнаяТаблица.Остатки(

Регистр.ТоварыНаСкладах,

,

Номенклатура В (&СписокНоменклатуры)

) КАК ОстаткиНоменклатура

💡

Если отчёт работает медленно, попробуйте заменить виртуальную таблицу Обороты на ОборотыПоПериодам с явным указанием периода (например, МЕСЯЦ). Это ускорит выполнение за счёт уменьшения объёма данных.

4. Периодичность итогов: почему данные могут «устаревать»

Итоги в 1С не хранятся «навсегда» в актуальном состоянии. Их периодичность зависит от двух факторов:

  1. Периодичность регистра — задаётся при создании (например, День, Месяц, Квартал).
  2. Глубина хранения итогов — сколько периодов назад система хранит агрегированные данные (настраивается в конфигураторе).

Например, если регистр имеет периодичность Месяц и глубину хранения 12 месяцев, то:

  • 📅 Итоги за текущий и прошлые 11 месяцев хранятся в агрегированном виде.
  • 🗑️ Данные старше 12 месяцев хранятся только в виде движений (итоги пересчитываются динамически).

Это приводит к двум распространённым проблемам:

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

Чтобы избежать проблем, проверьте настройки периодичности в конфигураторе:

  1. Откройте регистр накопления (например, ТоварыНаСкладах).
  2. Перейдите на вкладку Данные → Периодичность.
  3. Убедитесь, что глубина хранения покрывает нужный исторический период.
Что будет, если уменьшить глубину хранения итогов?

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

5. Пересчёт итогов: когда и как это делать

Итоги в 1С требуют регулярного пересчёта. Это необходимо в следующих случаях:

  • 🔧 После изменений в конфигурации (добавление новых измерений или ресурсов в регистр).
  • 📝 После массового изменения документов (ретроактивное проведение).
  • 🖥️ При переносе данных между базами или восстановлении из резервной копии.
  • ⚡ После сбоев сервера или аварийного завершения работы 1С.

Пересчитать итоги можно несколькими способами:

Метод Когда использовать Команда/путь
Через конфигуратор Для отдельных регистров или небольших периодов. Администрирование → Тестирование и исправление → Пересчитать итоги
Через язык запросов Для автоматизации (например, в регламентном задании).
ПересчитатьИтоги(

"Регистр.ТоварыНаСкладах",

ДатаНачала(2026, 1, 1),

КонецДня(ТекущаяДата())

);

Через 1С:Предприятие (пользовательский режим) Для оперативного обновления итогов по текущему регистру. Все функции → Стандартные → Пересчёт итогов

При пересчёте итогов учитывайте:

  • 🕒 Процесс может занять часы на больших базах (блокируйте пользователей на это время).
  • 🔌 Пересчёт потребляет много ресурсов сервера — планируйте его на ночное время.
  • 📊 После пересчёта проверьте контрольные отчёты (например, Ведомость по товарам).
⚠️ Внимание: Если при пересчёте итогов появляется ошибка Нарушение ссылочной целостности, это означает, что в базе есть «битые» ссылки на удалённые объекты. Перед пересчётом выполните Тестирование и исправление ИБ!

6. Оптимизация работы с итогами: советы для администраторов

Неправильная работа с итогами — одна из главных причин тормозов в 1С. Вот ключевые рекомендации для оптимизации:

  • 🛠️ Индексируйте измерения регистров — если в регистре есть измерение, по которому часто фильтруются данные (например, Склад), добавьте индекс в конфигураторе.
  • ⏳ Уменьшайте периодичность — если не нужна детализация по дням, используйте Месяц или Квартал.
  • 🗑️ Очищайте старые движения — для регистров с большой историей (например, более 5 лет) архивируйте и удаляйте ненужные движения.
  • 🔄 Настройте фоновый пересчёт — используйте регламентные задания для автоматического обновления итогов в нерабочее время.

Пример настройки индекса для измерения Номенклатура в регистре ТоварыНаСкладах:

  1. Откройте регистр в конфигураторе.
  2. Перейдите на вкладку Индексы.
  3. Добавьте новый индекс с полем Номенклатура.
  4. Установите флаг Уникальный, если комбинация измерений должна быть уникальной.

Для крупных баз (более 100 ГБ) рассмотрите следующие решения:

  • 📀 Разделение базы — вынос старых данных в архивную базу.
  • 🖥️ Кластер серверов 1С — распределение нагрузки между несколькими серверами.
  • 🔗 Использование PostgreSQL вместо MS SQL — для некоторых конфигураций это даёт прирост производительности на 20-30%.
💡

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

7. Типичные ошибки при работе с итогами и как их избежать

Даже опытные администраторы 1С допускают ошибки, которые приводят к проблемам с итогами. Рассмотрим самые критичные:

  1. Изменение структуры регистра без пересчёта итогов

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

    Решение: После любых изменений в регистре запускайте полный пересчёт итогов.

  2. Использование непериодических регистров для больших объёмов данных

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

    Решение: Задайте периодичность хотя бы Месяц.

  3. Отсутствие контроля за глубиной хранения

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

    Решение: Установите глубину хранения не менее 24 месяцев.

Ещё одна распространённая проблема — расхождения между итогами и движениями. Это происходит, если:

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

Чтобы найти расхождения, используйте отчёт Сверка итогов (доступен в типовой конфигурации 1С:Управление торговлей):

Отчёты → Стандартные → Сверка итогов
⚠️ Внимание: Если расхождения найдены, не пытайтесь исправить их вручную через SQL! Используйте штатные механизмы 1С: перепроводите документы или пересчитайте итоги.

FAQ: Частые вопросы по итогам в 1С

Можно ли отключить хранение итогов, чтобы сэкономить место?

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

Если место на диске критично, лучше:

  • Уменьшить глубину хранения итогов.
  • Архивировать старые данные.
  • Оптимизировать индексы.
Почему после обновления конфигурации итоги «сбросились»?

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

Чтобы избежать проблемы:

  1. Перед обновлением сделайте резервную копию базы.
  2. Изучите описание изменений в новой версии (раздел «Изменения в структуре данных»).
  3. После обновления запустите полный пересчёт итогов.
Как ускорить формирование отчёта, если итоги не актуальны?

Если итоги устарели, а пересчёт всех данных займёт слишком много времени, можно:

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

Пример запроса с временной таблицей:

ВЫБРАТЬ

ДвиженияНоменклатура.Номенклатура КАК Номенклатура,

СУММА(ДвиженияНоменклатура.Количество) КАК Количество

ИЗ

РегистрНакопления.ТоварыНаСкладах.Движения КАК ДвиженияНоменклатура

ГДЕ

ДвиженияНоменклатура.Период МЕЖДУ &НачалоПериода И &КонецПериода

СГРУППИРОВАТЬ ПО

ДвиженияНоменклатура.Номенклатура

Можно ли перенести итоги из одной базы в другую?

Да, но это нетривиальная задача. Стандартные механизмы 1С (например, Выгрузка/загрузка данных) переносят документы и справочники, но не всегда корректно обрабатывают итоги. Для переноса итогов:

  1. Выгрузите движения регистров через Универсальный обмен данными.
  2. Загрузите движения в новую базу.
  3. Запустите полный пересчёт итогов.

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

Почему в отчёте вижу данные за прошлый месяц, хотя документы проведены?

Это типичный признак того, что итоги не пересчитаны. Возможные причины:

  • 🔹 Фоновое задание по пересчёту итогов «зависло».
  • 🔹 В настройках регламентного задания указан неправильный период.
  • 🔹 Пользователь, который провёл документ, не имел прав на обновление итогов.

Чтобы исправить:

  1. Проверьте статус регламентных заданий в Администрирование → Регламентные задания.
  2. Запустите ручной пересчёт итогов за нужный период.
  3. Убедитесь, что у пользователей есть роль Администрирование итогов.