Что раздувает базу 1С и как вернуть место на диске
Содержание
Удалили тысячи старых документов, а файл 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С:Бухгалтерии для этого есть обработка Свёртка информационной базы. Расположение в меню зависит от релиза — ищите по слову «свёртка» в разделе Администрирование. Порядок работы такой:
- Выбираете дату свёртки — обычно начало текущего или прошлого года.
- Обработка формирует документы ввода остатков по регистрам.
- Вы сверяете остатки «до» и «после» по ключевым отчётам (оборотно-сальдовая ведомость).
- Только убедившись в совпадении, удаляете старые документы.
Свёртку делайте на копии базы. Разверните резервную копию в отдельную базу, проведите свёртку там, проверьте отчёты — и лишь потом переводите работу на свёрнутую базу. Так вы ничего не потеряете, если остатки не сойдутся.
После свёртки освобождается основная масса места — старые движения регистров уходят вместе с документами.
Пересчитываем итоги и переиндексируем таблицы
Регистры хранят не только сами движения, но и предрассчитанные итоги в отдельных таблицах (…RGT). Со временем итоги занимают заметный объём и замедляют отчёты.
Откройте управление итогами: в 1С:Бухгалтерии это Операции → Регламентные операции → Управление итогами (в части релизов — через Администрирование → Обслуживание). Задачи две:
- установить период рассчитанных итогов — обычно до конца прошлого месяца, более свежие отчёты строятся «на лету»;
- пересчитать итоги , если видите расхождения в отчётах.
Переиндексация убирает «мусор» из индексов. В файловой базе её делает Конфигуратор: Администрирование → Тестирование и исправление → Реиндексация таблиц. В клиент-серверной переиндексацию удобнее вынести в регламентное обслуживание СУБД (об этом ниже).
Чистим журнал регистрации и кэш
Журнал регистрации хранится отдельно от файла базы. Это файлы .lgd (или старый .lgf) в каталоге базы, и за годы они разрастаются до гигабайтов, никак не влияя на 1Cv8.1CD.
Сократить журнал можно двумя путями:
- в режиме Предприятия — через настройки журнала регистрации, задав срок хранения и удалив записи до даты;
- в Конфигураторе —
Администрирование → Настройка журнала регистрации, где тоже задаётся граница хранения.
Разумная практика — хранить журнал за последние 3–6 месяцев, этого хватает для разбора инцидентов.
Кэш клиента — это локальные временные файлы в профиле пользователя (%LOCALAPPDATA%\1C\1cv8 и %APPDATA%\1C\1cv8). На размер базы они не влияют, но их чистят при сбоях интерфейса. Запустите базу с параметром /ClearCache или удалите каталоги кэша при закрытой программе.
/ClearCache очищает только локальный кэш на вашем компьютере. Данные в базе он не трогает и её размер не уменьшает.
Управляем историей изменений и версиями объектов
Если включено версионирование объектов, 1С хранит копию документа или справочника при каждом изменении. На активной базе это одна из самых быстрорастущих таблиц.
В 1С:Бухгалтерии настройка живёт в разделе Администрирование → Общие настройки → История изменений (в ряде релизов — Версионирование объектов). Здесь можно:
- отключить версионирование для объектов, по которым оно не нужно;
- задать срок хранения версий;
- удалить устаревшие версии за прошлые периоды.
Отдельно существует платформенный механизм «История данных». Если он включён в конфигурации, срок хранения тоже стоит ограничить — иначе служебные таблицы истории растут без предела.
Выносим присоединённые файлы в тома на диске
По умолчанию сканы, договоры и прочие вложения хранятся внутри базы. Пара тысяч PDF и фотографий — и файл базы раздут в разы, хотя учётных данных там немного.
Решение — хранить файлы не в базе, а в томах на диске. В 1С:Бухгалтерии: Администрирование → Настройки работы с файлами → Хранить файлы в томах на диске. Дальше:
- Создайте том и укажите сетевой или локальный путь к папке.
- Запустите перенос уже накопленных файлов из базы в том.
- Проверьте, что файлы открываются из карточек, — и только потом удаляйте их из базы.
После переноса таблица с файлами в базе почти опустошается, а новые вложения сразу ложатся на диск. Это часто даёт самое заметное уменьшение размера без всякой свёртки.
Путь к тому должен быть доступен всем пользователям базы (общая сетевая папка с правами на запись). Если положить том в локальную папку одного компьютера, остальные файлы открыть не смогут.
Физически сжимаем базу и ставим регламент
Все действия выше освобождают место внутри базы. Чтобы оно вернулось на диск, таблицы нужно сжать физически.
Файловая база. Откройте Конфигуратор монопольно: Администрирование → Тестирование и исправление. Отметьте Реиндексация таблиц и Сжатие таблиц информационной базы, режим — «Тестирование и исправление». Сжатие физически уменьшает файл 1Cv8.1CD, перенося данные плотно и отдавая освободившееся место системе.
«Тестирование и исправление» со сжатием требует монопольного доступа: все сеансы пользователей будут закрыты, а база недоступна на время операции. Запускайте ночью или в выходной и обязательно после резервной копии. На больших базах процесс идёт часами.
Проверить физическую целостность файловой базы помогает отдельная утилита chdbfl.exe из каталога платформы — её запускают на полностью закрытой базе, с флагом исправления ошибок при необходимости.
Клиент-серверная база
. Физическим размером управляет СУБД. Уменьшить файл после массового удаления данных можно командой сжатия (DBCC SHRINKDATABASE в MS SQL, VACUUM FULL в PostgreSQL), но злоупотреблять ей не стоит: сжатие фрагментирует данные, его делают разово после крупной чистки, а не по расписанию.
Чтобы база не распухала снова, держите регулярное обслуживание:
Что именно применять, зависит от типа базы — файловая или клиент-серверная: