База 1С разрослась до десятков гигабайт: что удалить, что свернуть и как вернуть место на диске
Содержание
Обрезать базу 1С — значит удалить или свернуть данные, которые раздувают её, а потом вернуть освободившееся место на диске. Порядок такой: найти самые большие таблицы, почистить их штатными средствами конфигурации (свёртка, версии объектов, удаление помеченных), затем сжать файл базы через Тестирование и исправление или выгрузку-загрузку .dt. Для SQL-базы последний шаг — сжатие файлов на стороне СУБД.
Частое заблуждение: «удалю старые документы — и база станет меньше». Не станет. Файл 1Cv8.1CD или файл данных SQL после удаления записей остаётся того же размера, свободное место просто помечается внутри. Второе заблуждение — что базу раздувают документы. Чаще виноваты служебные данные: история версий, регистрация изменений для обменов, присоединённые файлы.
С чего начать: найдите, что именно раздуло базу
Резать вслепую бессмысленно. Свёртка за три года может сэкономить 10 % объёма, а одна настройка версионирования — 60 %. Сначала замерьте.
Клиент-серверная база на MS SQL
Запрос показывает 20 самых тяжёлых таблиц. Он только читает данные, его безопасно выполнять в рабочее время:
SELECT TOP 20
t.name AS table_name,
SUM(CASE WHEN i.index_id IN (0,1) THEN p.rows ELSE 0 END) AS row_count,
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;
Клиент-серверная база на PostgreSQL
SELECT relname AS table_name,
pg_size_pretty(pg_total_relation_size(relid)) AS total_size
FROM pg_catalog.pg_statio_user_tables
ORDER BY pg_total_relation_size(relid) DESC
LIMIT 20;
Как понять, что за таблица _InfoRg1234
СУБД показывает служебные имена. По префиксу уже видно тип объекта:
| Префикс | Что хранит |
|---|---|
_Document…, _Reference… | документы и справочники |
…_VT… | табличные части |
_InfoRg… | регистры сведений |
_AccumRg…, _AccumRgT… | регистры накопления и их итоги |
_AccRg…, _AccRgED… | регистр бухгалтерии и значения субконто |
…ChngR | регистрация изменений для обменов |
Точное имя объекта метаданных даёт метод ПолучитьСтруктуруХраненияБазыДанных(). Выполните код в серверном контексте, например во внешней обработке или консоли кода:
ИскомаяТаблица = НРег("_InfoRg1234");
Структура = ПолучитьСтруктуруХраненияБазыДанных(, Истина);
Для Каждого Строка Из Структура Цикл
Если НРег(Строка.ИмяТаблицыХранения) = ИскомаяТаблица Тогда
Сообщить(Строка.ИмяТаблицы + " — " + Строка.Назначение);
КонецЕсли;
КонецЦикла;
Второй параметр Истина возвращает имена в терминах СУБД, поэтому их можно сравнивать с результатом SQL-запроса.
Файловая база
У файловой базы таблицы СУБД не посмотреть. Ориентируйтесь на косвенные признаки:
- 📁 размер
1Cv8.1CDи папки1Cv8Logрядом с ним — журнал регистрации лежит отдельно от базы; - 📎 настройки хранения файлов: если присоединённые файлы хранятся в базе, каждый скан договора лежит внутри
1Cv8.1CD; - 🕓 включена ли история изменений объектов и сколько лет она копится.
В платформе 8.3.15 и новее размер данных можно получить кодом: функция ПолучитьРазмерДанныхБазыДанных() принимает список объектов метаданных и возвращает объём в байтах. Это работает и для файловой базы.
Кто обычно занимает место
По опыту обслуживания типовых конфигураций на БСП, в топе таблиц почти всегда оказываются одни и те же объекты:
- 🗂 регистр сведений «Версии объектов» — при каждой записи документа сохраняется его полная копия. За 5 лет в активной базе это десятки гигабайт;
- 🔄 регистрация изменений (
…ChngR) — если узел обмена давно не синхронизируется или удалён некорректно, записи копятся без конца; - 📎 присоединённые файлы — сканы, PDF, вложения писем, хранимые в базе;
- 📊 итоги и движения регистров — растут вместе с числом документов, это «честный» объём;
- ⏳ служебные очереди и журналы конфигурации — например, протоколы обменов и фоновых заданий.
Если в топе «Версии объектов» или ChngR-таблицы, свёртка документов почти ничего не даст. Начинайте с них.
Сокращение базы 1С штатными средствами конфигурации
Начинайте с безопасных операций. Они выполняются в пользовательском режиме и не требуют вмешательства в структуру базы.
История изменений объектов
В БП 3.0, ЗУП 3.1, УТ 11 настройка находится в Администрирование → Общие настройки, группа «История изменений». Там можно:
- Оставить версионирование только для важных объектов, а не для всех документов подряд.
- Включить автоматическое удаление устаревших версий и задать срок, например 1 год.
- Запустить удаление вручную, чтобы не ждать регламентного задания.
На базе в 40 ГБ, где 25 ГБ занимали версии, такая очистка сокращает объём данных больше, чем любая свёртка.
Удаление помеченных объектов
Помеченные на удаление документы и элементы справочников продолжают лежать в базе. Обработка запускается в Администрирование → Обслуживание, группа «Корректировка данных». Она проверяет ссылки и удаляет только то, на что никто не ссылается.
Удаление помеченных идёт долго и нагружает сервер. Запускайте его вечером, когда в базе мало пользователей.
Свёртка информационной базы
Свёртка удаляет документы до выбранной даты и вместо них создаёт документы ввода остатков. В типовых конфигурациях есть обработка «Свертка информационной базы». Если её нет в меню разделов, откройте Главное меню → Сервис → Параметры и включите флажок «Отображать команду “Все функции”» и найдите обработку в списке Все функции → Обработки.
Перед свёрткой:
- Сделайте полную копию базы и оставьте её как архив.
- Сформируйте оборотно-сальдовую ведомость на дату свёртки и сохраните её.
- Закройте периоды: проведите закрытие месяца , сдайте отчётность за свёртываемые годы.
- Проверьте свёртку на копии, а не на рабочей базе.
После свёртки сформируйте ту же ведомость и сравните остатки. Расхождение даже в одной строке — повод разбираться на копии, а не работать дальше.
Свёртка необратима: восстановить удалённые документы можно только из резервной копии.
Первичные документы и регистры бухучёта по закону хранятся не менее пяти лет после отчётного года. Поэтому архивная копия до свёртки нужна обязательно — налоговая может запросить документы за свёрнутый период.
Журнал регистрации, регистрация изменений и итоги
Журнал регистрации
Журнал хранится в отдельных файлах, а не в таблицах базы. В файловой базе это папка 1Cv8Log рядом с 1Cv8.1CD, в клиент-серверной — каталог базы в папке кластера на сервере 1С.
Сократить журнал можно в Конфигураторе: Администрирование → Настройка журнала регистрации. В этом окне:
- ✂️ кнопка «Сократить» удаляет события до указанной даты, при желании с сохранением в отдельный файл;
- 🔧 уровень регистрации можно понизить, например до ошибок и предупреждений;
- 📅 можно включить разделение журнала по периодам — тогда старые файлы проще архивировать.
Сокращение журнала стирает историю действий пользователей. Если журнал нужен службе безопасности или для разбора спорных ситуаций, сначала сохраните его в файл.
Регистрация изменений для обменов
Каждое изменение объекта регистрируется для всех узлов обмена, куда этот объект должен уйти. Пока узел не принял данные, записи остаются. Типичная история: с филиалом перестали синхронизироваться три года назад, а база каждый день пишет для него новые записи.
Что делать:
- Откройте
Администрирование → Синхронизация данныхи посмотрите список настроенных синхронизаций. - Неиспользуемую синхронизацию удалите штатно, через её карточку. Вместе с узлом удаляется и его регистрация.
- Для рабочих узлов выполните обмен — после подтверждения приёма регистрация очищается.
Итоги регистров
Таблицы итогов (_AccumRgT…, итоговые таблицы регистра бухгалтерии) хранят остатки по периодам. Пересчёт итогов в Администрирование → Обслуживание, группа «Корректировка данных», помогает при ошибках в остатках. Объём базы он меняет слабо, поэтому как метод сокращения его не рассматривайте.
Как уменьшить размер файла базы после очистки
После всех удалений база на диске прежнего размера. Место нужно вернуть отдельным действием.
Файловая база: сжатие таблиц
- Сделайте копию каталога базы.
- Попросите всех выйти. Для этой операции нужен монопольный доступ — сеансы пользователей придётся завершить.
- Откройте Конфигуратор:
Администрирование → Тестирование и исправление. - Оставьте отмеченным пункт «Сжатие таблиц информационной базы». Остальные проверки для чистого сжатия можно снять.
- Нажмите «Выполнить» и дождитесь окончания.
Выгрузка и загрузка .dt
Второй способ — Администрирование → Выгрузить информационную базу в Конфигураторе, затем загрузить этот файл в новую пустую базу. При загрузке данные пишутся плотно, без пустых страниц.
Плюсы способа: работает и для файловой, и для клиент-серверной базы, заодно даёт резервную копию. Минусы: на базе в 100 ГБ выгрузка и загрузка идут несколько часов, а загрузка .dt в существующую базу полностью заменяет её данные.
Загружайте .dt в новую базу, а не поверх рабочей. Так у вас остаётся рабочий вариант, если загрузка прервётся.
Новая база с остатками вместо старой
Если база ведётся 8-10 лет и свёртка занимает сутки, проще начать новую. Схема:
- Создайте новую базу на актуальном релизе той же конфигурации.
- Перенесите справочники: контрагентов, номенклатуру, сотрудников, договоры.
- Перенесите остатки на дату начала, например на 1 января.
- Старую базу оставьте только для чтения как архив.
Перенос делают через обработки конвертации данных. Для части конфигураций есть готовые правила обмена «самой в себя» или переноса из одной типовой в другую. Для нестандартной доработанной базы правила пишут под неё в «Конвертации данных».
Сравните методы:
| Метод | Когда подходит | Риски |
|---|---|---|
| Очистка версий и регистрации | топ по размеру — служебные таблицы | минимальные |
| Свёртка базы | история учёта реально тяжёлая | долго, необратимо, расхождения остатков |
| Новая база с остатками | база старая и доработанная | теряется оперативный доступ к истории, нужен архив |
Сжатие таблиц / .dt | после любой очистки | монопольный доступ, простой работы |
Что допустимо делать на уровне SQL
Удалять строки из таблиц 1С запросами DELETE или TRUNCATE нельзя. Платформа не узнает об этом: останутся битые ссылки, остатки разойдутся с движениями, ошибки всплывут через месяц в закрытии периода. Изменение данных в обход платформы не поддерживается.
На стороне СУБД безопасно только обслуживание файлов.
Журнал транзакций MS SQL
Частая причина «огромной базы» на MS SQL — не данные, а файл журнала .ldf на десятки гигабайт. Он растёт, если база в полной модели восстановления, а резервные копии журнала не делаются.
Если восстановление на произвольный момент времени вам не нужно, переведите базу в простую модель и сожмите журнал:
ALTER DATABASE [buh] SET RECOVERY SIMPLE;
GO
USE [buh];
DBCC SHRINKFILE (N'buh_log', 1024);
Логическое имя файла журнала (buh_log в примере) посмотрите в свойствах базы в SQL Server Management Studio, на странице «Файлы».
Сжатие файла данных
USE [buh];
DBCC SHRINKFILE (N'buh', 0);
Сжатие файла данных фрагментирует индексы. После него перестройте индексы планом обслуживания или пунктом «Реиндексация таблиц информационной базы» в окне Тестирование и исправление.
PostgreSQL
Здесь место после удалений возвращает VACUUM FULL. Команда блокирует таблицу на время работы, поэтому выполняйте её в окно обслуживания:
VACUUM FULL VERBOSE _inforg1234;
Сжатие файлов и VACUUM FULL на большой базе идут часами и блокируют работу. Запускайте их ночью или в выходные, предупредив пользователей.
Ошибки, из-за которых база не уменьшилась или пострадала
- ❌ Свернули документы, не посмотрев топ таблиц. Сутки работы, минус 5 % объёма, а 30 ГБ версий объектов остались.
- ❌ Почистили данные, но не сжали файл. Размер на диске прежний, кажется, что ничего не сработало.
- ❌ Удалили узел обмена прямым запросом. Регистрация осталась, а синхронизация с другими узлами начала падать.
- ❌ Перевели MS SQL в простую модель и не перенастроили бэкапы. План обслуживания продолжает делать копии журнала и падает с ошибкой каждую ночь.
- ❌ Не оставили архив до свёртки. Через год приходит требование налоговой за свёрнутый период, а документов уже нет.
Частые вопросы
Насколько уменьшится база после свёртки?
Можно ли обрезать базу без монопольного доступа?
.dt требуют монопольного доступа.Ускорит ли сокращение базы работу 1С?
Как часто нужно чистить базу?
Почему файловая база упирается в размер и тормозит?
Источники
- Федеральный закон от 06.12.2011 № 402-ФЗ «О бухгалтерском учёте», ст. 29