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

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

  • 🔹 Факторы, напрямую влияющие на длительность свертки (от объёма базы до настроек SQL-сервера).
  • 🔹 Типичные временные рамки для баз разного размера — от 10 ГБ до 1 ТБ+.
  • 🔹 Способы ускорения, которые сокращают процесс в 2–5 раз (включая скрипты и настройки сервера).
  • 🔹 Ошибки, которые ведут к зависанию или некорректной свертке, и как их избежать.

Если вы планируете свертку в рабочее время — остановитесь. Без предварительной оценки рисков процесс может заблокировать доступ пользователей на часы. Далее вы узнаете, как рассчитать время заранее и подготовиться к операции с минимальными потерями.

📊 Как часто вы проводите свертку базы 1С?
Раз в квартал
Раз в полгода
Раз в год
Только при критических проблемах
Никогда не проводил

1. Что такое свертка базы 1С и зачем она нужна

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

  • 📉 Снижение объёма базы — уменьшение размера файла .1CD или таблиц SQL для ускорения резервного копирования и восстановления.
  • Повышение производительности — сокращение времени выполнения отчётов, проведения документов и обмена данными.
  • 🔄 Очистка от «мусора» — удаление тестовых данных, дублей, неактуальных справочников.
  • 🔒 Подготовка к миграции — облегчение переноса на новую версию платформы или в облако.

Важно понимать: свертка не равноценна архивации. Она не сохраняет удалённые данные в отдельный файл — они безвозвратно теряются (если не сделать резервную копию заранее). Например, после свертки за 2020 год все документы того периода останутся в базе, но их движения по регистрам (остатки, обороты) будут пересчитаны и упрощены.

Типичные объекты, подвергающиеся свертке:

  • 📄 Документы (заказы, реализации, поступления) старше определённого периода.
  • 📊 Регистры накопления и бухгалтерии (остатки, обороты).
  • 🗄️ Неиспользуемые справочники (номенклатура, контрагенты без движений).
  • 🔗 Ссылки на удалённые объекты (если включена опция очистки ссылочной целостности).
⚠️ Внимание: Свертка не исправляет ошибки учёта! Если в базе есть расхождения по регистрам или некорректные проводки, их нужно устранить до процедуры. Иначе после свертки проблемы могут усугубиться (например, «разъедутся» остатки по бухгалтерским счётам).

2. От чего зависит время свертки: ключевые факторы

Длительность процесса определяется совокупностью технических и организационных параметров. Ниже — рейтинг факторов по степени влияния (от самого значимого):

Фактор Влияние на время Пример
Объём базы данных Линейная зависимость База 50 ГБ — 2 часа; 500 ГБ — 20+ часов
Метод свертки Разница в 3–10 раз Типовая обработка vs. скрипт с оптимизацией
Аппаратные ресурсы До 40% ускорения SSD vs. HDD, 16 ядер CPU vs. 4 ядра
Конфигурация 1С От 20% до 500% УТ 11 vs. ERP 2.5 (сложность регистров)
Настройки SQL-сервера До 30% ускорения Оптимизированные индексы, размер буфера

Объём базы — самый очевидный фактор. Например, свертка базы 1С:Бухгалтерия 3.0 объёмом 20 ГБ на современном сервере займёт ~30–60 минут, а база той же конфигурации в 200 ГБ — от 5 до 12 часов. При этом рост времени нелинейный: при увеличении объёма в 10 раз длительность может вырасти в 15–20 раз из-за накладных расходов на транзакции и блокировки.

Метод свертки играет ключевую роль. Типовые обработки от 1С (например, Удаление помеченных объектов или СверткаИБ.epf) работают универсально, но часто не оптимизированы под конкретную конфигурацию. Альтернатива — кастомные скрипты на встроенном языке, которые свертывают только нужные регистры и документы, игнорируя лишние объекты. Разница во времени может достигать 10-кратного ускорения.

Пример кода для ускоренной свертки регистра накопления

Процедура СвернутьРегистрНакопления(ИмяРегистра, ДатаГраницы)

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

| " + ИмяРегистра + ".Период КАК Период,

| " + ИмяРегистра + ".Регистратор КАК Регистратор

|ИЗ

| РегистрНакопления." + ИмяРегистра + " КАК " + ИмяРегистра +

"|ГДЕ

| " + ИмяРегистра + ".Период < &ДатаГраницы";

Запрос.УстановитьПараметр("ДатаГраницы", ДатаГраницы);

Результат = Запрос.Выполнить();

