Вопрос о свертке информационной базы (удалении старых документов и замене их входящими остатками) рано или поздно встает перед любым администратором или программистом 1С. Часто поводом становятся чисто психологические факторы — например, база перешагнула порог в 50 или 100 Гб, или время создания выгрузки .dt начало превышать разумные пределы. Однако свертка — это сложная, рискованная и трудозатратная операция. Разберем подробно, когда она действительно необходима, а когда от нее лучше воздержаться.
Проанализируем техническую сторону вопроса. Существует несколько ситуаций, когда объем данных начинает напрямую влиять на стабильность системы:
.1CD), существует жесткий предел размера одной таблицы — 4 Гб. Когда таблица итогов или какого-либо регистра приближается к этому порогу, запись в базу станет невозможной. В этой ситуации свертка — единственный способ выжить без перехода на SQL.chdbfl.exe или штатное ТиИ занимает более суток, это лишает администратора возможности оперативно исправлять логические ошибки в базе.Посмотрим на проблему с точки зрения учета. Иногда свертка нужна не технике, а людям:
Выясним причину, по которой многие специалисты выступают против этой процедуры. Рассмотрим основные аргументы:
Незначительное уменьшение объема: Ожидание того, что удаление 70% документов уменьшит базу в 10 раз, ошибочно. Значительную часть объема занимают справочники, метаданные и, что особенно важно, присоединенные файлы (сканы, картинки). Свертка регистров может дать экономию всего в 15–20% от общего объема .mdf.
Потеря аудиторского следа: После свертки вы не сможете быстро ответить на вопрос: "А на основании чего образовался этот долг в 2018 году?". Вам придется разворачивать архивную копию базы, что крайне неудобно для оперативной работы бухгалтерии и отдела продаж.
Сложности с возвратами и корректировками: Разберем ситуацию: покупатель возвращает товар, купленный два года назад. Если документ продажи удален, система не сможет автоматически определить партию, себестоимость и ставку НДС. Каждую такую операцию придется вводить вручную через "ввод остатков", что порождает новые ошибки.
Если решение о свертке принято, проанализируем последовательность действий. Нельзя просто запустить обработку "Свертка информационной базы".
Во-первых, необходимо исправить отрицательные остатки. Проверим базу простым запросом или отчетом по остаткам. Если на дату свертки есть "минусы", свертка зафиксирует их как входящие остатки, и ваш учет превратится в хаос. Во-вторых, нужно выполнить закрытие всех периодов. Проанализируем состояние регистров: все регламентные операции по расчету себестоимости и распределению затрат должны быть завершены без ошибок.
Рассмотрим пример кода, который часто используется для программной установки даты запрета перед началом масштабных манипуляций с данными:
// Установка даты запрета для всех пользователей
ДатаЗапрета = '20231231235959';
ДатыЗапретаИзмененияДанных.УстановитьДатуЗапрета(ДатаЗапрета);
Важно понимать, что после удаления данных в SQL-базе место на диске не освободится само по себе. SQL Server помечает страницы как пустые, но удерживает файл .mdf в прежнем размере. Чтобы реально вернуть место операционной системе, необходимо выполнить команду SHRINKDATABASE или SHRINKFILE.
Однако помните: процедура Shrink вызывает колоссальную фрагментацию индексов. Сразу после нее необходимо выполнить REINDEX (перестроение индексов). Если этого не сделать, скорость работы базы упадет в несколько раз.
Также проанализируем рост лога транзакций (.ldf). Процесс удаления миллионов строк — это тяжелая транзакция. Чтобы диск не переполнился, переключите модель восстановления базы (Recovery Model) из Full в Simple на время проведения работ.
Прежде чем приступать к "резке" базы, рассмотрим современные методы оптимизации, которые часто оказываются эффективнее:
Универсальный обмен данными XML или Конвертацию данных). Это гарантирует отсутствие "хвостов" и битых ссылок, которые неизбежно остаются после типовой свертки.ВерсииОбъектов или ЦеныНоменклатуры), можно очистить только его, не трогая финансово значимые документы.Оптимальным для современных систем 1С считается хранение данных за текущий год плюс три полных предыдущих года. Это соответствует сроку исковой давности и глубине налоговых проверок. Если вашей базе более 10 лет (как в примере из темы форума с 2014 года), и объем данных начинает мешать обновлению на новые редакции (например, с УТ 11.4 на 11.5), то свертка или перенос остатков в новую базу становятся оправданными инвестициями времени.
Подводя итог: если скорость работы вас устраивает, а дискового пространства достаточно — не делайте свертку. Лучше потратьте это время на аудит справочников и настройку регламентных заданий SQL. Свертка — это крайняя мера, к которой нужно подходить с полным пониманием рисков и четким планом восстановления.