К статье
Практический материал

Администрирование · 10 мин

Как уменьшить базу данных 1С: пошаговое руководство

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

База 1С растёт естественным образом: копятся документы, регистры, версии объектов, журналы регистрации и служебные таблицы. Проблема в том, что удаление данных внутри программы почти никогда не уменьшает физический размер файла — освободившееся место остаётся зарезервированным «про запас». Поэтому уменьшение базы — это всегда комбинация логической чистки данных и физического сжатия хранилища.

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

Ниже — рабочий порядок действий для файловых и клиент-серверных баз: от диагностики и резервной копии до свёртки и сжатия. Большинство операций выполняется штатными средствами 1С и не требует сторонних программ.

Шаг 1. Сделайте резервную копию и проверьте, что она рабочая

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

Для файловой базы достаточно скопировать файл 1Cv8.1CD при закрытых сеансах пользователей или сделать выгрузку через «Администрирование → Выгрузить информационную базу» в файл .dt. Для клиент-серверной базы используйте штатные средства СУБД (бэкап в MS SQL Server, PostgreSQL) или выгрузку в .dt.

Обязательно проверьте копию: загрузите .dt в тестовую базу и убедитесь, что она открывается. Нерабочая резервная копия — распространённая причина потери данных именно в момент «оптимизации».

Шаг 2. Выясните, что занимает место

Прежде чем чистить, оцените структуру базы. В клиент-серверных базах размер таблиц смотрят средствами СУБД: в MS SQL Server — отчёт «Disk Usage by Table», в PostgreSQL — запросы к системным представлениям. В файловых базах точной разбивки штатными средствами нет, но косвенные признаки помогают.

Типичные «тяжёлые» места:

  • журнал регистрации — особенно если давно не сокращался;
  • хранилище версий объектов (если включено версионирование);
  • присоединённые файлы и двоичные данные (картинки номенклатуры, сканы документов);
  • регистры сведений с большим числом записей (штрихкоды, истории курсов, служебные регистры обменов);
  • регистры накопления и бухгалтерии за много лет без свёртки.
Файл 1Cv8.1CD растёт, хотя данных почти не добавляютВероятно, раздут журнал регистрации или версии объектов

Проверьте настройки журнала регистрации и версионирования

База большая, но документов малоОсновной объём — присоединённые файлы

Проверьте справочник присоединённых файлов и тома хранения

После удаления данных размер файла не изменилсяМесто освобождено логически, но не физически

Требуется сжатие: тестирование и исправление или shrink в СУБД

Шаг 3. Удалите помеченные объекты и сократите журнал регистрации

Пометка на удаление не освобождает место — объекты физически остаются в базе, пока не выполнено удаление. В режиме «Предприятие» откройте «Администрирование → Обслуживание → Удаление помеченных объектов» и выполните удаление с контролем ссылочной целостности. Если удаление блокируется ссылками, разберите перечень объектов, которые мешают удалить.

Журнал регистрации сокращается в конфигураторе: «Администрирование → Журнал регистрации → Сократить». Укажите дату, до которой удалить события, и обязательно поставьте флаг записи старого журнала в файл — это ваша архивная копия на случай разборов. В типовых конфигурациях также есть регламентные задания очистки устаревших данных: проверьте, что они включены и отрабатывают.

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

Шаг 4. Сожмите файловую базу штатными средствами

Для файловой базы физическое уменьшение выполняется через «Тестирование и исправление» в конфигураторе. Запустите конфигуратор в монопольном режиме, откройте «Администрирование → Тестирование и исправление», отметьте пункты «Реиндексация таблиц», «Проверка ссылочной целостности» и «Сжатие таблиц информационной базы», затем запустите проверку.

Именно пункт «Сжатие таблиц» перестраивает файл и возвращает неиспользуемое место операционной системе. Реиндексация заодно перестраивает индексы, что положительно сказывается на скорости. На больших базах процедура занимает продолжительное время — планируйте её на нерабочие часы.

Альтернативный способ — выгрузка базы в .dt и загрузка обратно в пустую базу. Загруженная база строится «с нуля» и обычно получается компактнее исходной. Этот способ дольше, но иногда эффективнее сжатия, особенно если файл сильно фрагментирован.

Порядок действий для файловой базы
  1. 1
    Сделайте резервную копию и проверьте её восстановлением
  2. 2
    Удалите помеченные объекты и сократите журнал регистрации
  3. 3
    Закройте все сеансы, откройте конфигуратор в монопольном режиме
  4. 4
    Запустите «Тестирование и исправление» с реиндексацией и сжатием таблиц
  5. 5
    Дождитесь завершения и сравните размер файла 1Cv8.1CD до и после
  6. 6
    При недостаточном эффекте выполните выгрузку в .dt и загрузку в новую базу

Шаг 5. Сожмите клиент-серверную базу средствами СУБД

