Что раздувает базу 1С и как вернуть место на диске

· 8 мин

Содержание

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

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

Порядок действий зависит от того, что именно разрослось. Поэтому начинать стоит не с чистки наугад, а с диагностики.

С чего начать: смотрим, какие таблицы распухли

Чистить всё подряд бессмысленно. Сначала найдите, где осело место, — и дальше бейте точечно.

В клиент-серверной базе (MS SQL, PostgreSQL) проще всего — средствами самой СУБД. В MS SQL это стандартный отчёт по размеру таблиц (Reports → Disk Usage by Top Tables). Имена таблиц 1С узнаваемы по префиксам:

  • 🗂 _Document… — документы;
  • 📊 _AccumRG… и _AccumRGT… — движения и итоги регистров накопления;
  • 🧮 _AccRg…, _AccRgT… — бухгалтерские регистры и их итоги;
  • 🖼 _InfoRg… с присоединёнными файлами — сканы и вложения;
  • 🕓 таблицы версий и истории данных — копии объектов.

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

Самые частые «пухляки» в любой конфигурации — таблицы итогов регистров, журнал регистрации, версии объектов и присоединённые файлы. С них и начнём.

Запишите исходный размер базы до начала работ — так вы увидите эффект от каждого шага и поймёте, что дало основную экономию. На практике 70–80% объёма старой базы обычно приходится на два-три самых тяжёлых источника, а не распределено равномерно.

Удаляем помеченные объекты и дубли

Пометка на удаление места не освобождает. Объект остаётся в таблице, пока его физически не удалит специальная обработка.

В 1С:Бухгалтерии 3.0 это Администрирование → Обслуживание → Удаление помеченных объектов. Обработка проверяет ссылки: если на помеченный объект кто-то ссылается, она покажет связи и не даст удалить, пока вы не разберётесь с зависимостями.

Удаление помеченных объектов необратимо. Перед запуском сделайте резервную копию — через Администрирование → Обслуживание → Резервное копирование или выгрузку .dt в Конфигураторе.

Отдельная причина разрастания справочников — дубли контрагентов и номенклатуры. Их убирает обработка Поиск и удаление дублей (там же, в разделе Обслуживание). Она находит похожие элементы, назначает один главным, а остальные помечает на удаление с заменой ссылок. После неё — снова удаление помеченных объектов.

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

Свёртка базы: оставляем остатки, убираем старые документы

Это самый результативный способ для баз, которые ведут не первый год. Свёртка вводит остатки на выбранную дату документами «Ввод остатков», а всю первичку до этой даты помечает на удаление. История за старые годы схлопывается в несколько документов остатков.

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

  1. Выбираете дату свёртки — обычно начало текущего или прошлого года.
  2. Обработка формирует документы ввода остатков по регистрам.
  3. Вы сверяете остатки «до» и «после» по ключевым отчётам (оборотно-сальдовая ведомость).
  4. Только убедившись в совпадении, удаляете старые документы.

Свёртку делайте на копии базы. Разверните резервную копию в отдельную базу, проведите свёртку там, проверьте отчёты — и лишь потом переводите работу на свёрнутую базу. Так вы ничего не потеряете, если остатки не сойдутся.

После свёртки освобождается основная масса места — старые движения регистров уходят вместе с документами.

Пересчитываем итоги и переиндексируем таблицы

Регистры хранят не только сами движения, но и предрассчитанные итоги в отдельных таблицах (…RGT). Со временем итоги занимают заметный объём и замедляют отчёты.

Откройте управление итогами: в 1С:Бухгалтерии это Операции → Регламентные операции → Управление итогами (в части релизов — через Администрирование → Обслуживание). Задачи две:

Переиндексация убирает «мусор» из индексов. В файловой базе её делает Конфигуратор: Администрирование → Тестирование и исправление → Реиндексация таблиц. В клиент-серверной переиндексацию удобнее вынести в регламентное обслуживание СУБД (об этом ниже).

Чистим журнал регистрации и кэш

Журнал регистрации хранится отдельно от файла базы. Это файлы .lgd (или старый .lgf) в каталоге базы, и за годы они разрастаются до гигабайтов, никак не влияя на 1Cv8.1CD.

