Свертка базы 1С: что происходит с данными, итогами и отчётами

· 10 мин

Содержание

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

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

Зачем нужна свертка информационной базы 1С

Свертку делают не ради порядка, а когда база мешает работать. Типичные поводы:

  • 📦 Размер. Файловая база за 8–10 лет дорастает до 15–30 ГБ, резервная копия делается часами.
  • 🐢 Скорость. Проведение документа задним числом пересчитывает последовательности и итоги, закрытие месяца идёт всё дольше.
  • 🔁 Обмены и РИБ. Начальная выгрузка нового узла с полной историей тянется сутками.
  • 🧹 Смена учётной политики или плана счетов. Проще начать с чистых остатков, чем тащить старые движения.

У свертки один физический смысл: вместо тысяч строк движений по регистру хранится одна строка остатка на дату по каждому сочетанию измерений. Если на складе «Основной» по товару «Кабель ВВГ 3×2,5» за пять лет было 4 200 приходов и расходов, после свертки останется одна запись: «на 01.01 остаток 350 м на сумму 41 300 руб.».

Свертка не трогает справочники. Контрагенты, номенклатура, сотрудники и договоры остаются. Удаляются только документы и их движения до даты свертки.

Когда сворачивать не нужно

  • Идёт налоговая проверка или запрос документов за свёртываемые годы.
  • База меньше 2–3 ГБ и тормозит по другой причине: мало памяти, медленный диск, нет обновления статистики в СУБД.
  • Пользователям регулярно нужны отчёты с детализацией по документам за прошлые годы.

В этих случаях сначала ищут причину медленной работы, а свертку откладывают.

Как устроен алгоритм свертки данных

Любая свертка, типовая или самописная, проходит одни и те же этапы. Порядок важен: если поменять местами расчёт остатков и удаление, остатки посчитать будет уже не из чего.

  1. Выбор даты свертки. Обычно это начало года, например 01.01 текущего года. Все документы с датой меньше этой будут свёрнуты.
  2. Снимок остатков. По каждому регистру остатков и регистру бухгалтерии берутся остатки на дату свертки в разрезе всех измерений и субконто.
  3. Запись остатков служебными документами. Остатки фиксируются документами ввода остатков или специальными служебными документами с датой чуть раньше даты свертки. Так у регистров появляется «стартовая точка».
  4. Удаление старых документов. Документы до даты свертки удаляются вместе с движениями. Связанные регистры сведений, если они подчинены регистратору, очищаются тоже.
  5. Обработка ссылок. Если документ после даты свертки ссылается на удалённый (например, основание или документ расчётов), ссылку заменяют на служебный документ остатков или очищают.
  6. Пересчёт итогов. После удаления массы движений итоги регистров пересчитываются, иначе запросы остатков дадут неверные цифры.

Что происходит с разными видами регистров

Вид данныхЧто делает сверткаЧто остаётся
Регистр накопления остатковСжимает движения в остаток на датуОдна запись на сочетание измерений
Оборотный регистр накопленияОбороты до даты не нужны для остатковОбычно ничего, история оборотов теряется
Регистр бухгалтерииСальдо по счетам и субконто на датуПроводки ввода остатков
Регистр сведений периодическийСрез последних на датуПоследнее значение на дату свертки
Справочники, константыНе трогаетВсё

Оборотные данные (выручка по месяцам, продажи по менеджерам) после свертки за прошлые периоды не восстановить из базы. Если они нужны для аналитики, выгрузите отчёты заранее.

Свертка и расчёт итогов: в чём разница

Это главный источник путаницы. Итоги регистров — штатный механизм платформы, он есть в каждой базе без всяких обработок. Свертка — разовая операция, которая меняет сами данные.

Итоги — это служебная таблица, где платформа заранее хранит остатки регистра на конец каждого месяца. Запрос «остаток на 15 марта» берёт итог на конец февраля и досчитывает движения за 15 дней. Сами движения при этом никуда не деваются.

Свертка удаляет движения. После неё нечего досчитывать за прошлые годы: истории нет, есть только стартовый остаток.

ПризнакИтоги регистровАгрегатыСвертка базы
УровеньПлатформаПлатформаПрикладная обработка
Удаляет движенияНетНетДа
Для каких регистровОстатков, бухгалтерииОборотных регистров накопленияВсех, по логике обработки
Размер базыСлегка растётСлегка растётЗаметно уменьшается
ОбратимостьПолнаяПолнаяТолько из резервной копии

Как управлять итогами и агрегатами

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

Там доступно:

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

Те же действия есть во встроенном языке:

// Пересчёт итогов регистра накопления
РегистрыНакопления.ТоварыНаСкладах.ПересчитатьИтоги();

// Итоги заранее считаются только до заданной даты
РегистрыНакопления.ТоварыНаСкладах.УстановитьМаксимальныйПериодРассчитанныхИтогов(НачалоМесяца(ТекущаяДата()));

// Оборотный регистр: перевод в режим агрегатов и обновление
РегистрыНакопления.Продажи.УстановитьРежимАгрегатов(Истина);
РегистрыНакопления.Продажи.ОбновитьАгрегаты();

