Администрирование · 10 мин
Как уменьшить базу данных 1С: пошаговое руководство
Практические способы уменьшить базу данных 1С: тестирование и исправление, удаление помеченных объектов, свёртка, сжатие файловой и клиент-серверной базы.
База 1С растёт естественным образом: копятся документы, регистры, версии объектов, журналы регистрации и служебные таблицы. Проблема в том, что удаление данных внутри программы почти никогда не уменьшает физический размер файла — освободившееся место остаётся зарезервированным «про запас». Поэтому уменьшение базы — это всегда комбинация логической чистки данных и физического сжатия хранилища.
Практика показывает, что основной объём обычно занимают три вещи: журнал регистрации, хранилище версий объектов и присоединённые файлы (сканы, изображения, вложения писем). Прежде чем что-то удалять, полезно понять, что именно раздуло базу: иногда достаточно сократить журнал регистрации, чтобы освободить треть объёма.
Ниже — рабочий порядок действий для файловых и клиент-серверных баз: от диагностики и резервной копии до свёртки и сжатия. Большинство операций выполняется штатными средствами 1С и не требует сторонних программ.
Шаг 1. Сделайте резервную копию и проверьте, что она рабочая
Любые операции по уменьшению базы необратимы: свёртка удаляет документы прошлых периодов, сжатие перестраивает файл данных. Если что-то пойдёт не так, восстановить данные без копии будет невозможно.
Для файловой базы достаточно скопировать файл 1Cv8.1CD при закрытых сеансах пользователей или сделать выгрузку через «Администрирование → Выгрузить информационную базу» в файл .dt. Для клиент-серверной базы используйте штатные средства СУБД (бэкап в MS SQL Server, PostgreSQL) или выгрузку в .dt.
Обязательно проверьте копию: загрузите .dt в тестовую базу и убедитесь, что она открывается. Нерабочая резервная копия — распространённая причина потери данных именно в момент «оптимизации».
Шаг 2. Выясните, что занимает место
Прежде чем чистить, оцените структуру базы. В клиент-серверных базах размер таблиц смотрят средствами СУБД: в MS SQL Server — отчёт «Disk Usage by Table», в PostgreSQL — запросы к системным представлениям. В файловых базах точной разбивки штатными средствами нет, но косвенные признаки помогают.
Типичные «тяжёлые» места:
- журнал регистрации — особенно если давно не сокращался;
- хранилище версий объектов (если включено версионирование);
- присоединённые файлы и двоичные данные (картинки номенклатуры, сканы документов);
- регистры сведений с большим числом записей (штрихкоды, истории курсов, служебные регистры обменов);
- регистры накопления и бухгалтерии за много лет без свёртки.
Проверьте настройки журнала регистрации и версионирования
Проверьте справочник присоединённых файлов и тома хранения
Требуется сжатие: тестирование и исправление или shrink в СУБД
Шаг 3. Удалите помеченные объекты и сократите журнал регистрации
Пометка на удаление не освобождает место — объекты физически остаются в базе, пока не выполнено удаление. В режиме «Предприятие» откройте «Администрирование → Обслуживание → Удаление помеченных объектов» и выполните удаление с контролем ссылочной целостности. Если удаление блокируется ссылками, разберите перечень объектов, которые мешают удалить.
Журнал регистрации сокращается в конфигураторе: «Администрирование → Журнал регистрации → Сократить». Укажите дату, до которой удалить события, и обязательно поставьте флаг записи старого журнала в файл — это ваша архивная копия на случай разборов. В типовых конфигурациях также есть регламентные задания очистки устаревших данных: проверьте, что они включены и отрабатывают.
Если включено версионирование объектов, оцените глубину хранения версий. Хранение всех версий документов за годы способно занимать заметную часть базы. Ограничьте срок хранения версий в настройках или отключите версионирование для объектов, где оно не нужно.
Шаг 4. Сожмите файловую базу штатными средствами
Для файловой базы физическое уменьшение выполняется через «Тестирование и исправление» в конфигураторе. Запустите конфигуратор в монопольном режиме, откройте «Администрирование → Тестирование и исправление», отметьте пункты «Реиндексация таблиц», «Проверка ссылочной целостности» и «Сжатие таблиц информационной базы», затем запустите проверку.
Именно пункт «Сжатие таблиц» перестраивает файл и возвращает неиспользуемое место операционной системе. Реиндексация заодно перестраивает индексы, что положительно сказывается на скорости. На больших базах процедура занимает продолжительное время — планируйте её на нерабочие часы.
Альтернативный способ — выгрузка базы в .dt и загрузка обратно в пустую базу. Загруженная база строится «с нуля» и обычно получается компактнее исходной. Этот способ дольше, но иногда эффективнее сжатия, особенно если файл сильно фрагментирован.
- 1Сделайте резервную копию и проверьте её восстановлением
- 2Удалите помеченные объекты и сократите журнал регистрации
- 3Закройте все сеансы, откройте конфигуратор в монопольном режиме
- 4Запустите «Тестирование и исправление» с реиндексацией и сжатием таблиц
- 5Дождитесь завершения и сравните размер файла 1Cv8.1CD до и после
- 6При недостаточном эффекте выполните выгрузку в .dt и загрузку в новую базу
Шаг 5. Сожмите клиент-серверную базу средствами СУБД
В клиент-серверном варианте сжатие делается на уровне СУБД. В MS SQL Server это операции SHRINKDATABASE или SHRINKFILE, выполняемые через SQL Server Management Studio. Перед сжатием полезно перестроить индексы — это упорядочит данные и повысит эффект shrink.
Учтите важный нюанс: частое сжатие базы в MS SQL приводит к фрагментации индексов и замедлению работы. Shrink — разовая операция после массового удаления данных, а не регулярная процедура. После сжатия выполните реиндексацию и обновление статистики.
В PostgreSQL аналогичную роль играет команда VACUUM FULL, которая перестраивает таблицы и возвращает место системе. Она требует блокировки таблиц, поэтому выполняется при остановленных сеансах пользователей. Обычный VACUUM место не возвращает, но поддерживает базу в рабочем состоянии.
DBCC SHRINKDATABASE (N'MyBase1C')Шаг 6. Сверните базу и вынесите старые периоды
Если основной объём — документы и регистры за прошлые годы, самый эффективный метод — свёртка базы. В типовых конфигурациях есть обработка «Свёртка информационной базы» (обычно в разделе «Администрирование → Обслуживание»). Она формирует остатки на дату свёртки и удаляет документы прошлых периодов.
Перед свёрткой убедитесь, что отчётность за сворачиваемые периоды сдана и скорректирована, а регламентированные операции закрытия периодов выполнены. После свёртки проверьте остатки по ключевым отчётам: оборотно-сальдовая ведомость, остатки склада, взаиморасчёты должны совпасть с данными до свёртки.
Гибкий подход — свёртка с копией: исходную базу сохраняют как архивную (только для чтения), а рабочую сворачивают. Тогда старые документы остаются доступными для справок, а рабочая база становится заметно легче.
Как выбрать действие
Шаг 7. Настройте профилактику, чтобы база не росла снова
Разовая чистка решает проблему на месяцы, но без профилактики база вернётся к прежнему размеру. Настройте автоматическое сокращение журнала регистрации, ограничьте глубину хранения версий объектов, включите штатные регламентные задания очистки устаревших данных.
Полезно периодически контролировать размер файла базы и динамику роста. Резкий скачок роста — сигнал разобраться: возможно, зациклился обмен, включилась избыточная регистрация событий или пользователи начали массово прикреплять тяжёлые файлы.
Часто задаваемые вопросы
Почему после удаления документов размер базы не изменился?
Удалённые данные лишь помечаются как свободное место внутри файла или таблиц СУБД — физически файл не уменьшается. Чтобы вернуть место системе, выполните сжатие: «Тестирование и исправление» с пунктом «Сжатие таблиц» для файловой базы или shrink для клиент-серверной.
Что лучше: сжатие или выгрузка-загрузка через .dt?
Выгрузка и загрузка в новую базу обычно даёт более компактный результат, так как файл строится заново без фрагментации. Но это дольше и требует больше свободного места на диске. Для регулярного обслуживания достаточно сжатия, для сильно фрагментированной базы — пересоздание через .dt.
Можно ли удалить журнал регистрации полностью?
Можно сократить его до нужной даты через конфигуратор, но полностью очищать журнал без сохранения копии не рекомендуется: по нему разбирают инциденты и действия пользователей. При сокращении сохраните старые события в файл.
Опасна ли свёртка базы для учёта?
При правильном выполнении — нет: остатки на дату свёртки переносятся корректирующими документами. Риски связаны с незакрытыми периодами и отсутствием проверки. Всегда сверяйте остатки до и после свёртки по основным отчётам и сохраняйте архивную копию исходной базы.
Как уменьшить базу, если основной объём — прикреплённые файлы?
Удалите ненужные файлы через справочник присоединённых файлов, а оставшиеся перенесите в тома хранения на диске — тогда они не будут раздувать саму базу. После удаления выполните сжатие, иначе размер файла базы не изменится.
Нужно ли сжимать базу регулярно?
Нет. Сжатие — разовая операция после массового удаления данных или свёртки. Регулярное сжатие, особенно в MS SQL, вредит: фрагментируются индексы и падает производительность. Для постоянного контроля размера достаточно профилактики: сокращение журнала, ограничение версий, регламентная очистка.
Что важно запомнить
Уменьшение базы 1С — двухэтапная задача: сначала удалите лишние данные (помеченные объекты, журнал регистрации, версии, старые периоды через свёртку), затем физически сожмите хранилище. Перед любыми действиями делайте и проверяйте резервную копию, после свёртки сверяйте остатки, а сжатие не превращайте в регулярную процедуру.