Когда действительно пора делать свертку информационной базы 1С?

Системный администратор 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

Вопрос о свертке информационной базы (удалении старых документов и замене их входящими остатками) рано или поздно встает перед любым администратором или программистом 1С. Часто поводом становятся чисто психологические факторы — например, база перешагнула порог в 50 или 100 Гб, или время создания выгрузки .dt начало превышать разумные пределы. Однако свертка — это сложная, рискованная и трудозатратная операция. Разберем подробно, когда она действительно необходима, а когда от нее лучше воздержаться.

Технические критерии: когда свертка обоснована

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

  1. Проблемы с регламентными операциями SQL: Если ежедневное обслуживание базы (реиндексация, обновление статистики, бэкап) перестает укладываться в отведенное технологическое окно. Например, если полный бэкап делается 5–6 часов, это может критически задержать восстановление системы в случае сбоя.
  2. Ограничения файловой системы: В случае использования файлового варианта базы (.1CD), существует жесткий предел размера одной таблицы — 4 Гб. Когда таблица итогов или какого-либо регистра приближается к этому порогу, запись в базу станет невозможной. В этой ситуации свертка — единственный способ выжить без перехода на SQL.
  3. Низкая скорость отчетов: Если база "еле шевелится" из-за того, что таблицы итогов регистров раздуты до миллионов записей, а серверные мощности исчерпаны. Особенно это актуально для старых конфигураций, где не всегда оптимально работают механизмы хранения итогов.
  4. Долгое время тестирования и исправления (ТиИ): Если процедура chdbfl.exe или штатное ТиИ занимает более суток, это лишает администратора возможности оперативно исправлять логические ошибки в базе.

Методические и административные причины

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

Почему свертка может быть бесполезной?

Выясним причину, по которой многие специалисты выступают против этой процедуры. Рассмотрим основные аргументы:

Незначительное уменьшение объема: Ожидание того, что удаление 70% документов уменьшит базу в 10 раз, ошибочно. Значительную часть объема занимают справочники, метаданные и, что особенно важно, присоединенные файлы (сканы, картинки). Свертка регистров может дать экономию всего в 15–20% от общего объема .mdf.

Потеря аудиторского следа: После свертки вы не сможете быстро ответить на вопрос: "А на основании чего образовался этот долг в 2018 году?". Вам придется разворачивать архивную копию базы, что крайне неудобно для оперативной работы бухгалтерии и отдела продаж.

Сложности с возвратами и корректировками: Разберем ситуацию: покупатель возвращает товар, купленный два года назад. Если документ продажи удален, система не сможет автоматически определить партию, себестоимость и ставку НДС. Каждую такую операцию придется вводить вручную через "ввод остатков", что порождает новые ошибки.

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

Если решение о свертке принято, проанализируем последовательность действий. Нельзя просто запустить обработку "Свертка информационной базы".

Во-первых, необходимо исправить отрицательные остатки. Проверим базу простым запросом или отчетом по остаткам. Если на дату свертки есть "минусы", свертка зафиксирует их как входящие остатки, и ваш учет превратится в хаос. Во-вторых, нужно выполнить закрытие всех периодов. Проанализируем состояние регистров: все регламентные операции по расчету себестоимости и распределению затрат должны быть завершены без ошибок.

Рассмотрим пример кода, который часто используется для программной установки даты запрета перед началом масштабных манипуляций с данными:


// Установка даты запрета для всех пользователей
ДатаЗапрета = '20231231235959';
ДатыЗапретаИзмененияДанных.УстановитьДатуЗапрета(ДатаЗапрета);

Технические нюансы работы с SQL после свертки

Важно понимать, что после удаления данных в SQL-базе место на диске не освободится само по себе. SQL Server помечает страницы как пустые, но удерживает файл .mdf в прежнем размере. Чтобы реально вернуть место операционной системе, необходимо выполнить команду SHRINKDATABASE или SHRINKFILE.

Однако помните: процедура Shrink вызывает колоссальную фрагментацию индексов. Сразу после нее необходимо выполнить REINDEX (перестроение индексов). Если этого не сделать, скорость работы базы упадет в несколько раз.

Также проанализируем рост лога транзакций (.ldf). Процесс удаления миллионов строк — это тяжелая транзакция. Чтобы диск не переполнился, переключите модель восстановления базы (Recovery Model) из Full в Simple на время проведения работ.

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

Прежде чем приступать к "резке" базы, рассмотрим современные методы оптимизации, которые часто оказываются эффективнее:

  1. Вынос файлов во внешнее хранилище: Если ваша УТ 11 весит 46 Гб, велика вероятность, что 30 Гб из них — это картинки товаров и сканы договоров. Используйте штатную настройку "Хранить файлы в томах на диске". Это уменьшит размер базы SQL в разы, сохранив при этом всю историю документов.
  2. Перенос остатков в чистую базу: Вместо удаления старого в текущей базе, создайте новую пустую базу той же конфигурации и перенесите в нее только справочники и остатки (например, через Универсальный обмен данными XML или Конвертацию данных). Это гарантирует отсутствие "хвостов" и битых ссылок, которые неизбежно остаются после типовой свертки.
  3. Использование свертки по конкретным регистрам: Если "пухнет" только один регистр (например, ВерсииОбъектов или ЦеныНоменклатуры), можно очистить только его, не трогая финансово значимые документы.

Рекомендация по глубине хранения

Оптимальным для современных систем 1С считается хранение данных за текущий год плюс три полных предыдущих года. Это соответствует сроку исковой давности и глубине налоговых проверок. Если вашей базе более 10 лет (как в примере из темы форума с 2014 года), и объем данных начинает мешать обновлению на новые редакции (например, с УТ 11.4 на 11.5), то свертка или перенос остатков в новую базу становятся оправданными инвестициями времени.

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

← На главную