Чистка информационной базы 1С 8.3: от помеченных объектов до сжатия в СУБД
Содержание
Почистить базу
1С от мусора — это не одна кнопка, а пять операций: удаление помеченных объектов (Администрирование → Обслуживание), сокращение журнала регистрации, удаление старых версий объектов, тестирование и исправление в Конфигураторе и сжатие на уровне файла или СУБД. Частое заблуждение — что достаточно «удалить помеченные», и база станет меньше. Не станет: записи удалятся, а файл 1Cv8.1CD или файл данных SQL сохранит прежний размер, пока вы не сожмёте его отдельно.
Порядок важен. Сначала измеряем, что именно занимает место, потом удаляем лишнее средствами 1С, и только в конце освобождаем место на диске. Наоборот — сжатие окажется пустой работой.
1. Сначала измерьте: что раздувает базу 1С
Без замера легко потратить вечер на удаление 300 помеченных документов, когда 80% объёма — это журнал регистрации или история версий.
Файловая база
Откройте каталог базы (путь виден в окне запуска при выделении базы). Там лежат:
- 📁
1Cv8.1CD— сами данные; - 📁 папка
1Cv8Log— журнал регистрации, часто весит гигабайты; - 📁
1Cv8tmpи прочие временные файлы — остаются после аварийного завершения.
Если 1Cv8Log сравнима по размеру с 1Cv8.1CD — начинайте с журнала.
Клиент-серверная база
Журнал регистрации лежит на сервере 1С, в каталоге кластера: srvinfo\reg_1541\<идентификатор базы>\1Cv8Log. Данные — в СУБД. Самые тяжёлые таблицы покажет запрос.
Для MS SQL:
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;
Для PostgreSQL:
SELECT relname,
pg_size_pretty(pg_total_relation_size(relid)) AS size
FROM pg_catalog.pg_statio_user_tables
ORDER BY pg_total_relation_size(relid) DESC
LIMIT 20;
Имена вида _InfoRg1234 или _AccumRg567 ничего не говорят. Перевести их в объекты конфигурации помогает функция ПолучитьСтруктуруХраненияБазыДанных(). Выполните код в серверном контексте под администратором (например, во внешней обработке):
Структура = ПолучитьСтруктуруХраненияБазыДанных(, Истина);
Для Каждого Строка Из Структура Цикл
Если Строка.ИмяТаблицыХранения = "_InfoRg1234" Тогда
Сообщить(Строка.ИмяТаблицы + " / " + Строка.Назначение);
КонецЕсли;
КонецЦикла;
Второй параметр Истина возвращает имена таблиц так, как они записаны в СУБД. Подставьте имя из запроса выше.
Что обычно оказывается в топе
| Что занимает место | Как узнать | Чем лечить |
|---|---|---|
| Журнал регистрации | размер папки 1Cv8Log | сокращение журнала (раздел 3) |
| Версии объектов | регистр сведений с версиями в топе таблиц | очистка устаревших версий (раздел 3) |
| Присоединённые файлы | таблицы с двоичными данными файлов | перенос в тома на диске (раздел 3) |
| Помеченные документы и справочники | список в обработке удаления | удаление помеченных (раздел 2) |
| «Пустое» место после удалений | файл больше суммы таблиц | сжатие (разделы 5–6) |
Перед любой чисткой сделайте резервную копию: для файловой базы — выгрузку .dt или копию каталога при закрытой базе, для серверной — бэкап средствами СУБД. Удаление объектов и сокращение журнала не отменяются.
2. Удаление помеченных объектов: чистим базу 1С от «корзины»
Пометка удаления в 1С 8.3 — это только флажок. Документ с пометкой не участвует в учёте, но физически лежит в базе вместе со всеми строками табличных частей.
Путь в типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11): Администрирование → Обслуживание → Удаление помеченных объектов. В Бухгалтерии команда находится в группе «Корректировка данных».
Порядок действий:
- Попросите пользователей завершить работу — удаление идёт быстрее и не конфликтует с чужими правками.
- Откройте обработку и выберите режим удаления выбранных объектов, чтобы видеть список.
- Просмотрите список. Снимите флажки с того, что пометили по ошибке.
- Запустите удаление.
- Разберите остаток: объекты, на которые есть ссылки, обработка не удалит и покажет места использования.
Типичный остаток — помеченная номенклатура, которая встречается в непомеченных документах прошлых лет. Решений два: снять пометку (объект нужен) или сначала разобраться с документами, которые на него ссылаются.
Если остаток не уходит, а «ссылающийся» объект сам помечен — запустите удаление ещё раз. Иногда цепочку объектов удаётся снять только за два-три прохода.
Не давайте пользователям право непосредственного удаления, чтобы «не копить мусор». Удаление без проверки ссылок оставляет в документах битые ссылки вида <Объект не найден>, и исправлять их потом дольше, чем раз в месяц запускать обработку.
3. Журнал регистрации, версии и файлы: где копится основной объём
Сокращение журнала регистрации
Журнал пишет каждый вход, запись и ошибку. За несколько лет при уровне «Регистрировать все события» он вырастает до десятков гигабайт.
В Конфигураторе: Администрирование → Настройка журнала регистрации. В этом окне:
- 🧾 выберите уровень регистрации — для большинства баз хватает «Ошибки» и «Предупреждения»; полный уровень нужен при расследовании;
- ✂️ кнопкой «Сократить» удалите события старше выбранной даты; удаляемую часть можно сохранить в отдельный файл — это архив на случай проверок;
- 📅 включите разделение журнала по периодам — новые файлы будут создаваться, например, помесячно, и старые проще убрать в архив.
В режиме Предприятия журнал смотрят через Администрирование → Обслуживание → Журнал регистрации, но сокращают обычно из Конфигуратора.
Не удаляйте файлы из папки 1Cv8Log вручную при работающих пользователях или запущенной службе сервера 1С. Файл журнала в этот момент открыт, а при повреждении журнала база может не открыться, пока папку не очистят полностью.
Формат журнала зависит от настроек: старый последовательный (файлы .lgf и .lgp) или SQLite (один файл .lgd). Сокращение через Конфигуратор работает для обоих.
Версии объектов
Если включено версионирование, каждое изменение документа сохраняется отдельной записью. В базах с активным документооборотом регистр версий бывает больше всех остальных таблиц.
Настройка версионирования в конфигурациях на БСП — в Администрирование → Общие настройки, в группе, посвящённой истории изменений. Там задают, какие объекты хранят версии и сколько времени. Устаревшие версии удаляет регламентное задание. Проверьте, что оно включено и выполняется без ошибок: Администрирование → Обслуживание → Регламентные и фоновые задания.
Присоединённые файлы
Сканы, договоры и картинки по умолчанию хранятся внутри базы. Вынести их на диск позволяет хранение в томах: Администрирование → Общие настройки → Присоединенные файлы. После включения создайте том (каталог на сервере с доступом для службы 1С) и перенесите существующие файлы командой в списке томов.
База уменьшится, но каталог томов придётся включить в план резервного копирования отдельно.
4. Обновление конфигурации и объекты «Удалить…»
Устаревшая конфигурация тоже копит мусор. При переходе на новые релизы фирма 1С не удаляет объекты сразу, а переименовывает их с префиксом Удалить — например, УдалитьСтарыйРегистр. Данные в таких таблицах остаются, пока обработчики обновления их не перенесут.
Что сделать:
- Обновите типовую конфигурацию до актуального релиза последовательно, не пропуская обязательные промежуточные.
- После обновления зайдите в базу в режиме Предприятия под администратором и дождитесь завершения обработчиков обновления. Отложенная часть идёт в фоне — её состояние показывает форма результатов обновления программы в разделе
Администрирование → Обслуживание. - Если конфигурация доработана, в Конфигураторе сравните её с поставщиком и проверьте, нет ли собственных регистров, которые больше не используются, но хранят годы данных.
Отдельная история — несоответствие конфигурации и структуры базы. Если в Конфигураторе изменили объекты, но не выполнили Конфигурация → Обновить конфигурацию базы данных (F7), база работает на старой структуре. Обновление структуры требует монопольного доступа: все пользователи должны выйти.
Перед обновлением удалите помеченные объекты (раздел 2). Реструктуризация пройдёт быстрее: меньше строк переносить.
5. Тестирование, исправление и сжатие информационной базы
Главный инструмент обслуживания на уровне платформы — Конфигуратор → Администрирование → Тестирование и исправление. Режим требует монопольного доступа: выгоните пользователей и закройте фоновые сеансы.
| Флажок | Что делает | Когда включать |
|---|---|---|
| Реиндексация таблиц | перестраивает индексы | при медленных отборах, после сбоев |
| Проверка логической целостности | ищет повреждения структуры | после аварийного отключения |
| Проверка ссылочной целостности | находит битые ссылки | после непосредственного удаления, ошибок обмена |
| Пересчёт итогов | заново считает итоги регистров | при расхождении остатков в отчётах |
| Сжатие таблиц | освобождает пустое место в файле | после крупных удалений, только для файловой базы |
| Реструктуризация таблиц | пересоздаёт таблицы | при серьёзных повреждениях, долго |
Для битых ссылок выбирайте «Создавать объекты» — так вы увидите, что потеряно, и сможете восстановить связи. «Удалять ссылки на объекты» безвозвратно очищает реквизиты в документах.
Как сжать файловую базу
Два способа:
- 🗜 флажок «Сжатие таблиц информационной базы» в тестировании — быстрее, без пересоздания файла;
- 📦 выгрузка и загрузка:
Администрирование → Выгрузить информационную базув.dt, затемЗагрузить информационную базув новый пустой каталог. Файл1Cv8.1CDсобирается заново и обычно получается заметно меньше.
Второй способ надёжнее, но на базе 20–30 ГБ занимает часы. Загружайте .dt в новый каталог, а не поверх рабочей базы, — если что-то пойдёт не так, рабочая копия останется целой.
Если база не открывается даже в Конфигураторе, используйте утилиту chdbfl.exe из папки bin установленной платформы. Она проверяет файл 1Cv8.1CD при закрытой базе и может исправить найденные ошибки.
6. Чистка серверной базы на стороне MS SQL и PostgreSQL
В клиент-серверном варианте место после удалений освобождает СУБД, а не 1С. Делайте это вне рабочего времени.
MS SQL Server
- 📉 Журнал транзакций. Если модель восстановления полная, а резервных копий журнала нет, файл
.ldfрастёт бесконечно. Либо настройте бэкап журнала, либо переведите базу в простую модель, если восстановление на момент времени не нужно. - 🗜 Сжатие файлов —
DBCC SHRINKFILE. Применяйте разово после крупной чистки: регулярное сжатие фрагментирует индексы. - 🔧 Индексы и статистика — в плане обслуживания: перестроение индексов и обновление статистики еженедельно, обновление статистики можно ежедневно.
-- обновить статистику по всей базе
EXEC sp_updatestats;
-- сжать файл данных до 10 ГБ (имя логического файла смотрите в свойствах базы)
DBCC SHRINKFILE (N'base_data', 10240);
PostgreSQL
- 🧹
VACUUM ANALYZE— помечает освободившееся место для повторного использования и обновляет статистику, таблицы не блокирует. - 🗜
VACUUM FULL— реально уменьшает файлы, но переписывает таблицу целиком и блокирует её на всё время работы. Запускайте только при отключённых пользователях. - ⚙️ Проверьте, что autovacuum включён: без него таблицы регистров разрастаются после каждого перепроведения.
Перед сжатием и VACUUM FULL завершите сеансы пользователей в консоли кластера и заблокируйте начало новых сеансов в свойствах базы. Иначе операция будет ждать блокировок или оборвёт работу людей на полуслове.
7. Кэш и временные файлы на компьютерах пользователей
Часть «мусора» живёт не в базе, а у пользователей. Кэш метаданных и настроек хранится в профиле:
%APPDATA%\1C\1cv8%LOCALAPPDATA%\1C\1cv8
Внутри — папки с именами-идентификаторами, по одной на каждую базу, с которой работали. Старые базы давно удалены, а кэш остаётся.
Безопасно очистить кэш конкретной базы можно параметром запуска:
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /ClearCache
Или добавьте /ClearCache в поле «Дополнительные параметры запуска» в свойствах базы в окне запуска, а после одного входа уберите. Удалять папки кэша вручную можно только при закрытой 1С — открытые программы держат файлы.
На сервере 1С тоже есть кэш сеансовых данных в каталоге кластера. Его очищают только при остановленной службе агента сервера, а остановка обрывает сеансы всех пользователей всех баз кластера. Делайте это в нерабочее время и только если есть конкретная проблема, а не «для профилактики».
8. Проверка результата и график профилактики
После чистки сравните цифры с замером из раздела 1: размер файла базы или СУБД, размер папки журнала, время открытия тяжёлых отчётов. Затем откройте базу под обычным пользователем и проведите пару документов — убедитесь, что ничего не сломалось.
Чтобы база не зарастала снова, закрепите регламент:
Частые ошибки при чистке
- ❌ Сжатие до удаления. Сжимать нечего, место ещё занято записями.
- ❌ Выключенный журнал регистрации «для экономии». При первом же вопросе «кто удалил документ» ответа не будет. Снижайте уровень, а не отключайте.
- ❌ Ручное удаление файлов
1Cv8Logна работающей базе. Повреждённый журнал мешает запуску. - ❌ Регулярный
SHRINKFILEпо расписанию. Файл тут же растёт обратно, индексы фрагментируются. - ❌ Свёртка базы без пробного прогона. Свёртка удаляет документы прошлых периодов и заменяет их остатками. Сначала — на копии, со сверкой оборотно-сальдовой ведомости до и после.