Имена регистров в примере условные, подставьте свои из дерева конфигурации.

Если отчёт по остаткам тормозит, сначала проверьте период рассчитанных итогов. Когда он отстал на год, платформа досчитывает движения за 12 месяцев на каждом запросе. Сдвиг периода решает проблему за минуты и без потери истории.

Свернуть() в коде: агрегация данных в памяти

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

// ТЗ: колонки Номенклатура, Склад, Количество, Сумма, Документ
ТЗ.Свернуть("Номенклатура, Склад", "Количество, Сумма");
// В таблице остались только 4 колонки:
// Номенклатура, Склад, Количество, Сумма.
// Колонка Документ удалена, строки с одинаковыми товаром и складом сложены.

Правила, которые стоит держать в голове:

  • в первом параметре — колонки группировки, во втором — колонки суммирования, через запятую;
  • колонки, не указанные ни там, ни там, из таблицы удаляются;
  • суммируются только числа; если в колонке суммирования попалось не число, результат будет неверным;
  • одна колонка не может быть одновременно в группировке и в суммировании.

Если данные берутся запросом, группировку дешевле сделать в самом запросе через СГРУППИРОВАТЬ ПО и СУММА(). Тогда в клиент не тянутся лишние строки. Свернуть() уместен, когда таблица собрана в коде из нескольких источников.

Как подготовить и выполнить свертку базы

В актуальных релизах «1С:Бухгалтерии предприятия 3.0» и ряда других типовых конфигураций есть встроенная обработка «Свертка информационной базы». В БП 3.0 её ищут в разделе Администрирование → Обслуживание, в группе команд по корректировке данных. Если в вашем релизе команды нет, найдите её через поиск по меню: в строке поиска интерфейса наберите слово «свертка».

Подготовка

Перед сверткой
Выполнено: 0 / 6

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

Выполнение

  1. Разверните копию базы и запустите обработку свертки.
  2. Укажите дату свертки и организации, если обработка позволяет выбрать их.
  3. Запустите процесс. На базе в 20 ГБ он может занять от нескольких часов до суток — это нормально.
  4. После завершения сформируйте ту же ОСВ на ту же дату и сравните с сохранённой.
  5. Проверьте остатки по складам, взаиморасчёты с контрагентами и расчёты по зарплате.
  6. Если всё сошлось, повторите процедуру на рабочей базе в нерабочее время.

На время свертки пользователи должны выйти из базы, а регламентные задания и обмены — быть остановлены. Иначе документы, которые кто-то проведёт параллельно, могут попасть под удаление или испортить остатки.

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

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

СпособПлюсыМинусы
Свертка в текущей базеОдна база, настройки и пользователи на местеДолго, риск ошибки в рабочей базе
Новая база + архивИстория цела в архиве, новая база «чистая»Две базы, нужно переносить остатки и настройки

Для небольших организаций второй путь часто проще и безопаснее.

Как свертка влияет на размер базы, скорость и отчёты

Эффект зависит от доли документов, которые уходят под свертку. Если сворачиваются 7 лет из 9, движений становится в разы меньше.

Что ускоряется:

Что теряется:

  • 📉 отчёты с детализацией до документа за свёрнутые периоды;
  • 📉 оборотные данные: выручка, продажи, расходы по месяцам до даты свертки;
  • 📉 возможность распечатать первичку за прошлые годы из этой базы.

Почему файл базы не уменьшился

Частый сюрприз: свертка прошла, а файл 1Cv8.1CD весит столько же. Платформа помечает освободившееся место как пустое, но сразу файл не сжимает.

Для файловой базы:

  • в конфигураторе выполните Администрирование → Тестирование и исправление и отметьте сжатие таблиц информационной базы;
  • либо выгрузите базу в .dt и загрузите в новую пустую базу — файл получится минимального размера.

Для клиент-серверной базы место освобождается средствами СУБД. Это задача администратора сервера: сжатие файлов данных выполняется отдельно и в окно обслуживания.

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

Ограничения и ошибки при свертке 1С

Свертка — операция без отката. Ниже то, на чём она чаще всего спотыкается.

Диагностика: выберите симптом

Ещё несколько ограничений, о которых лучше знать заранее:

  • Доработанные конфигурации. Типовая обработка сворачивает типовые регистры. Собственные регистры и документы, добавленные программистом, она может не учесть. Их проверяют вручную или дорабатывают обработку.
  • РИБ. Сворачивать базу с распределёнными узлами без плана нельзя: узлы надо отключить, свернуть центральную базу и создать узлы заново.
  • Хранение документов. Бумажные и электронные первичные документы за свёрнутые годы всё равно нужно хранить по срокам архивного и налогового законодательства. Свертка базы не отменяет этих сроков, поэтому архивную копию базы держат до их истечения.
  • Закрытые периоды отчётности. Если по прошлым годам ещё возможна уточнённая декларация, удобнее иметь архивную базу с полной историей.

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

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