В клиент-серверном варианте сжатие делается на уровне СУБД. В MS SQL Server это операции SHRINKDATABASE или SHRINKFILE, выполняемые через SQL Server Management Studio. Перед сжатием полезно перестроить индексы — это упорядочит данные и повысит эффект shrink.

Учтите важный нюанс: частое сжатие базы в MS SQL приводит к фрагментации индексов и замедлению работы. Shrink — разовая операция после массового удаления данных, а не регулярная процедура. После сжатия выполните реиндексацию и обновление статистики.

В PostgreSQL аналогичную роль играет команда VACUUM FULL, которая перестраивает таблицы и возвращает место системе. Она требует блокировки таблиц, поэтому выполняется при остановленных сеансах пользователей. Обычный VACUUM место не возвращает, но поддерживает базу в рабочем состоянии.

sql
DBCC SHRINKDATABASE (N'MyBase1C')

Шаг 6. Сверните базу и вынесите старые периоды

Если основной объём — документы и регистры за прошлые годы, самый эффективный метод — свёртка базы. В типовых конфигурациях есть обработка «Свёртка информационной базы» (обычно в разделе «Администрирование → Обслуживание»). Она формирует остатки на дату свёртки и удаляет документы прошлых периодов.

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

Гибкий подход — свёртка с копией: исходную базу сохраняют как архивную (только для чтения), а рабочую сворачивают. Тогда старые документы остаются доступными для справок, а рабочая база становится заметно легче.

Маршрут решения

Как выбрать действие

База раздута журналом регистрации и версиями объектовСократите журнал, ограничьте версионирование, затем выполните сжатие
Много документов за закрытые периодыВыполните свёртку базы с сохранением архивной копии
Основной объём — сканы и файлыПеренесите присоединённые файлы в тома на диске или удалите ненужные
Файл не уменьшается после удаления данныхВыполните сжатие: тестирование и исправление для файловой базы, shrink для SQL

Шаг 7. Настройте профилактику, чтобы база не росла снова

Разовая чистка решает проблему на месяцы, но без профилактики база вернётся к прежнему размеру. Настройте автоматическое сокращение журнала регистрации, ограничьте глубину хранения версий объектов, включите штатные регламентные задания очистки устаревших данных.

Полезно периодически контролировать размер файла базы и динамику роста. Резкий скачок роста — сигнал разобраться: возможно, зациклился обмен, включилась избыточная регистрация событий или пользователи начали массово прикреплять тяжёлые файлы.

Типичные ошибки
01
Сжатие без резервной копии — при сбое база повреждается безвозвратно
02
Удаление помеченных объектов без последующего сжатия — размер файла не меняется, и кажется, что чистка не сработала
03
Регулярный shrink базы в MS SQL — приводит к фрагментации индексов и падению производительности
04
Свёртка без сверки остатков — расхождения обнаруживаются, когда исходные данные уже удалены
05
Удаление журнала регистрации без сохранения архива — теряется история действий пользователей

Часто задаваемые вопросы

Почему после удаления документов размер базы не изменился?

Удалённые данные лишь помечаются как свободное место внутри файла или таблиц СУБД — физически файл не уменьшается. Чтобы вернуть место системе, выполните сжатие: «Тестирование и исправление» с пунктом «Сжатие таблиц» для файловой базы или shrink для клиент-серверной.

Что лучше: сжатие или выгрузка-загрузка через .dt?

Выгрузка и загрузка в новую базу обычно даёт более компактный результат, так как файл строится заново без фрагментации. Но это дольше и требует больше свободного места на диске. Для регулярного обслуживания достаточно сжатия, для сильно фрагментированной базы — пересоздание через .dt.

Можно ли удалить журнал регистрации полностью?

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

Опасна ли свёртка базы для учёта?

При правильном выполнении — нет: остатки на дату свёртки переносятся корректирующими документами. Риски связаны с незакрытыми периодами и отсутствием проверки. Всегда сверяйте остатки до и после свёртки по основным отчётам и сохраняйте архивную копию исходной базы.

Как уменьшить базу, если основной объём — прикреплённые файлы?

Удалите ненужные файлы через справочник присоединённых файлов, а оставшиеся перенесите в тома хранения на диске — тогда они не будут раздувать саму базу. После удаления выполните сжатие, иначе размер файла базы не изменится.

Нужно ли сжимать базу регулярно?

Нет. Сжатие — разовая операция после массового удаления данных или свёртки. Регулярное сжатие, особенно в MS SQL, вредит: фрагментируются индексы и падает производительность. Для постоянного контроля размера достаточно профилактики: сокращение журнала, ограничение версий, регламентная очистка.

Итог

Что важно запомнить

Уменьшение базы 1С — двухэтапная задача: сначала удалите лишние данные (помеченные объекты, журнал регистрации, версии, старые периоды через свёртку), затем физически сожмите хранилище. Перед любыми действиями делайте и проверяйте резервную копию, после свёртки сверяйте остатки, а сжатие не превращайте в регулярную процедуру.