Как выполнить свертку и уменьшить размер большой файловой базы 1С УТ 11 (50 Гб), если штатная процедура зависает?

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

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

Почему штатная свертка не работает на больших объемах?

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

  1. Блокировки таблиц: При массовом удалении данных (что и делает свертка) часто блокируется вся таблица целиком, что парализует работу и замедляет транзакции.
  2. Размер страницы: У файла базы данных есть параметр "размер страницы". Если одна из внутренних таблиц (например, регистр версионирования или регистр бухгалтерии) превышает лимит (обычно 4 Гб для стандартной страницы), база может стать нестабильной.
  3. Сложность операции DELETE: Для базы данных операция удаления тысяч записей с перестроением индексов гораздо тяжелее, чем запись новых данных.

Рассмотрим стратегии, которые помогут нам "урезать" базу, когда стандартный путь закрыт.

Стратегия 1: Перенос остатков в чистую базу ("Свертка методом переноса")

Это наиболее надежный метод для критически больших баз. Вместо того чтобы пытаться удалить старые данные ("отрезать хвост"), мы перенесем актуальные данные в новую систему.

Давайте проанализируем преимущества этого подхода. Операция записи (INSERT) в новую, чистую базу без фрагментации проходит намного быстрее и стабильнее, чем удаление (DELETE) из старой, перегруженной базы.

План действий:

  1. Создадим абсолютно пустую информационную базу той же конфигурации (УТ 11).
  2. Воспользуемся механизмами обмена данными. В 1С:УТ 11 есть встроенные возможности синхронизации (например, через формат EnterpriseData) или выгрузки данных.
  3. Настроим правила выгрузки так, чтобы переносились только:
    • Справочники (НСИ).
    • Документы ввода начальных остатков (сформированные на дату свертки).
    • Документы за текущий, незавершенный период.
  4. Если типовой обмен не подходит, можно использовать обработку "Выгрузка и загрузка данных XML" или создать правила в "Конвертации данных", перенося только срезы последних данных.

Этот метод гарантирует, что мы получим компактную базу без "мусора" и фрагментации.

Стратегия 2: Предварительная "мягкая" очистка без свертки

Зачастую огромный объем базы занимают не сами документы, а служебная информация. Если удалить её, размер базы может уменьшиться на 30–50%, после чего штатная свертка может пройти успешно.

Давайте проверим следующие объекты:

1. Версионирование объектов

В конфигурациях вроде УТ 11 и ERP механизм версионирования (хранение истории изменений документов) сохраняет каждую версию объекта в регистр сведений ВерсииОбъектов. За 15 лет этот регистр может разрастись до десятков гигабайт.

Решение: Запустим стандартную обработку очистки версий. Оставим историю только за последние 3–6 месяцев. Это операция выполняется порционно и редко приводит к зависанию всей системы.

2. Присоединенные файлы

Даже если вы не храните картинки номенклатуры, в базе могут скапливаться сканы договоров, файлы обмена с сайтами или вложения электронных писем. Хранить их внутри файла 1Cv8.1CD при таких объемах нерационально.

Решение: Настроим хранение файлов в томах на диске (Администрирование – Настройки работы с файлами – Хранить файлы в томах на диске). После переноса файлов база значительно "похудеет" после сжатия.

Стратегия 3: Использование временного мощного сервера

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

Вариант А: Временный клиент-серверный вариант (Linux + PostgreSQL)

Файловая база работает медленнее SQL-версии на операциях массового изменения данных. Мы можем развернуть тестовый стенд:

  1. Установим на достаточно мощный ПК (желательно с большим объемом RAM и SSD) операционную систему Linux.
  2. Развернем связку Сервер 1С + PostgreSQL (это бесплатные решения, требующие только лицензии на сервер 1С, которую можно использовать временно или арендовать).
  3. Загрузим нашу базу (dt) в SQL.
  4. Выполним свертку средствами SQL-версии. Сервер 1С (особенно 64-битный) гораздо эффективнее управляет памятью и транзакциями.
  5. После завершения свертки выгрузим базу обратно в файловый формат (dt) и вернем на рабочий ПК.

Вариант Б: Аренда сервера

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

Стратегия 4: Автономный сервер и RAM-диск

Для небольших компаний, у которых нет лицензии на сервер 1С, существует интересная альтернатива, позволяющая ускорить файловую базу.

Использование Автономного сервера

Начиная с платформы 8.3.14, доступен так называемый "Автономный сервер". Для файловых баз до 3-х пользователей он не требует отдельной серверной лицензии. Это позволяет запускать базу не в процессе 1cv8c.exe (клиент), а через серверный процесс ibsrv.exe. Это дает доступ к 64-битному адресному пространству памяти (если установлена 64-битная платформа), что исключает ошибки "Недостаточно памяти" при свертке.

RAM-диск (Диск в оперативной памяти)

Узкое место файловой базы при удалении данных — дисковые операции ввода-вывода. Если у нас есть компьютер с 64 Гб оперативной памяти (или больше), мы можем:

  1. Создать виртуальный диск в оперативной памяти (RAM-disk) размером, достаточным для размещения базы.
  2. Скопировать файл базы туда.
  3. Запустить процесс свертки. Скорость операций возрастет в разы, так как не будет задержек жесткого диска.
  4. После окончания обязательно скопировать уменьшенный файл обратно на физический диск (так как данные в RAM пропадают при перезагрузке).

Техническое обслуживание файла базы данных

После любой операции массового удаления данных (свертки или очистки регистров) размер файла 1Cv8.1CD на диске автоматически не уменьшится. Внутри файла образуются пустоты.

Чтобы физически уменьшить размер файла, необходимо выполнить следующие действия в Конфигураторе:

  1. Сделать резервную копию.
  2. Зайти в меню Администрирование -> Тестирование и исправление.
  3. Установить галочку "Сжатие таблиц информационной базы".
  4. Дождаться окончания процесса.

Также рекомендуется перед сверткой проверить физическую целостность базы утилитой chdbfl.exe (находится в папке bin установленной платформы), так как скрытые ошибки структуры часто являются причиной зависания длительных операций.

Резюме

Для базы в 50 Гб на "слабом" железе простая свертка обречена на провал. Мы рекомендуем действовать по следующему алгоритму:

  1. Попытаться очистить ВерсииОбъектов и вынести файлы во внешние тома. Сделать сжатие.
  2. Если база все еще огромна — использовать метод переноса остатков в чистую базу (Стратегия 1). Это самый безопасный путь для старых баз.
  3. Если нужен именно "ремонт" текущей базы — использовать временный мощный сервер (SQL) или автономный сервер с большим объемом оперативной памяти.
← На главную