Администрирование · 11 мин
Как уменьшить размер файла базы 1С
Как уменьшить размер файла базы 1С: тестирование и исправление, сжатие таблиц, очистка журнала регистрации, удаление помеченных объектов, обрезка истории.
Файловая база 1С (файл 1Cv8.1CD) растёт со временем: добавляются документы, накапливается история, но при удалении данных физический размер файла обычно не уменьшается — внутри остаются «дыры» свободного места. В результате база в несколько гигабайт начинает медленно открываться, долго копироваться и создавать проблемы с резервным копированием.
Уменьшить размер файла можно несколькими способами: сжатием таблиц через тестирование и исправление, удалением реально ненужных данных, очисткой журнала регистрации и обрезкой истории. Для клиент-серверных баз на SQL Server или PostgreSQL механизмы другие, но логика та же: сначала удалить лишние данные, затем вернуть освобождённое место файловой системе.
Важно понимать: простое удаление документов или элементов справочников не уменьшает файл. Платформа помечает место как свободное и использует его под новые данные. Физическое сокращение файла происходит только при сжатии таблиц информационной базы.
Как узнать, что именно занимает место в базе
Прежде чем сжимать базу, полезно понять, куда ушёл объём. В файловом варианте откройте базу в конфигураторе и посмотрите размер файла 1Cv8.1CD в папке базы. Дополнительно в «Тестировании и исправлении» можно запустить проверку физической целостности — она покажет объём таблиц и наличие свободного места.
Типичные «пожиратели» места: журнал регистрации (особенно если ведётся много лет), большие документы с табличными частями, хранилища значений с вложенными файлами (картинки товаров, сканы договоров), история изменений в регистрах сведений и версионирование объектов, если оно включено.
Для клиент-серверных баз размер данных и журналов транзакций смотрят средствами СУБД: в SQL Server — через отчёты по дисковому пространству в Management Studio, в PostgreSQL — через представления pg_stat_user_tables и функции размера таблиц.
Проверить, давно ли выполнялось сжатие таблиц
Проверить размер журнала регистрации и вложений
Требуется сжатие таблиц, а не только удаление
Первый шаг: резервная копия
Любые операции по уменьшению размера базы необратимы: удалённые данные восстановить без копии нельзя, а сжатие таблиц при сбое может повредить файл. Поэтому первый шаг — полная резервная копия.
Для файловой базы достаточно при завершённой работе всех пользователей скопировать файл 1Cv8.1CD в отдельную папку или на внешний носитель. Более правильный вариант — выгрузка в файл .dt через конфигуратор («Администрирование» → «Выгрузить информационную базу»), так как .dt удобен для переноса и проверки.
Для клиент-серверной базы сделайте бэкап средствами СУБД (полная резервная копия базы данных). Не полагайтесь на копирование файлов .mdf/.ldf при работающем сервере — такой файл может оказаться неконсистентным.
Сжатие таблиц через «Тестирование и исправление»
Основной инструмент уменьшения файловой базы — режим «Тестирование и исправление» в конфигураторе. Он перестраивает таблицы и физически убирает неиспользуемое пространство из файла 1Cv8.1CD.
Очистка журнала регистрации
Журнал регистрации в старых форматах хранится внутри каталога базы (файлы 1Cv8.lgd или папка 1Cv8Log) и может занимать гигабайты, особенно если регистрация событий ведётся много лет. Он не входит в файл 1Cv8.1CD, но влияет на общий размер папки базы и время копирования.
Сократить журнал можно в конфигураторе: «Администрирование» → «Настройка журнала регистрации» → «Сократить». Укажите дату, до которой удалить события, и обязательно отметьте сохранение сокращаемой части в отдельный файл — это пригодится для аудита.
Дополнительно настройте уровень регистрации событий: если включена регистрация всех событий, журнал растёт очень быстро. Обычно достаточно ошибок и предупреждений, плюс важные события доступа при необходимости.
Свёртка базы и обрезка истории
Если основная масса объёма — это старые документы за закрытые периоды, а удалять их нельзя из-за остатков, используйте свёртку базы. В типовых конфигурациях есть обработка «Свёртка информационной базы»: она формирует документы ввода остатков на дату свёртки и помечает старые документы на удаление.
Свёртка — трудоёмкая операция. Перед ней нужно закрыть период, сверить остатки по всем разделам учёта и сделать копию. После свёртки обязательно проверьте, что оборотно-сальдовая ведомость и ключевые отчёты на дату свёртки совпадают с исходной базой.
Альтернатива — создание новой пустой базы с переносом остатков и справочников. Это радикальный вариант, он подходит, когда история не нужна в оперативной работе, а старая база остаётся в архиве только для чтения.
Сравнение вариантов
Быстрый и безопасный способ, убирает только свободное место. Не подходит, если нужно удалить сами данные.
Даёт реальное уменьшение объёма, но требует анализа, что можно удалить без потери учёта.
Радикально уменьшает объём за счёт удаления истории документов. Требует проверки остатков и много времени.
Максимальное уменьшение размера, но история остаётся только в старой копии, нужна настройка переноса.
Особенности для клиент-серверных баз
В клиент-серверном варианте данные хранятся в СУБД, и сжатие таблиц в конфигураторе не уменьшает файлы базы данных. Порядок действий другой: сначала удалить данные средствами 1С, затем освободить место средствами СУБД.
В SQL Server после удаления данных выполните сжатие базы или файлов (DBCC SHRINKDATABASE / SHRINKFILE), предварительно оценив фрагментацию индексов — после shrink рекомендуется перестроить индексы. Следите и за журналом транзакций: при простой модели восстановления он усекается автоматически, при полной — нужно регулярное резервное копирование журнала, иначе .ldf-файл может вырасти до огромных размеров.
В PostgreSQL обычного VACUUM недостаточно для возврата места системе — он лишь помечает место свободным. Для физического уменьшения таблиц используется VACUUM FULL (требует блокировки таблицы) или pg_repack. Планируйте такие операции на нерабочее время.
Проверка результата и профилактика роста
После всех операций сравните размер файла 1Cv8.1CD (или файлов СУБД) с исходным. Затем откройте базу в режиме предприятия, выполните типовые операции: проведение документа, построение основных отчётов, поиск — чтобы убедиться, что всё работает и данные на месте.
Чтобы база не разрасталась снова, настройте регламент: периодическое удаление помеченных объектов, разумный уровень журнала регистрации, хранение вложенных файлов в томах на диске, регулярное сжатие таблиц файловых баз (например, раз в несколько месяцев) и плановое обслуживание СУБД для клиент-серверных.
Как проверить результат
Файл заметно меньше исходного, база открывается
Размер не изменился — сжатие не выполнялось или нет свободного места
ОСВ и ключевые отчёты совпадают с копией
Расхождения в остатках — удалено лишнее
Документы проводятся, отчёты строятся без ошибок
Ошибки открытия или проведения — нужна проверка целостности
Частые вопросы
Почему файл 1Cv8.1CD не уменьшается после удаления документов?
Платформа не возвращает освобождённое место операционной системе, а оставляет его под будущие данные. Чтобы физически уменьшить файл, после удаления нужно выполнить «Тестирование и исправление» с включённым сжатием таблиц информационной базы.
Можно ли сжать базу без конфигуратора?
Штатного способа сжатия из режима «Предприятие» нет — операция выполняется только в конфигураторе в монопольном режиме. Альтернатива — выгрузка базы в .dt и загрузка обратно: при загрузке файл создаётся заново без свободного места, но это дольше и требует больше дискового пространства.
Уменьшит ли размер базы выгрузка и загрузка через .dt?
Да, загруженная из .dt база создаётся компактной, без внутренних «дыр». Однако сам .dt не удаляет данные — если нужно уменьшить объём за счёт удаления старых документов, это делается отдельно до выгрузки.
Что занимает больше всего места в типовой базе?
Чаще всего — вложенные файлы и картинки, хранящиеся в базе, журнал регистрации за много лет, большие регистры сведений с историей и документы с объёмными табличными частями. Точный ответ для конкретной базы даёт анализ размеров таблиц средствами СУБД или сторонних обработок.
Опасно ли прерывать сжатие таблиц?
Да. Прерывание процесса (отключение питания, снятие задачи) может оставить файл 1Cv8.1CD в повреждённом состоянии. Запускайте сжатие только при наличии резервной копии и гарантированном времени на завершение операции.
Как уменьшить размер журнала транзакций в SQL Server?
При полной модели восстановления сначала выполните резервное копирование журнала, затем сожмите файл журнала через SHRINKFILE. Если история для восстановления на момент времени не нужна, можно переключить базу на простую модель восстановления — тогда журнал будет усекаться автоматически.
Что важно запомнить
Файл базы 1С уменьшается только после двух действий: удаления ненужных данных и сжатия таблиц. Перед любыми операциями делайте резервную копию, а после — проверяйте остатки и работу отчётов. Для клиент-серверных баз место возвращается средствами СУБД после удаления данных в 1С.