Администрирование · 10 мин
Как сжать файловую базу 1С и уменьшить файл 1Cv8.1CD
Как сжать файловую базу 1С: тестирование и исправление, утилита chdbfl, очистка данных, перенос в новую базу. Снижаем размер файла 1Cv8.1CD без потери данных.
Файловая база 1С хранится в одном файле 1Cv8.1CD, который со временем разрастается: в нём копятся помеченные на удаление объекты, история версий, временные таблицы и «пустоты» после удалённых данных. Даже если вы удалите половину документов, файл на диске сам по себе не уменьшится — платформа просто помечает место внутри файла как свободное.
Сжать файловую базу можно несколькими способами: штатной процедурой «Тестирование и исправление» с реструктуризацией таблиц, выгрузкой и загрузкой через dt, переносом данных в чистую базу. Выбор зависит от того, что именно раздуло файл — мусор внутри таблиц, большие вложения или реальный объём учётных данных.
Все операции выполняются только при закрытых сеансах пользователей и только после создания резервной копии. Для файловой базы достаточно скопировать файл 1Cv8.1CD в отдельную папку — это полноценный бэкап.
Почему файл 1Cv8.1CD растёт и не уменьшается сам
Файловая СУБД 1С устроена так, что удаление данных не возвращает место операционной системе. Когда вы удаляете документы или очищаете регистры, внутри файла образуются свободные области, которые платформа будет переиспользовать под новые записи. Поэтому размер файла отражает не текущий объём данных, а исторический максимум плюс служебные структуры.
Типичные источники роста файла: большие присоединённые файлы (сканы, фото, PDF в справочниках присоединённых файлов), хранилище версий объектов, журналы регистрации большого объёма, регистры сведений с историей изменений, полнотекстовый поиск. Прежде чем сжимать, полезно понять, что именно занимает место — иначе после сжатия файл вырастет снова за пару месяцев.
Вероятно, место занимают присоединённые файлы или версии объектов — проверьте хранилище вложений
Это нормально: место внутри файла освободилось, но не возвращено диску — нужна реструктуризация
Крупный файл и фрагментация ухудшают скорость; сжатие часто даёт заметный прирост
Подготовка: бэкап и монопольный доступ
Любое сжатие файловой базы требует монопольного режима: все пользователи должны выйти, фоновые задания — завершиться, а сам файл не должен быть открыт другими процессами (включая антивирусные проверки в момент работы). Если база лежит в общей сетевой папке, убедитесь, что никто не зашёл в неё с другого компьютера.
Перед началом скопируйте папку базы целиком или хотя бы файл 1Cv8.1CD в надёжное место. Проверьте, что копия открывается: добавьте её как отдельную базу в список информационных баз и запустите. Это займёт пару минут, но гарантирует, что у вас есть рабочая точка отката.
Способ 1: Тестирование и исправление с реструктуризацией
Штатный инструмент сжатия встроен в конфигуратор. Откройте базу в конфигураторе, перейдите в меню «Администрирование» → «Тестирование и исправление». Отметьте пункты «Реиндексация таблиц информационной базы» и «Реструктуризация таблиц информационной базы» — именно реструктуризация пересоздаёт файл и возвращает неиспользуемое место диску. Для чистого сжатия без риска потери данных проверки ссылочной целостности можно не включать.
Процесс на больших базах занимает от десятков минут до нескольких часов, прерывать его нельзя. После завершения сравните размер 1Cv8.1CD до и после: на «пустотах» после массовых удалений файл может уменьшиться в разы. Если размер почти не изменился — значит, место занято реальными данными, и нужно чистить содержимое.
- 1Сделайте копию папки с базой или файла 1Cv8.1CD
- 2Попросите всех пользователей выйти и убедитесь, что сеансов нет
- 3Откройте базу в конфигураторе: Администрирование → Тестирование и исправление
- 4Отметьте «Реиндексация» и «Реструктуризация таблиц», нажмите «Выполнить»
- 5Дождитесь окончания, не прерывая процесс
- 6Сравните размер файла 1Cv8.1CD до и после, проверьте работу базы
Способ 2: Выгрузка в dt и загрузка в пустую папку
Альтернативный и часто более эффективный метод — полная выгрузка базы в файл dt через конфигуратор («Администрирование» → «Выгрузить информационную базу»), а затем загрузка этого dt в новую пустую папку («Загрузить информационную базу»). При такой загрузке файл 1Cv8.1CD создаётся с нуля, без внутренней фрагментации и накопленного мусора.
Дополнительное преимущество: файл dt сам по себе является сжатой копией и удобен для архивного хранения. Учтите ограничения: выгрузка в dt для очень больших баз занимает много времени, а загруженная база получает новый идентификатор — при обменах с другими базами это может потребовать перенастройки.
Способ 3: Очистка данных перед сжатием
Если файл велик из-за реального содержимого, сначала удалите лишнее штатными средствами: обработкой «Удаление помеченных объектов», сокращением журнала регистрации (в конфигураторе: «Администрирование» → «Настройка журнала регистрации» → «Сократить»), отключением или ограничением версионирования объектов, выгрузкой присоединённых файлов во внешнее хранилище (тома хранения файлов).
После очистки обязательно выполните реструктуризацию или выгрузку-загрузку — иначе освобождённое место останется внутри файла. Комбинация «очистка + реструктуризация» даёт максимальный эффект: сначала убираются данные, затем файл физически ужимается.
Сравнение вариантов
Быстрый штатный способ, не меняет идентификатор базы; не поможет, если файл раздут реальными данными
Создаёт файл с нуля, убирает фрагментацию; дольше по времени, меняется идентификатор базы
Единственный путь при больших вложениях и версиях; требует анализа, что именно удалять
Утилита chdbfl: когда база повреждена
Если файл базы повреждён (ошибки формата потока, внезапные завершения работы), перед сжатием используйте утилиту chdbfl.exe из каталога bin установленной платформы. Запустите её, укажите путь к 1Cv8.1CD, отметьте «Исправлять обнаруженные ошибки» и выполните проверку. Работайте только с копией файла.
После успешного восстановления chdbfl откройте базу в конфигураторе и проведите тестирование и исправление с реструктуризацией — это заодно вернёт компактный размер. Учтите: chdbfl при исправлении может удалять повреждённые фрагменты данных, поэтому без резервной копии запускать её нельзя.
Проверка результата и профилактика роста
После сжатия убедитесь, что база работает корректно: откройте основные отчёты, проведите тестовый документ, сверьте итоги по ключевым регистрам с копией. Сравните размер файла — если уменьшение незначительно, значит, объём занят данными, и стоит пересмотреть хранение вложений и версий.
Чтобы база не разрасталась снова: настройте хранение присоединённых файлов в томах на диске вместо базы, ограничьте глубину версионирования, периодически сокращайте журнал регистрации, регулярно удаляйте помеченные объекты. Для баз, которые продолжают активно расти и используются несколькими пользователями, рассмотрите переход на клиент-серверный вариант (PostgreSQL, MS SQL) — там управление объёмом гибче.
Как проверить результат
Файл заметно меньше после массовых удалений или стабилен при реальных данных
Размер не изменился, хотя данные удаляли — реструктуризация не выполнялась
Открываются отчёты, проводятся документы, итоги совпадают с копией
Ошибки при открытии, расхождение итогов — откатитесь на бэкап и разбирайте причину
Через месяц файл растёт умеренно, пропорционально новым данным
Файл быстро раздувается снова — не отключено версионирование или вложения хранятся в базе
Что важно запомнить
Файл 1Cv8.1CD не уменьшается сам: сжатие делается через «Тестирование и исправление» с реструктуризацией или через выгрузку-загрузку dt. Всегда начинайте с резервной копии и монопольного доступа, а при повреждениях сначала используйте chdbfl на копии. Чтобы база не росла снова, выносите вложения в тома и ограничивайте версионирование.
Частые вопросы
Удалил тысячи документов, а файл базы не уменьшился. Почему?
Удаление данных лишь помечает место внутри файла как свободное — платформа использует его под новые записи, но диску место не возвращает. Чтобы файл физически уменьшился, после удаления выполните реструктуризацию таблиц в «Тестировании и исправлении» или выгрузку-загрузку через dt.
Чем реструктуризация отличается от реиндексации?
Реиндексация перестраивает только индексы таблиц и ускоряет поиск, но размер файла почти не меняет. Реструктуризация пересоздаёт таблицы целиком, убирает «пустоты» и именно она возвращает место диску. Для сжатия нужна реструктуризация, реиндексацию обычно включают вместе с ней.
Можно ли сжать базу, пока пользователи работают?
Нет. И тестирование с реструктуризацией, и выгрузка-загрузка dt требуют монопольного доступа. Запуск при активных сеансах либо будет заблокирован платформой, либо приведёт к повреждению файла. Планируйте процедуру на нерабочее время.
Какой размер файловой базы считается критичным?
Жёсткой границы нет, но на практике при размере в несколько гигабайт и работе нескольких пользователей по сети заметно падает скорость и растёт риск повреждений. В такой ситуации сжатие даёт временный эффект, а правильным решением считается переход на клиент-серверную СУБД.
Опасно ли запускать «Тестирование и исправление»?
Режимы реиндексации и реструктуризации безопасны для исправной базы. Риск представляют проверки ссылочной целостности на повреждённой базе: они могут удалить объекты с битыми ссылками. Поэтому сначала делайте копию, а при признаках повреждения используйте chdbfl до запуска тестирования.
Как часто нужно сжимать файловую базу?
Регулярная необходимость отсутствует: сжатие имеет смысл после массовых удалений, сокращения журнала регистрации, отключения версионирования или при заметном замедлении работы. Если база растёт равномерно за счёт реальных данных, повторное сжатие ничего не даст.