Как уменьшить объём базы 1С 8.3: от выгрузки в DT до свёртки
Содержание
Файл файловой базы (1Cv8.1CD) сам по себе не уменьшается. Когда вы удаляете документы или помечаете их на удаление, место внутри файла остаётся занятым — поэтому «удалил половину данных, а база весит столько же» — это нормальное поведение, а не сбой. Чтобы реально сжать базу
1С 8.3 и уменьшить размер файла, её нужно физически пересобрать или почистить от накопленного мусора.
Способ зависит от того, как у вас хранится база. Для файлового варианта работают сжатие таблиц и выгрузка в .dt. Для клиент-серверного размер уменьшают средствами СУБД (MS SQL или PostgreSQL), а инструменты Конфигуратора там почти не дают эффекта. Разберём оба пути, а в конце — что делать, когда база большая из-за реального объёма данных и обычное сжатие бесполезно.
Чтобы не держать все способы в голове, вот короткая сводка — какой метод под какую задачу:
| Способ | Когда применять | Что даёт |
|---|---|---|
| Сжатие таблиц в Конфигураторе | Файловая база после удаления данных | Убирает пустоты внутри файла |
Выгрузка/загрузка .dt | Файловая база давно не обслуживалась | Полная пересборка, максимальное сжатие |
| Удаление помеченных объектов | Накопились помеченные документы | Удаляет данные из базы |
| Shrink / VACUUM FULL | Клиент-серверная база на SQL | Возвращает место операционной системе |
| Тома хранения файлов | Много вложений внутри базы | Выносит файлы из базы на диск |
| Свёртка базы | Реально большой объём за годы | Удаляет старые периоды, оставляет остатки |
С чего начать: резервная копия и монопольный доступ
Любая операция сжатия меняет файл базы целиком. Перед началом сделайте резервную копию: для файловой базы достаточно скопировать папку с файлом 1Cv8.1CD, когда никто не работает
; в клиент-серверном варианте — средствами СУБД.
Выгрузка/загрузка .dt, тестирование и исправление требуют монопольного доступа. Это значит, что в момент операции в базе не должно быть ни одного активного сеанса — иначе 1С не даст начать, а если сеансы оборвать принудительно, незавершённые операции потеряются. Планируйте сжатие на нерабочее время: вечер, выходные или обеденный перерыв.
Монопольный доступ нужен именно для загрузки .dt, тестирования и исправления. Для простой выгрузки в .dt и очистки помеченных объектов монополия формально не обязательна, но делать их «на живой» базе всё равно не стоит.
Сжатие таблиц файловой базы через Конфигуратор
Самый быстрый способ уменьшить размер файловой базы — встроенное сжатие таблиц. Оно убирает пустоты внутри 1Cv8.1CD, которые остались после удалённых данных.
- Запустите базу в режиме
Конфигуратор. - Откройте меню
Администрирование→Тестирование и исправление. - Снимите все галочки проверок и оставьте только
Сжатие таблиц информационной базы. - В переключателе внизу выберите режим
Только исправление(а не «тестирование»). - Нажмите
Выполнить.
1С пересоберёт таблицы и вернёт свободное место операционной системе. На базе в несколько гигабайт процесс занимает от пары минут до получаса.
Если запускаете тестирование для профилактики, включите заодно Реиндексация таблиц информационной базы — это ускорит работу базы, хотя на размер почти не влияет.
Сжатие таблиц ощутимо помогает именно в файловом варианте. В клиент-серверной базе этот флажок есть, но физический размер хранилища определяет СУБД, а не 1С, — к серверным базам переходите ниже.
Выгрузка в DT: полная пересборка файловой базы
Когда сжатия таблиц мало, базу пересобирают через выгрузку и загрузку. При выгрузке данные упаковываются в один архивный файл .dt, а при загрузке 1С строит файл базы заново — без накопленной фрагментации и пустот. Часто это даёт сжатие сильнее, чем встроенная операция.
- В Конфигураторе откройте
Администрирование→Выгрузить информационную базу. - Укажите имя файла — например,
base.dt— и дождитесь окончания выгрузки. - Создайте в списке баз новую пустую файловую базу (или используйте ту же).
- Откройте её в Конфигураторе и выполните
Администрирование→Загрузить информационную базу, указав сохранённый.dt.
После загрузки сравните размер старого и нового файла 1Cv8.1CD — разница бывает в разы, если база давно не обслуживалась.
Загрузка .dt затирает содержимое базы целиком. Грузите либо в новую базу, либо убедившись, что у вас есть рабочая копия исходной. Если файл .dt повреждён, а оригинал уже затёрт, восстанавливать будет нечего.
Формат .dt удобен и как резервная копия: он переносимый и не зависит от путей. Но для регулярных бэкапов больших баз он медленный — там лучше копировать файл базы или использовать средства СУБД.
Очистка лишних данных перед сжатием
Любое физическое сжатие только убирает пустоты. Чтобы база похудела по-настоящему, сначала уберите из неё то, что уже не нужно. Эти действия выполняются в режиме 1С:Предприятие.
🗑️ Помеченные на удаление объекты. Пометка на удаление не освобождает место — данные лежат в базе до фактического удаления. Запустите Администрирование → Обслуживание → Удаление помеченных объектов. Программа проверит ссылки и удалит то, на что никто не ссылается.
🕓 Устаревшие версии объектов. Если включено версионирование (история изменений), база хранит все редакции документов и справочников. В разделе настроек истории изменений задайте срок хранения версий и очистите старые — на активно правимых базах это освобождает заметный объём.
🔁 Регистрация изменений для обмена. В базах с обменами данными (РИБ, синхронизация) копится таблица регистрации изменений. Если узел обмена давно не используется, снимите с него регистрацию или удалите неактуальный узел — таблица изменений перестанет расти.
📑 Журнал регистрации. Сам журнал в размер файла базы не входит (он лежит отдельными файлами в каталоге базы), но может занимать гигабайты на диске. Настройте период хранения событий и при необходимости сократите его.
Порядок правильный такой: сначала чистим данные в 1С:Предприятии, потом сжимаем таблицы или выгружаем в .dt. Если сжать до очистки, пустоты от будущих удалений никуда не денутся.
Удаление неиспользуемых объектов конфигурации
Иногда вес набирает не данные, а сама конфигурация — особенно если в неё добавляли внешние подсистемы, печатные формы, обработки, которые давно не нужны. Это касается файла конфигурации (.cf), а не данных.
Разумно убрать:
- неиспользуемые внешние обработки и отчёты, подключённые как встроенные;
- лишние расширения конфигурации , если они больше не применяются;
- справочники и регистры, созданные под завершённые доработки.
Снятие с поддержки и правка типовой конфигурации — это уже вмешательство, которое ломает автоматическое обновление . Поэтому чистить конфигурацию стоит, только если вы понимаете последствия, или силами специалиста, который ведёт вашу доработку. На размер данных это почти не влияет — выигрыш идёт за счёт самой конфигурации.
Отдельная история — расширения конфигурации. Их добавляют, чтобы дорабатывать типовую без снятия с поддержки, но забытые или дублирующие друг друга расширения тоже висят в базе. Проверьте список расширений в разделе Администрирование и отключите либо удалите те, что уже не используются. После удаления расширения не забудьте обновить конфигурацию
базы данных — это отдельный шаг, без него изменение не вступит в силу.
Сжатие клиент-серверной базы на SQL
В клиент-серверном варианте файла 1Cv8.1CD нет — данные лежат в базе СУБД. Поэтому сжимать нужно средствами MS SQL Server или PostgreSQL, а не Конфигуратором.
MS SQL Server. Типичная причина раздувания — журнал транзакций (.ldf), который растёт при полной модели восстановления.
- Сначала удалите лишние данные в 1С (помеченные объекты, старые версии).
- Переведите базу в простую модель восстановления (
Recovery model: Simple), если полный журнал вам не нужен для частых бэкапов. - Выполните сжатие файлов данных и журнала — через SSMS (
Tasks → Shrink → Files) или командойDBCC SHRINKFILE.
Shrink сильно фрагментирует индексы. После сжатия обязательно перестройте индексы (reindex / rebuild), иначе база начнёт тормозить. Делайте всё это в нерабочее время.
PostgreSQL. Здесь место освобождает VACUUM. Обычный VACUUM помечает место свободным для повторного использования, но файл на диске не уменьшает. Чтобы вернуть место ОС, нужен VACUUM FULL — но он полностью перезаписывает таблицу и на время работы блокирует её, поэтому запускайте только когда с базой никто не работает.
Регулярные автоматические VACUUM и обслуживание индексов на стороне СУБД снимают проблему раздувания в принципе — настройте их, чтобы не сжимать базу вручную каждые полгода.
Присоединённые файлы и тома хранения на диске
Частая причина, почему база весит десятки гигабайт, — вложения. Сканы, договоры, картинки, прикреплённые к документам, по умолчанию во многих конфигурациях хранятся внутри базы. Каждый файл раздувает её напрямую.
Решение — перенести файлы из базы в тома хранения на диске. В типовых конфигурациях на базе Библиотеки стандартных подсистем (Бухгалтерия, ЗУП, Управление торговлей) это настраивается так:
- В разделе
Администрированиенайдите настройки работы с файлами. - Включите вариант
Хранить файлы в томах на дискеи укажите каталог тома. - Запустите перенос уже накопленных файлов из базы в том (регламентная операция переноса).
После переноса сами файлы лягут на диск, а в базе останутся только ссылки. База ощутимо уменьшится, а резервные копии станут быстрее. Том при этом нужно включать в бэкап отдельно — иначе при восстановлении базы файлы потеряются.
Заодно проверьте, нет ли в базе присоединённых файлов, помеченных на удаление. Их тоже убирает Удаление помеченных объектов.
Когда сжатие не помогает: свёртка и альтернативы
Если база большая не из-за мусора, а из-за реального объёма — несколько лет документов, миллионы записей в регистрах — никакое сжатие таблиц объём не уменьшит. Данные живые, и они занимают место по делу.
Варианты здесь такие:
- Свёртка базы. Специальная обработка формирует остатки на выбранную дату и удаляет документы за прошлые периоды, заменяя их вводом начальных остатков. База резко худеет, но операция рискованная: её делают на копии, тщательно сверяют остатки и только потом переносят результат в работу. Для сложного учёта свёртку часто доверяют специалисту.
- Старт нового периода в чистой базе. Иногда проще начать новый год в свежей базе с перенесёнными остатками и справочниками, а старую оставить как архив для просмотра.
- Переход на клиент-сервер. Если файловая база упёрлась в предел по размеру и скорости, перевод на MS SQL или PostgreSQL снимает ограничения и упрощает обслуживание.
- Апгрейд диска. Иногда дешевле добавить места и перевести базу на SSD, чем бороться за каждый гигабайт.
Свёртка необратима в пределах базы: после удаления старых документов детализация за прошлые периоды останется только в архивной копии. Не удаляйте архив, пока не убедились, что отчётность за закрытые периоды сходится.
Частые вопросы
Почему база не уменьшилась после удаления документов?
1Cv8.1CD. Чтобы вернуть его на диск, нужно либо сжать таблицы в Конфигураторе, либо выгрузить и загрузить базу через .dt.Чем отличается `.dt` от `.cf`?
.dt — это полная выгрузка базы: и конфигурация, и все данные. .cf — только конфигурация, без данных. Для сжатия и переноса базы целиком используют .dt; .cf нужен для обновления или сравнения конфигураций.Безопасно ли сжатие таблиц для данных?
.dt не меняют данные, а только пересобирают их физически. Риск не в самой операции, а в работе без резервной копии: если что-то прервётся, откатиться можно только на бэкап.