// Далее — удаление записей пакетами по 1000 строк

КонецПроцедуры

Аппаратные ресурсы часто недооценивают. Например, свертка на виртуальной машине с 2 ядрами CPU и HDD-диском может занять в 3–4 раза больше времени, чем на физическом сервере с 8 ядрами и NVMe-накопителем. Критические параметры:

  • 🖥️ CPU: чем больше ядер — тем быстрее обрабатываются транзакции (оптимально 8+ ядер для баз 100+ ГБ).
  • 💾 Дисковая подсистема: SSD ускоряет операции ввода-вывода в 5–10 раз по сравнению с HDD.
  • 🧠 ОЗУ: для SQL-сервера рекомендуется не менее 16 ГБ + 1 ГБ на каждые 10 ГБ базы.
⚠️ Внимание: Если свертка идёт на виртуальной машине в облаке (например, 1С:Fresh или AWS), проверьте лимиты по CPU и дисковому IOPS. Многие тарифы искусственно ограничивают производительность, что увеличивает время процесса в 2–3 раза.

3. Типичное время свертки для баз разного размера

Ниже приведена ориентировочная таблица времени свертки для различных конфигураций и объёмов баз. Данные основаны на тестах на сервере с Intel Xeon E5-2678 (16 ядер), 32 ГБ ОЗУ, SSD NVMe и Microsoft SQL Server 2019:

Размер базы Конфигурация 1С Метод свертки Примерное время
10–50 ГБ Бухгалтерия 3.0, УТ 11 Типовая обработка 30–90 минут
50–200 ГБ ERP 2.4, КА 2.4 Типовая обработка 3–8 часов
200–500 ГБ УПП 1.3, Комплексная автоматизация Оптимизированный скрипт 6–12 часов
500 ГБ–1 ТБ ERP 2.5, ЗУП 3.1 Оптимизированный скрипт + SQL-индексы 12–36 часов
1 ТБ+ Корпоративные конфигурации Поэтапная свертка с разбивкой по регистрам 2–5 суток

Важно: приведённые значения — средние. Реальное время может отличаться на ±30% из-за:

  • 🔌 Нагрузки на сервер (параллельные задачи, антивирусные сканы).
  • 🔄 Фрагментации диска (на HDD это критично).
  • 📡 Сетевых задержек (если база на удалённом SQL-сервере).
  • 🛠️ Ошибок в данных (непроводённые документы, разбитые ссылки).

Для баз объёмом более 300 ГБ рекомендуется проводить свертку поэтапно:

  1. Сначала свернуть регистры накопления (остатки, обороты).
  2. Затем — регистры бухгалтерии и расчётов.
  3. В последнюю очередь — документы и справочники.
💡

Перед сверткой базы более 100 ГБ выполните команду DBCC SHRINKFILE в SQL Server для уменьшения размера файла лога транзакций. Это освободит место на диске и ускорит операции записи.

4. Как ускорить свертку: практические советы

Сократить время свертки можно на 30–70%, если заранее подготовить систему и использовать оптимизированные методы. Ниже — чек-лист действий для администраторов:

Остановить все фоновые задачи 1С (регламентные задания, обмены)|Выполнить полное резервное копирование базы|Очистить кэш 1С и временные файлы|Отключить антивирус на время процедуры|Проверка целостности базы (TestDB)

-->

1. Оптимизация SQL-сервера

Перед сверткой выполните следующие настройки в Microsoft SQL Server Management Studio:

  • 🔧 Установите режим восстановления базы в SIMPLE (если не нужны транзакционные логи):
  • ALTER DATABASE [YourBaseName] SET RECOVERY SIMPLE;
  • 🔧 Увеличьте размер буферного пула до 70–80% от доступной ОЗУ:
  • EXEC sys.sp_configure 'max server memory (MB)', 24000;
    

    RECONFIGURE;

  • 🔧 Обновите статистику и перестройте индексы:
  • EXEC sp_updatestats;
    

    ALTER INDEX ALL ON [YourBaseName] REBUILD;

2. Использование специализированных обработок

Вместо стандартной СверткаИБ.epf используйте альтернативные решения:

  • 📥 Обработка «Универсальная свертка» от Инфостарт (поддерживает поэтапную свертку и параллельную обработку регистров).
  • 📥 1C:DataCompression — платное решение для глубокой очистки с анализом связей между объектами.
  • 📥 Кастомные скрипты на встроенном языке (пример см. в спойлере выше).

3. Аппаратные улучшения

