Чистка информационной базы 1С 8.3: от помеченных объектов до сжатия в СУБД

· 10 мин

Содержание

Почистить базу 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): Администрирование → Обслуживание → Удаление помеченных объектов. В Бухгалтерии команда находится в группе «Корректировка данных».

Порядок действий:

  1. Попросите пользователей завершить работу — удаление идёт быстрее и не конфликтует с чужими правками.
  2. Откройте обработку и выберите режим удаления выбранных объектов, чтобы видеть список.
  3. Просмотрите список. Снимите флажки с того, что пометили по ошибке.
  4. Запустите удаление.
  5. Разберите остаток: объекты, на которые есть ссылки, обработка не удалит и покажет места использования.

Типичный остаток — помеченная номенклатура, которая встречается в непомеченных документах прошлых лет. Решений два: снять пометку (объект нужен) или сначала разобраться с документами, которые на него ссылаются.

Если остаток не уходит, а «ссылающийся» объект сам помечен — запустите удаление ещё раз. Иногда цепочку объектов удаётся снять только за два-три прохода.

Не давайте пользователям право непосредственного удаления, чтобы «не копить мусор». Удаление без проверки ссылок оставляет в документах битые ссылки вида <Объект не найден>, и исправлять их потом дольше, чем раз в месяц запускать обработку.

3. Журнал регистрации, версии и файлы: где копится основной объём

Сокращение журнала регистрации

Журнал пишет каждый вход, запись и ошибку. За несколько лет при уровне «Регистрировать все события» он вырастает до десятков гигабайт.

В Конфигураторе: Администрирование → Настройка журнала регистрации. В этом окне:

  • 🧾 выберите уровень регистрации — для большинства баз хватает «Ошибки» и «Предупреждения»; полный уровень нужен при расследовании;
  • ✂️ кнопкой «Сократить» удалите события старше выбранной даты; удаляемую часть можно сохранить в отдельный файл — это архив на случай проверок;
  • 📅 включите разделение журнала по периодам — новые файлы будут создаваться, например, помесячно, и старые проще убрать в архив.

В режиме Предприятия журнал смотрят через Администрирование → Обслуживание → Журнал регистрации, но сокращают обычно из Конфигуратора.

Не удаляйте файлы из папки 1Cv8Log вручную при работающих пользователях или запущенной службе сервера 1С. Файл журнала в этот момент открыт, а при повреждении журнала база может не открыться, пока папку не очистят полностью.

Формат журнала зависит от настроек: старый последовательный (файлы .lgf и .lgp) или SQLite (один файл .lgd). Сокращение через Конфигуратор работает для обоих.

Версии объектов

Если включено версионирование, каждое изменение документа сохраняется отдельной записью. В базах с активным документооборотом регистр версий бывает больше всех остальных таблиц.

Настройка версионирования в конфигурациях на БСП — в Администрирование → Общие настройки, в группе, посвящённой истории изменений. Там задают, какие объекты хранят версии и сколько времени. Устаревшие версии удаляет регламентное задание. Проверьте, что оно включено и выполняется без ошибок: Администрирование → Обслуживание → Регламентные и фоновые задания.

Присоединённые файлы

Сканы, договоры и картинки по умолчанию хранятся внутри базы. Вынести их на диск позволяет хранение в томах: Администрирование → Общие настройки → Присоединенные файлы. После включения создайте том (каталог на сервере с доступом для службы 1С) и перенесите существующие файлы командой в списке томов.

База уменьшится, но каталог томов придётся включить в план резервного копирования отдельно.

4. Обновление конфигурации и объекты «Удалить…»

Устаревшая конфигурация тоже копит мусор. При переходе на новые релизы фирма 1С не удаляет объекты сразу, а переименовывает их с префиксом Удалить — например, УдалитьСтарыйРегистр. Данные в таких таблицах остаются, пока обработчики обновления их не перенесут.

Что сделать:

  1. Обновите типовую конфигурацию до актуального релиза последовательно, не пропуская обязательные промежуточные.
  2. После обновления зайдите в базу в режиме Предприятия под администратором и дождитесь завершения обработчиков обновления. Отложенная часть идёт в фоне — её состояние показывает форма результатов обновления программы в разделе Администрирование → Обслуживание.
  3. Если конфигурация доработана, в Конфигураторе сравните её с поставщиком и проверьте, нет ли собственных регистров, которые больше не используются, но хранят годы данных.

Отдельная история — несоответствие конфигурации и структуры базы. Если в Конфигураторе изменили объекты, но не выполнили Конфигурация → Обновить конфигурацию базы данных (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: размер файла базы или СУБД, размер папки журнала, время открытия тяжёлых отчётов. Затем откройте базу под обычным пользователем и проведите пару документов — убедитесь, что ничего не сломалось.

Чтобы база не зарастала снова, закрепите регламент:

Регламент обслуживания базы 1С
Выполнено: 0 / 6

Частые ошибки при чистке

  • ❌ Сжатие до удаления. Сжимать нечего, место ещё занято записями.
  • ❌ Выключенный журнал регистрации «для экономии». При первом же вопросе «кто удалил документ» ответа не будет. Снижайте уровень, а не отключайте.
  • ❌ Ручное удаление файлов 1Cv8Log на работающей базе. Повреждённый журнал мешает запуску.
  • ❌ Регулярный SHRINKFILE по расписанию. Файл тут же растёт обратно, индексы фрагментируются.
  • ❌ Свёртка базы без пробного прогона. Свёртка удаляет документы прошлых периодов и заменяет их остатками. Сначала — на копии, со сверкой оборотно-сальдовой ведомости до и после.

9. Частые вопросы

Можно ли почистить базу 1С, не выгоняя пользователей?
Удаление помеченных объектов и сокращение журнала технически работают при подключённых пользователях. Тестирование и исправление, обновление структуры, загрузка .dt и VACUUM FULL требуют отключить всех.
Насколько уменьшится база после чистки?
Зависит от того, что было в топе таблиц. Сокращение журнала за несколько лет часто освобождает больше места, чем удаление помеченных документов. Точный прогноз даёт только замер перед началом.
Удалятся ли проводки, если удалить помеченный документ?
Движения документа с пометкой удаления уже сняты в момент пометки. При удалении стирается сам документ и его табличные части.
Чем свёртка отличается от чистки?
Чистка убирает лишнее без влияния на учёт. Свёртка удаляет рабочие документы прошлых лет и заменяет их документами ввода остатков — это меняет историю учёта и делается только по решению главного бухгалтера.
Нужно ли чистить базу, если она работает быстро?
Удаление помеченных и контроль журнала — да, раз в месяц-квартал. Сжатие и реструктуризация без признаков проблемы не нужны.