Чистим и сжимаем базу 1С: как вернуть гигабайты
Содержание
Чтобы уменьшить размер базы 1С, сначала смотрят, что именно её раздувает: журнал регистрации, присоединённые файлы, старые документы и помеченные на удаление объекты. Дальше применяют методы сжатия и очистки по очереди — от безопасных (чистка журнала, удаление помеченных) к радикальным (выгрузка-загрузка, свёртка). Для файловой базы место возвращает сжатие таблиц, для серверной — обслуживание на стороне СУБД.
Важное различие: удаление данных
внутри базы не уменьшает файл автоматически. Вы освобождаете место внутри контейнера, но сам .1CD или размер базы на SQL остаётся прежним, пока вы не пересоберёте таблицы. Поэтому почти любая чистка заканчивается одним из двух действий — сжатием таблиц или выгрузкой-загрузкой.
Ниже — по шагам: как найти тяжёлые места, что чистить и чем потом «ужать» результат. Пути указаны для 1С 8.3 с интерфейсом «Такси».
С чего растёт база и как найти тяжёлые таблицы
Прежде чем что-то удалять, посмотрите структуру. Три вещи дают основной объём в большинстве баз:
- 📄 Присоединённые файлы и сканы. Если в настройках хранить файлы внутри информационной базы, а не в томах на диске, картинки и PDF оседают в таблицах и тянут их вверх.
- 🧾 Журнал регистрации. Логи действий пользователей за годы — отдельный большой кусок на диске.
- 🗂️ Документы и регистры за старые периоды. Проводки, движения, версии объектов, которые давно не нужны для оперативной работы.
Как измерить, что сколько весит:
- Для клиент-серверной базы откройте консоль СУБД. На MS SQL отчёт
Disk Usage by Top Tables(правый клик по базе →Reports → Standard Reports) покажет самые тяжёлые таблицы. На PostgreSQL — запрос кpg_total_relation_size. - Для файловой базы прямого отчёта по таблицам в штатной поставке нет. Ориентируйтесь по размеру файла
.1CDв динамике и по косвенным признакам: объём журнала, количество версий объектов, число присоединённых файлов. - Внутри самой 1С оцените нагрузку через раздел
Администрирование→ настройки хранения файлов и версионирования объектов: часто именно версионирование копит десятки гигабайт незаметно.
Имена таблиц на SQL непрозрачны (_Document123, _Reference45). Сопоставить их с объектами конфигурации помогает стандартная функция платформы «Структура хранения базы данных» — она доступна в режиме предприятия у пользователя с правами администратора и показывает соответствие «метаданные → таблица СУБД».
Определив, что весит больше всего, выбирайте метод под свой случай.
Чистка журнала регистрации событий
Журнал регистрации в 8.3 хранится отдельно от учётных данных — в каталоге базы, в файле формата SQLite (расширение .lgd). Это значит, что его чистка уменьшает место на диске, но на размер .1CD или базы SQL напрямую не влияет. Зато выигрыш бывает крупным: у баз, которые годами копили лог, журнал легко перерастает саму базу.
Порядок действий через Конфигуратор:
- Откройте базу в Конфигураторе (
Конфигураторв окне запуска). - Меню
Администрирование→Настройка журнала регистрации. - Задайте разумный срок хранения — например, разделять журнал по месяцам и держать последние 3–6 месяцев.
- Нажмите кнопку сокращения журнала и укажите дату, до которой записи удаляются. При желании их можно выгрузить в файл перед удалением.
Сокращение журнала необратимо: записи до указанной даты исчезнут. Если журнал нужен для разбора инцидентов или аудита — сначала выгрузите его в файл, потом чистите.
Второй способ — просто удалить файлы журнала из каталога базы при остановленной работе пользователей. Платформа создаст журнал заново. Делайте это только когда в базе никто не работает и есть свежая резервная копия — иначе оборвёте активные сеансы.
На будущее настройте разумную политику: избыточная детализация (логирование чтения данных, например) раздувает журнал в разы. Оставьте только нужные категории событий.
Удаление помеченных на удаление объектов
Пометка на удаление сама по себе ничего не стирает — помеченные документы и элементы справочников продолжают занимать место. Освобождает его отдельная процедура с контролем ссылочной целостности.
Запуск в режиме предприятия:
- Раздел
Администрирование, блок обслуживания данных, команда «Удаление помеченных объектов». - Выберите режим с контролем ссылок (программа проверит, не ссылаются ли на удаляемые объекты другие данные).
- Если найдены ссылки — платформа покажет список и не даст удалить объект, пока на него кто-то ссылается. Снимите пометку или перенаправьте ссылки.
- Запустите удаление.
Перед массовым удалением проверьте остатки и взаиморасчёты. Удалённый контрагент или номенклатура, на которые опирались закрытые документы, нарушат целостность учёта. Контроль ссылок страхует от этого, но отчёты лучше свести заранее.
После удаления помеченных место внутри базы освободится, но файл не уменьшится. Нужен следующий шаг — сжатие таблиц (файловая база) или обслуживание СУБД (серверная). Без него вы просто создадите «пустоты» внутри базы, которые заполнятся новыми данными.
Частая ошибка — пытаться удалить тысячи объектов за один проход. Контроль ссылок на большом объёме работает долго и может упасть по памяти. Удаляйте партиями: сначала документы за старые периоды, потом справочники.
Сжатие таблиц файловой базы
Для файловой базы (.1CD) освободившееся место возвращает сжатие таблиц. Оно пересобирает файл и выкидывает пустоты, оставшиеся после удаления данных.
Через Конфигуратор:
Администрирование→Тестирование и исправление.- Снимите лишние галочки, оставьте проверки по необходимости и обязательно включите сжатие таблиц информационной базы.
- Выберите режим «только тестирование» для первого прогона либо сразу «тестирование и исправление».
- Запустите. Процедура требует монопольного доступа — пользователи работать не смогут.
Тестирование и исправление требует монопольного доступа и свежей резервной копии. На большой базе прогон идёт часами. Планируйте на нерабочее время и перед запуском сделайте копию файла .1CD.
Альтернатива для файловой базы — выгрузка-загрузка (следующий раздел): она тоже пересобирает файл и часто даёт лучший результат по размеру.
Утилита chdbfl.exe из поставки платформы проверяет физическую целостность файловой базы и чинит повреждения, но она не предназначена для уменьшения размера — не путайте её со сжатием таблиц.
Выгрузка и загрузка информационной базы
Выгрузка в файл .dt и обратная загрузка — самый надёжный способ пересобрать базу «с нуля». Платформа выгружает данные в компактный архив, а при загрузке создаёт таблицы заново, без накопленных пустот и фрагментации.
Порядок:
- Конфигуратор →
Администрирование→Выгрузить информационную базу. Укажите путь к.dt. - Создайте новую пустую базу или подготовьте целевую.
- Конфигуратор целевой базы →
Администрирование→Загрузить информационную базу, выберите.dt.
Нюансы по размеру:
- Для файловой базы
.dt-цикл сжимает файл так же или сильнее, чем сжатие таблиц. - Для клиент-серверной базы загрузка из
.dtпересоздаёт таблицы в СУБД — это убирает фрагментацию и возвращает место, которое не отдал обычныйDELETE. - Сам файл
.dt— это не резервная копия в полном смысле. Для серверных баз штатный бэкап делают средствами СУБД;.dtудобен для переноса и пересборки, но не заменяет регулярное резервное копирование .
Выгрузка-загрузка требует монопольного доступа. Все сеансы будут завершены. Делайте только когда в базе никто не работает.
Свёртка базы: убираем старые периоды
Если база разрослась за годы работы, точечная чистка даёт немного — основной вес в старых документах и движениях регистров. Тогда применяют свёртку: на выбранную дату формируют остатки (ввод начальных остатков ), а документы и движения до неё удаляют.
Что делает свёртка:
- Считает остатки по регистрам на дату свёртки.
- Создаёт документы ввода остатков с этими суммами.
- Помечает на удаление (или удаляет) старые документы и движения до даты.
- Проверяет, что обороты и остатки после свёртки сходятся с исходными.
Свёртка — ответственная операция, и штатного механизма «в один клик» в актуальных релизах не всегда есть под рукой. Обычно её выполняют специальной обработкой свёртки. Свёртку делают только на копии базы и сверяют результат с оригиналом по ключевым отчётам (ОСВ, остатки по складам, взаиморасчёты) до того, как перевести на свёрнутую базу рабочих пользователей.
Свёртка нужна не всем. Если закрытые годы нужны для сверок с налоговой и контрагентами, безопаснее держать их в отдельной архивной копии базы, а в рабочей оставить только оперативный период. Так вы и место экономите, и историю не теряете.
Отдельно оцените версионирование объектов: в разделе Администрирование → настройки версионирования можно сократить глубину хранения версий. Иногда отключение версионирования для часто меняющихся объектов (например, цен) освобождает больше, чем свёртка документов.
Обслуживание серверной базы на стороне СУБД
У клиент-серверной базы размером управляет не только 1С, но и сама СУБД. Даже после чистки внутри 1С файл данных и журнал транзакций на SQL могут оставаться большими.
MS SQL Server:
- Проверьте модель восстановления базы. Если журнал транзакций (
.ldf) разросся до десятков гигабайт, а полное восстановление по точке времени не требуется — переведите базу в режимSIMPLEлибо настройте регулярный бэкап журнала приFULL. - Освободить место в файле данных помогает
DBCC SHRINKFILE, но злоупотреблять им нельзя: shrink фрагментирует индексы, после него нужна переиндексация. - Настройте регламентное обслуживание:
REBUILD/REORGANIZEиндексов и обновление статистики (UPDATE STATISTICS). Фрагментированные индексы не только тормозят, но и занимают лишнее место.
PostgreSQL:
VACUUMпомечает «мёртвые» строки для повторного использования, но файл не отдаёт. Вернуть место на диск умеетVACUUM FULL— он пересобирает таблицу, но блокирует её на время работы.- Проверьте, что
autovacuumнастроен и успевает обрабатывать активные таблицы 1С. - Периодически выполняйте
REINDEXдля раздувшихся индексов.
DBCC SHRINKFILE на MS SQL и VACUUM FULL на PostgreSQL дают нагрузку и блокировки. Запускайте в окно обслуживания, не на пике работы пользователей, и после shrink обязательно переиндексируйте.
Остановка службы сервера 1С или СУБД ради обслуживания оборвёт все сеансы пользователей — предупредите их заранее и действуйте в нерабочее время.
Как не дать базе разрастаться снова
Разовая чистка решает проблему на сегодня. Чтобы не возвращаться к ней каждые полгода, настройте профилактику:
- 🗃️ Храните файлы в томах на диске, не в базе. В настройках работы с файлами переключите хранение на тома — присоединённые документы перестанут раздувать таблицы.
- 🧹 Регулярно удаляйте помеченные объекты. Настройте регламентное задание удаления помеченных (раз в неделю или месяц).
- 📉 Ограничьте журнал регистрации. Разумный срок хранения и только нужные категории событий.
- 🔁 Обслуживайте СУБД по расписанию. Переиндексация, обновление статистики, контроль журнала транзакций — отдельными заданиями SQL.
- 🧮 Пересмотрите версионирование. Держите версии только для важных объектов и на разумную глубину.
Частые вопросы
Чем отличается уменьшение размера файловой и серверной базы?
Можно ли уменьшить базу без выгрузки-загрузки?
Безопасно ли удалять файлы журнала регистрации вручную?
Файл .dt — это резервная копия?
.dt для восстановления рискованно.