Если свертка проводится регулярно, рассмотрите апгрейд сервера:

  • 🖥️ CPU: Процессоры с высокой частотой (3.5+ ГГц) и поддержкой AVX-инструкций (например, Intel Xeon Scalable или AMD EPYC).
  • 💾 Диски: RAID-массив из SSD (например, Samsung PM983) или NVMe-накопители (Intel Optane).
  • 🧠 ОЗУ: Не менее 32 ГБ для SQL-сервера + 1 ГБ на каждые 10 ГБ базы.

4. Разбивка процесса на этапы

Для баз >500 ГБ свертку целесообразно проводить по частям:

  1. Свернуть регистры накопления за старые периоды (например, до 2022 года).
  2. Удалить помеченные объекты (документы, справочники) без движений.
  3. Оптимизировать индексы и статистику SQL.
  4. Повторить свертку для регистров бухгалтерии.
⚠️ Внимание: Если база используется в режиме файлового варианта (не SQL), свертка может занять в 2–3 раза больше времени из-за ограничений формата .1CD. В этом случае рекомендуется предварительно конвертировать базу в SQL-формат.

5. Типичные ошибки и как их избежать

Неправильно проведённая свертка может привести к потере данных, разрыву ссылочной целостности или зависанию базы. Ниже — топ-5 ошибок и способы их предотвращения:

  • 🚫 Свертка без резервной копии — даже если процесс прервётся, восстановить данные будет невозможно.
    ⚠️ Внимание: Резервную копию нужно делать не через 1С, а на уровне SQL (BACKUP DATABASE) или файловой системы (копия файлов .1CD/.DT).
  • 🚫 Игнорирование ошибок целостности — если в базе есть некорректные ссылки или непроводённые документы, свертка может «обрубить» связи между объектами.

    Перед процедурой выполните проверку:

    ТестированиеИСправлением(Истина, Истина);
  • 🚫 Свертка в рабочее время — процесс блокирует таблицы, что приводит к ошибкам у пользователей.

    Оптимальное время: ночь с пятницы на субботу или техническое окно.

  • 🚫 Нехватка места на диске — во время свертки SQL-сервер может временно требовать до 200% от размера базы свободного пространства.

    Проверьте свободное место командой:

    EXEC sp_spaceused;
  • 🚫 Использование устаревших обработок — типовые скрипты от 1С не оптимизированы для больших баз.

    Пример: обработка СверткаИБ.epf из поставки 1С:Предприятие 8.2 не учитывает особенности SQL-сервера 2016+.

Если свертка зависла, не прерывайте процесс насильно! Сначала проверьте:

  • 🔍 Логи SQL-сервера на наличие блокировок (sp_who2).
  • 🔍 Журнал событий 1С (C:\Program Files\1cv8\logs\).
  • 🔍 Диспетчер задач — не «подвисла» ли сессия ragent.exe или rmngr.exe.
💡

Если свертка длится дольше ожидаемого времени на 30%+, проверьте нагрузку на CPU и диск. Частая причина — антивирус, сканирующий временные файлы 1С.

6. Альтернативы свертке: когда она не нужна

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

  • 🔄 Архивация данных — перенос старых документов в отдельную базу с помощью обработок типа «ВыгрузкаЗакрытыхПериодов».
  • 🗃️ Разделение базы — выделение подсистем (например, Зарплата и Бухгалтерия) в отдельные информационные базы.
  • 🧹 Очистка кэша и индексов — регулярное выполнение:
  • DBCC FREEPROCCACHE; -- Очистка плана выполнения
    

    DBCC DROPCLEANBUFFERS; -- Очистка буфера

  • 🔗 Обновление платформы — новые версии 1С:Предприятие 8.3.20+ оптимизированы для работы с большими базами.

Когда свертка нецелесообразна:

  • 📅 Если история нужна для анализа (например, в ERP-системах с глубокой аналитикой).
  • 🔄 Если база используется для регламентированной отчётности (например, налоговые декларации за прошлые годы).
  • 🛠️ Если в базе много кастомных доработок с нестандартными связями между объектами.

Альтернативный подход — частичная свертка, когда удаляются только:

  • 📊 Регистры накопления старше 3–5 лет (остатки пересчитываются).
  • 📄 Документы без движений (например, черновики заказов).
  • 🗑️ Временные объекты (логи обменов, устаревшие задачи).

7. Пошаговая инструкция: как провести свертку без ошибок

Алгоритм для безопасной свертки базы (актуально для SQL и файлового варианта):

  1. Шаг 1. Подготовка
    • 📅 Запланируйте процедуру на нерабочее время (ночь/выходные).
    • 📋 Уведомите пользователей о простое системы.
    • 🔌 Отключите регламентные задания и обмены данными.
  2. Шаг 2. Резервное копирование
    • 💾 Для SQL: BACKUP DATABASE [BaseName] TO DISK = 'D:\Backup\BaseName.bak';
    • 💾 Для файлового варианта: скопируйте папку с базой (.1CD, .DT).
  3. Шаг 3. Проверка целостности

    Запустите тестирование и исправление:

    ТестированиеИСправлением(Истина, Истина);
  4. Шаг 4. Настройка SQL-сервера
    • 🔧 Установите RECOVERY MODE = SIMPLE.
    • 🔧 Увеличьте max server memory до 80% от ОЗУ.
  5. Шаг 5. Запуск свертки

    Используйте обработку (например, СверткаИБ.epf) или скрипт. Пример команд для файлового варианта:

    // 1. Пометить объекты на удаление
    

    СверткаИБ.ПометитьОбъектыНаУдаление(НачалоГода(ТекущаяДата()) - 3*365);

    // 2. Удалить помеченные объекты

    СверткаИБ.УдалитьПомеченныеОбъекты();

  6. Шаг 6. Контроль процесса
    • 📊 Отслеживайте прогресс в Журнале регистрации 1С или через sp_who2 в SQL.
    • ⏱️ Если процесс «завис» дольше 2 часов без прогресса — проверьте логи на ошибки.
  • Шаг 7. Завершение
    • 🔄 Перезапустите сервер 1С и SQL.
    • 📊 Проверьте целостность данных (отчёты, остатки).
    • 💾 Сделайте новую резервную копию.
    • 💡

      Если свертка прервалась, не запускайте её заново сразу! Сначала выполните DBCC CHECKDB для проверки целостности SQL-базы.

      FAQ: Частые вопросы о свертке базы 1С

      ❓ Можно ли прервать свертку и продолжить позже?

      ✅ Да, но не рекомендуется. При прерывании могут остаться «обрубленные» ссылки между объектами. Если пришлось остановить процесс:

      1. Проверьте целостность базы (ТестированиеИСправлением).
      2. Удалите вручную помеченные объекты, которые не были обработаны.
      3. Запустите свертку заново с той же даты границы.

    ⚠️ Если база в файловом формате, прерывание может привести к повреждению файла .1CD!

    ❓ Сколько места на диске нужно для свертки базы 100 ГБ?

    💾 Минимальные требования:

    • Для SQL-варианта: свободное место = размер базы × 1.5 (например, 100 ГБ → 150 ГБ свободных).
    • Для файлового варианта: свободное место = размер базы × 2 (100 ГБ → 200 ГБ).
    • 🔹 SQL-сервер временно создаёт копии таблиц, а файловый вариант переписывает весь .1CD файл.

    ❓ Как свернуть базу, если она используется 24/7?

    🔄 Варианты для круглосуточных систем:

    1. Репликация: Создайте копию базы на другом сервере, сверните её, затем замените основную базу.
    2. Поэтапная свертка: Свертывайте по одному регистру в неделю (например, сначала ТоварыНаСкладах, затем Взаиморасчёты).
    3. Облачный бэкап: Используйте 1С:Fresh или AWS RDS для создания «теневой» копии базы.

    ⚠️ В любом случае потребуется кратковременное отключение пользователей (5–15 минут) для финальной синхронизации.

    ❓ Почему после свертки база не уменьшилась?

    🔍 Возможные причины:

    • 📊 SQL-сервер не освободил место: выполните DBCC SHRINKDATABASE.
    • 🗑️ Удалённые данные остались в логе транзакций: переведите базу в режим SIMPLE и сделайте бэкап.
    • 🔄 Свертка была частичной: проверьте, какие регистры не были обработаны.
    • 📄 В базе много «тяжёлых» объектов: например, прикреплённые файлы (PDF, изображения) не свернулись.
    ❓ Можно ли свернуть базу 1С 7.7?

    ❌ Нет, в 1С:Предприятие 7.7 нет встроенного механизма свертки. Альтернативы:

    • 📤 Выгрузка/загрузка: Перенести данные в новую базу через DT→DT с фильтрацией по дате.
    • 🗃️ Архивация: Вручную удалить старые документы и пересчитать итоги.
    • 🆕 Миграция на 8.3: Перенести данные в актуальную версию с последу