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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Измерения:

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

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

Ресурсы:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ВЫБРАТЬ

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

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

ИЗ

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

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

,

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

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

💡

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ВЫБРАТЬ

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

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

ИЗ

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

ГДЕ

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

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

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

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

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

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

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

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

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

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

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

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