Сократить журнал можно двумя путями:

  • в режиме Предприятия — через настройки журнала регистрации, задав срок хранения и удалив записи до даты;
  • в Конфигураторе — Администрирование → Настройка журнала регистрации, где тоже задаётся граница хранения.

Разумная практика — хранить журнал за последние 3–6 месяцев, этого хватает для разбора инцидентов.

Кэш клиента — это локальные временные файлы в профиле пользователя (%LOCALAPPDATA%\1C\1cv8 и %APPDATA%\1C\1cv8). На размер базы они не влияют, но их чистят при сбоях интерфейса. Запустите базу с параметром /ClearCache или удалите каталоги кэша при закрытой программе.

/ClearCache очищает только локальный кэш на вашем компьютере. Данные в базе он не трогает и её размер не уменьшает.

Управляем историей изменений и версиями объектов

Если включено версионирование объектов, 1С хранит копию документа или справочника при каждом изменении. На активной базе это одна из самых быстрорастущих таблиц.

В 1С:Бухгалтерии настройка живёт в разделе Администрирование → Общие настройки → История изменений (в ряде релизов — Версионирование объектов). Здесь можно:

  • отключить версионирование для объектов, по которым оно не нужно;
  • задать срок хранения версий;
  • удалить устаревшие версии за прошлые периоды.

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

Выносим присоединённые файлы в тома на диске

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

Решение — хранить файлы не в базе, а в томах на диске. В 1С:Бухгалтерии: Администрирование → Настройки работы с файлами → Хранить файлы в томах на диске. Дальше:

  1. Создайте том и укажите сетевой или локальный путь к папке.
  2. Запустите перенос уже накопленных файлов из базы в том.
  3. Проверьте, что файлы открываются из карточек, — и только потом удаляйте их из базы.

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

Путь к тому должен быть доступен всем пользователям базы (общая сетевая папка с правами на запись). Если положить том в локальную папку одного компьютера, остальные файлы открыть не смогут.

Физически сжимаем базу и ставим регламент

Все действия выше освобождают место внутри базы. Чтобы оно вернулось на диск, таблицы нужно сжать физически.

Файловая база. Откройте Конфигуратор монопольно: Администрирование → Тестирование и исправление. Отметьте Реиндексация таблиц и Сжатие таблиц информационной базы, режим — «Тестирование и исправление». Сжатие физически уменьшает файл 1Cv8.1CD, перенося данные плотно и отдавая освободившееся место системе.

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

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

Клиент-серверная база . Физическим размером управляет СУБД. Уменьшить файл после массового удаления данных можно командой сжатия (DBCC SHRINKDATABASE в MS SQL, VACUUM FULL в PostgreSQL), но злоупотреблять ей не стоит: сжатие фрагментирует данные, его делают разово после крупной чистки, а не по расписанию.

Чтобы база не распухала снова, держите регулярное обслуживание:

Регламент обслуживания базы 1С
Выполнено: 0 / 6

Что именно применять, зависит от типа базы — файловая или клиент-серверная:

Какая у вас база?

Частые вопросы

Удалил документы, а база не уменьшилась. Это нормально?
Да. Удаление освобождает место внутри базы, но файл остаётся прежнего размера — он сожмётся только после «Тестирования и исправления» со сжатием (файловая) или команды сжатия СУБД (клиент-серверная).
Что уменьшает размер сильнее всего?
Обычно — вынос присоединённых файлов в тома на диске и свёртка старых периодов. Именно сканы и многолетние движения регистров занимают больше всего места.
Можно ли сжать базу, не выгоняя пользователей?
Нет. Сжатие таблиц в файловой базе требует монопольного доступа, все сеансы закрываются. Планируйте операцию на ночь или выходной и делайте резервную копию заранее.
Нужно ли сжимать клиент-серверную базу вручную?
Как правило, нет. Для неё достаточно регулярного обслуживания СУБД. Ручное сжатие (shrink) делают разово после крупной чистки, потому что оно фрагментирует данные.
Безопасна ли свёртка информационной базы?
Да, если делать её на копии и сверять остатки до и после. На рабочей базе без проверки свёртку запускать рискованно — восстановить удалённые документы будет неоткуда, кроме резервной копии.