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