База 1С выросла до десятков гигабайт: что удалить, что свернуть и как вернуть место на диске
Содержание
Чтобы урезать базу 1С, сначала найдите, какие таблицы занимают место, потом уберите лишнее внутри программы (история изменений, присоединённые файлы, помеченные объекты, мёртвые узлы обмена), и только после этого сожмите сам файл базы: в файловом варианте — через Тестирование и исправление с флажком «Сжатие таблиц информационной базы», в клиент-серверном — средствами СУБД. Без последнего шага размер на диске почти не изменится: удалённые записи оставляют пустые страницы внутри файла.
Почти всегда базу раздувают две-три таблицы, а не «документы за десять лет». Поэтому оптимизация начинается с замера, а свертка периодов — крайняя мера, к которой приходят не всегда.
С чего начать: замер и подготовка к уменьшению базы
Прежде чем что-то чистить, получите две цифры: общий размер и десятку самых тяжёлых таблиц.
Файловая база. Данные лежат в одном файле 1Cv8.1CD в каталоге базы. Путь к каталогу виден в окне запуска внизу, когда база выделена в списке. Журнал регистрации хранится отдельно, в подпапке 1Cv8Log, и в размер .1CD не входит.
Клиент-серверная база на MS SQL. Размер таблиц покажет запрос в SQL Server Management Studio:
SELECT TOP 20
t.name AS table_name,
SUM(a.total_pages) * 8 / 1024 AS size_mb
FROM sys.tables t
JOIN sys.indexes i ON t.object_id = i.object_id
JOIN sys.partitions p ON i.object_id = p.object_id AND i.index_id = p.index_id
JOIN sys.allocation_units a ON p.partition_id = a.container_id
GROUP BY t.name
ORDER BY size_mb DESC;
Имена вида _InfoRg1234 или _Document567 ничего не говорят. Сопоставить их с объектами конфигурации помогает функция ПолучитьСтруктуруХраненияБазыДанных(). Её можно выполнить на сервере во внешней обработке:
&НаСервере
Процедура ПоказатьСтруктуруНаСервере()
Структура = ПолучитьСтруктуруХраненияБазыДанных(, Истина);
Для Каждого Строка Из Структура Цикл
Сообщить(Строка.ИмяТаблицыХранения + " — " + Строка.Метаданные + " (" + Строка.Назначение + ")");
КонецЦикла;
КонецПроцедуры
Второй параметр Истина возвращает имена таблиц так, как их видит СУБД. Дальше ищете в выводе имя из топа SQL-запроса.
Перед любыми удалениями:
- 💾 сделайте полную копию: выгрузку
.dtили бэкап средствами СУБД; - 👥 договоритесь об окне без пользователей — часть операций требует монопольного режима;
- 📝 запишите размер «до», чтобы потом понимать, какой шаг что дал.
Все шаги ниже делайте сначала на копии базы, а не на рабочей.
Откуда берётся лишний объём базы 1С
Типичные «пожиратели» места в типовых конфигурациях на БСП:
- 🗂 История изменений (версии объектов). Каждая запись документа сохраняет полную копию объекта. Активный документ, который перепроводили 50 раз, даёт 50 версий.
- 📎 Присоединённые файлы в базе. Сканы договоров, вложения ЭДО, фото товаров. По умолчанию они могут храниться прямо в таблицах базы.
- 🔁 Регистрация изменений для обмена. Если синхронизация с другой базой или сайтом давно не работает
, план обмена продолжает копить записи о каждом изменённом объекте. В SQL такие таблицы содержат в имени
ChngR. - 🗑 Помеченные на удаление объекты. Пометка не удаляет данные, они остаются в базе со всеми движениями.
- 📈 Сами документы и регистры за много лет. Это «честный» объём, и он редко главный.
- 🧱 Пустое место внутри файла. После удаления строк файл
.1CDи файл данных SQL не уменьшаются сами.
Для клиент-серверной базы есть ещё один частый виновник — журнал транзакций SQL (.ldf). При полной модели восстановления и без резервного копирования журнала он растёт без ограничений и бывает больше самих данных.
Шаг 1. Сократить историю изменений и журнал регистрации
В конфигурациях на БСП история изменений включается в Администрирование → Общие настройки, группа «История изменений». Там же задаётся, для каких объектов её вести и сколько хранить версии.
Порядок:
- Откройте
Администрирование → Общие настройкии найдите группу «История изменений». - Перейдите в настройку и оставьте историю только для объектов, где она нужна для разбора спорных ситуаций: договоры, контрагенты, кадровые приказы.
- Задайте срок хранения версий — например, год.
- Запустите удаление устаревших версий из этой же формы. На больших базах операция идёт часами, лучше ночью.
Журнал регистрации на размер .1CD не влияет, но съедает диск сервера. Сократить его можно в Конфигураторе: Администрирование → Настройка журнала регистрации, кнопка «Сократить». Программа предложит дату, до которой удалить записи
, и сохранить удаляемое в отдельный файл.
В той же форме включите разделение журнала по периодам (например, по месяцам). Старые файлы журнала тогда легко архивировать и убирать с сервера без вмешательства в базу.
Шаг 2. Вынести файлы из базы и удалить помеченные объекты
Перенос файлов в тома на диске
Это самый результативный шаг, если вложений много. Файлы остаются доступны пользователям из карточек документов, но физически лежат в папке на диске.
- Создайте каталог на сервере с правами записи для пользователя, от которого работает 1С (для файловой базы — для всех пользователей).
- В
Администрирование → Общие настройкив группе про присоединённые файлы включите хранение в томах на диске. - Создайте том: укажите путь к каталогу и, при желании, максимальный размер.
- Запустите перенос существующих файлов из базы в тома командой из той же группы настроек.
Папку томов обязательно включите в резервное копирование. Бэкап одной базы без томов — это база с пустыми ссылками на файлы.
Удаление помеченных объектов
Путь: Администрирование → Обслуживание → Корректировка данных → Удаление помеченных объектов.
- Выберите режим полного удаления и запустите поиск.
- Программа проверит ссылки. Объекты, на которые ссылаются другие данные, не удалятся — список таких связей показывается после проверки.
- Разберите мешающие ссылки: часто это сам помеченный документ-основание у непомеченного документа.
Если на удалённый объект где-то оставалась ссылка, её можно получить только при принудительном удалении из Конфигуратора. Так делать не нужно: в отчётах появятся «битые» ссылки вида <Объект не найден>.
Шаг 3. Очистить регистрацию обменов и найти дубли
Мёртвые узлы обмена
Откройте Администрирование → Синхронизация данных и посмотрите на дату последнего успешного обмена по каждой настройке.
- ❌ Синхронизация больше не нужна — удалите её настройку. Вместе с узлом уходит и накопленная регистрация изменений.
- ⏸ Обмен нужен, но долго не работал — после восстановления связи и успешного сеанса записи регистрации очистятся сами. Если восстанавливать нечего, а сам узел нужен, очистите регистрацию и выполните начальную выгрузку заново.
Типичная картина в рознице: магазин закрыли, а узел обмена с ним остался. Через год-два таблицы регистрации по такому узлу могут занимать больше места, чем все документы базы.
Дубли в справочниках
Обработка Поиск и удаление дублей находится там же, в Администрирование → Обслуживание → Корректировка данных. Она находит похожие элементы по выбранным полям, заменяет ссылки на оригинал и удаляет копию.
Честно о пользе: по объёму дубли контрагентов и номенклатуры почти ничего не дают — это килобайты. Делать чистку стоит ради порядка в отчётах, а не ради места. Перед заменой ссылок в закрытых периодах проверьте, не изменятся ли сданные отчёты.
Шаг 4. Свернуть старые периоды или начать новую базу
Если замер показал, что место занимают документы и регистры, остаётся убрать прошлые годы.
| Способ | Когда подходит | Чем рискуете |
|---|---|---|
| Обработка «Свертка информационной базы» | Нужна одна база, старые годы не нужны в деталях | Документы до даты свертки заменяются остатками, отчёты за прошлые периоды в базе уже не построить |
| Новая база с переносом остатков | Конфигурацию всё равно пора менять или чистить | Нужно настроить заново учётную политику, пользователей, обмены |
| Ничего не сворачивать, перенести на SQL | База файловая и уже больше 20–30 ГБ | Нужен сервер 1С и СУБД, но объём перестаёт быть проблемой |
Для Бухгалтерии предприятия 3.0 обработка «Свертка информационной базы» ищется в Администрирование → Обслуживание; если её нет в меню вашего релиза, откройте через «Все функции» в разделе обработок. Она проверяет, закрыт ли период, и формирует остатки на дату свертки.
Перед сверткой сохраните полную копию базы как архив и не удаляйте её. Первичные документы и данные учёта хранят не менее пяти лет — это требование закона о бухучёте и Налогового кодекса. Архивная копия и есть ваш источник для проверок.
Дату свертки выбирайте по закрытому и сданному периоду, обычно начало года.
Шаг 5. Сжать файл базы: файловый вариант, SQL и выгрузка в .dt
После чистки внутри программы освобождённое место нужно отдать операционной системе.
Файловая база
В Конфигураторе: Администрирование → Тестирование и исправление. Оставьте флажок «Сжатие таблиц информационной базы», остальные проверки можно снять, если цель — только размер. Нужен монопольный доступ: пользователи должны выйти.
Тот же результат даёт утилита chdbfl.exe из каталога платформы:
C:\Program Files\1cv8\8.3.24.1548\bin\chdbfl.exe
Номер версии в пути — ваш, из установленной платформы. В утилите указываете путь к 1Cv8.1CD и запускаете проверку. База в это время должна быть закрыта у всех.
Клиент-серверная база на MS SQL
Сначала разберитесь с журналом транзакций. Если точечное восстановление на момент времени не нужно, переведите базу на простую модель восстановления. Если нужно — настройте регулярный бэкап журнала. Только потом сжимайте:
USE [buh_base];
ALTER DATABASE [buh_base] SET RECOVERY SIMPLE;
DBCC SHRINKFILE (N'buh_base_log', 1024);
DBCC SHRINKFILE (N'buh_base', 0);
Логические имена файлов (buh_base_log и buh_base в примере) посмотрите в свойствах базы на вкладке «Файлы». Сжатие файла данных фрагментирует индексы, поэтому после него запустите перестроение индексов в плане обслуживания SQL.
Выгрузка и загрузка .dt — радикальный способ
Администрирование → Выгрузить информационную базу в Конфигураторе, затем загрузка в новую пустую базу. Файл создаётся заново, без пустых страниц и мусора внутри.
- Выгрузите базу в
.dt. - Создайте новую пустую базу и загрузите туда
.dt. - Проверьте, что новая база открывается, отчёты строятся, обмены работают.
- Только после проверки переключите пользователей на новую базу.
Загрузка .dt полностью заменяет данные в той базе, куда вы её загружаете. Поэтому загружайте в новую, а не поверх рабочей.
Шаг 6. Настроить автоматическую очистку, чтобы база не разрасталась снова
Разовая чистка без настройки даёт эффект на полгода. Что поставить на расписание:
- ⏰ Регламентные задания. В
Администрирование → Обслуживание → Регламентные и фоновые заданияпроверьте задания удаления устаревших версий и удаления помеченных объектов: включены ли, по какому расписанию. Ставьте на ночь. - 🗂 Срок хранения версий — один раз задать и не трогать.
- 📎 Тома на диске — оставить новые файлы сразу в томах, а не в базе.
- 🔁 Контроль обменов — раз в месяц смотреть даты последних успешных синхронизаций.
- 🧾 Журнал регистрации — разделение по периодам и архив старых файлов.
- 🗄 SQL — план обслуживания: бэкап, бэкап журнала (при полной модели), перестроение индексов, обновление статистики.
Для файловой базы сжатие таблиц через chdbfl.exe удобно ставить раз в квартал вместе с плановым бэкапом. Делайте это в нерабочее время: пока идёт проверка, пользователи не смогут войти.
Частые вопросы
Почему после удаления данных база 1С не уменьшилась?
DBCC SHRINKFILE для SQL.Какой размер файловой базы считается критичным?
Можно ли урезать базу, не выгоняя пользователей?
.dt требуют, чтобы все вышли.Что будет с отчётами после свертки?
Влияет ли размер журнала регистрации на размер базы?
1Cv8Log рядом с базой. Он занимает диск, но файл 1Cv8.1CD не увеличивает.Источники
- Федеральный закон от 06.12.2011 № 402-ФЗ «О бухгалтерском учёте», ст. 29
- Налоговый кодекс РФ, ч. 1, ст. 23, п. 1, пп. 8