Чистка базы и конфигурации 1С без потери данных

· 9 мин

Содержание

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

Частое заблуждение — что база «распухла из-за конфигурации». На деле размер файла 1Cv8.1CD или базы на SQL почти всегда раздувают данные: журнал регистрации, версии объектов, помеченные документы, пустоты после удаления. Сами метаданные занимают единицы процентов. Поэтому порядок такой: сначала копия, потом данные, потом сжатие, потом кэш.

Что сделать до начала: копии и замеры

Любая чистка затрагивает много записей разом. Если что-то пойдёт не так, откатиться можно только из копии.

Сделайте резервную копию до первого действия и проверьте, что она открывается.

Что сохранить:

  1. 📦 Выгрузку базы в .dt: Конфигуратор → Администрирование → Выгрузить информационную базу. Это полная копия данных и конфигурации.
  2. 📄 Файл конфигурации .cf: Конфигурация → Сохранить конфигурацию в файл. Пригодится, если правки в метаданных придётся откатить отдельно от данных.
  3. 🗂 Для файловой базы — копию папки с 1Cv8.1CD, снятую при закрытой программе.
  4. 🗄 Для клиент-серверной — бэкап средствами СУБД (MS SQL, PostgreSQL). Выгрузка .dt на больших базах идёт долго, бэкап СУБД быстрее и надёжнее.

Запишите исходные цифры, чтобы потом увидеть результат:

  • размер файла 1Cv8.1CD или базы в СУБД;
  • размер папки журнала регистрации 1Cv8Log (лежит рядом с файловой базой, на сервере — в каталоге кластера);
  • время открытия базы и формирования пары тяжёлых отчётов.

Тестирование и исправление, загрузка .dt и обновление структуры требуют монопольного доступа. Пользователи должны выйти из базы. Планируйте работы на вечер или выходной и предупредите людей заранее.

Перед чисткой
Выполнено: 0 / 6

Что в метаданных можно удалять, а что лучше не трогать

Сначала определите, в каком состоянии конфигурация: Конфигурация → Поддержка → Настройка поддержки. От этого зависит всё остальное.

СостояниеМожно ли удалять объектыКак поступать
Типовая на замке (изменения запрещены)НетМетаданные не трогаем, чистим только данные и кэш
Типовая с включённой возможностью измененияТолько свои доработкиЧужие (типовые) объекты не удаляем, свои переносим в расширения
Снята с поддержки или самописнаяДа, с проверкой ссылокУдаляем по одному, после «Поиска ссылок»

Объекты с префиксом «Удалить»

В типовых конфигурациях много объектов и реквизитов с именами вроде УдалитьСтатусДокумента. Их оставляет поставщик: по ним работают обработчики перехода со старых релизов. Удалите такой объект сами — и следующее обновление может упасть или потерять данные при переносе.

💡 Правило простое: объекты «Удалить…» в типовой конфигурации убирает только поставщик, в очередном релизе.

Свои доработки

Если конфигурацию дорабатывали, мусор обычно такой:

  • 🧩 обработки и отчёты, которые никто не открывает годами;
  • 🧩 реквизиты, добавленные «на всякий случай»;
  • 🧩 закомментированные куски кода и пустые процедуры;
  • 🧩 копии типовых форм, которые разошлись с актуальным релизом.

Перед удалением объекта нажмите на нём правой кнопкой → Поиск ссылок на объект. Если ссылок нет — удаляйте. Если есть — сначала уберите их, иначе проверка конфигурации выдаст ошибки.

Лучший способ «почистить» доработанную типовую — вынести изменения в расширения и вернуть основную конфигурацию к типовой через Конфигурация → Сравнить, объединить с конфигурацией поставщика. Расширения появились в платформе 8.3.6, сейчас это штатный путь.

Инструменты для чистки конфигурации 1С

Ручного просмотра дерева мало. Платформа даёт несколько встроенных проверок, они находят то, что глазом не видно.

Проверка конфигурации

Конфигурация → Проверка конфигурации. Отметьте:

  • Проверка логической целостности конфигурации — битые ссылки между объектами;
  • Поиск некорректных ссылок — ссылки на удалённые объекты;
  • Поиск неиспользуемых процедур и функций — код, который никто не вызывает.

Последний пункт даёт много ложных срабатываний. Процедуру могут вызывать через Выполнить(), из подписки на событие или из обработчика оповещения по имени строки. Каждый результат проверяйте глобальным поиском (Ctrl+Shift+F) по имени процедуры.

Тестирование и исправление

Администрирование → Тестирование и исправление в Конфигураторе. Главный инструмент для данных.

ФлажокЧто делаетКогда включать
Реиндексация таблицПерестраивает индексыВсегда при чистке
Проверка логической целостностиПроверяет внутреннюю структуру базыВсегда
Проверка ссылочной целостностиИщет «битые» ссылки на несуществующие объектыЕсли были сбои или ручные удаления
Пересчёт итоговПересчитывает итоги регистровПосле удаления документов
Сжатие таблицУбирает пустоты в файле базыФайловая база, в конце
Реструктуризация таблицПересоздаёт таблицыТолько при явных ошибках структуры

Сначала запускайте режим Только тестирование. Посмотрите отчёт и только потом выбирайте исправление.

При найденных битых ссылках есть варианты «создавать объекты» и «удалять ссылки». Удаление ссылок молча очищает поля в документах. Безопаснее создать объекты-заглушки, а затем разобраться с ними вручную.

chdbfl.exe для файловой базы

Если база не открывается даже в Конфигураторе, используйте утилиту chdbfl.exe из папки bin установленной платформы, например C:\Program Files\1cv8\8.3.24.1548\bin\. Укажите путь к 1Cv8.1CD, включите исправление ошибок. Программа должна быть закрыта у всех.

Чистка данных: от помеченных объектов до журнала

Здесь освобождается основное место.

1. Удаление помеченных объектов

В БП 3.0, ЗУП 3.1, УТ 11: Администрирование → Обслуживание → Удаление помеченных объектов. Обработка показывает, что удаляется, и что не удаляется из-за ссылок.

Нюанс: если на помеченный документ ссылается рабочий документ, он не удалится. Отчёт обработки покажет, кто держит ссылку. Снимите её или снимите пометку.

2. Журнал регистрации

Журнал за несколько лет легко весит десятки гигабайт. Сократить его можно двумя способами:

  • в Конфигураторе: Администрирование → Настройка журнала регистрации → кнопка Сократить, указать дату, до которой удалить события, и при желании сохранить их в файл;
  • там же уменьшить уровень регистрации (например, оставить только ошибки и предупреждения), чтобы журнал не рос снова.

Перед сокращением выгрузите старые события в файл, если по требованиям безопасности их нужно хранить.

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

Если включено версионирование объектов, в базе копятся полные копии документов при каждом изменении. Найдите настройку в Администрирование → Общие настройки, раздел про версии объектов. Там можно ограничить срок хранения и удалить устаревшие версии.

4. Свёртка информационной базы

Свёртка заменяет старые документы остатками на дату. Это радикальный шаг: история операций до даты свёртки пропадает из рабочей базы.

Свёртку делайте только на копии, сравнив оборотно-сальдовые ведомости до и после.

Чаще разумнее начать новую базу с перенесённых остатков, а старую оставить архивом только для чтения.

Сжатие и реиндексация после чистки

Удалённые записи не уменьшают файл базы сами собой. Место освобождается внутри, а размер файла остаётся прежним.

Файловая база

Два способа уменьшить 1Cv8.1CD:

  1. Тестирование и исправление с флажком Сжатие таблиц информационной базы.
  2. Выгрузить базу в .dt и загрузить обратно в новую пустую базу. Файл собирается «с нуля» и становится заметно компактнее. На тестовой базе сначала проверьте, что загрузка проходит без ошибок.

Клиент-серверная база

На SQL сжатие делают средствами СУБД:

  • для MS SQL — план обслуживания: перестроение индексов и обновление статистики, сжатие файлов только при реальной необходимости;
  • для PostgreSQL — VACUUM и ANALYZE, при большом объёме удалений — VACUUM FULL в окно простоя.
-- PostgreSQL: обслуживание базы 1С после массового удаления
VACUUM (ANALYZE, VERBOSE);

VACUUM FULL блокирует таблицы на время работы. Пользователи в это время работать не смогут — запускайте только в окно обслуживания.

После сжатия снова замерьте размер базы и время открытия отчётов и сравните с исходными цифрами.

Кэш и временные файлы: клиент и сервер

Часть «мусора» живёт вне базы. Кэш метаданных на клиенте после обновлений расходится с конфигурацией — отсюда странные ошибки форм и медленный старт.

На компьютере пользователя

  1. Закройте все окна 1С.
  2. Откройте %APPDATA%\1C\1cv8 и %LOCALAPPDATA%\1C\1cv8.
  3. Удалите папки с длинными именами вида GUID (например, a1b2c3d4-...). Файлы списка баз ibases.v8i не трогайте.

Быстрый вариант для одной базы — запустить её с параметром /ClearCache. Его можно дописать в поле Дополнительные параметры запуска в свойствах базы в окне запуска.

Bat-файл для очистки кэша на рабочем месте:

@echo off
rem Закройте 1С перед запуском
for /d %%D in ("%APPDATA%\1C\1cv8\*-*-*-*-*") do rd /s /q "%%D"
for /d %%D in ("%LOCALAPPDATA%\1C\1cv8\*-*-*-*-*") do rd /s /q "%%D"
echo Кэш 1С очищен

На сервере 1С

Сеансовые данные кластера лежат в каталоге srvinfo, в папках snccntx…. Их удаляют при сбоях сервера и разрастании папки.

Для этого службу «Агент сервера 1С:Предприятия» нужно остановить. Все сеансы пользователей оборвутся, несохранённые данные потеряются. Делайте только в окно обслуживания, после выхода всех пользователей.

Разные базы — разный порядок чистки

Последовательность действий зависит от типа конфигурации и варианта работы.

СитуацияЧто чистить в первую очередьЧего не делать
Типовая БП/ЗУП/УТ на поддержке, файловаяПомеченные объекты, журнал, сжатие таблиц, кэшУдалять объекты «Удалить…» и типовые реквизиты
Доработанная типоваяСвои неиспользуемые объекты, перенос правок в расширенияПравить типовые модули ради «порядка»
СамописнаяПроверка конфигурации, неиспользуемый код и объектыУдалять объекты без поиска ссылок
Клиент-серверная на SQLЖурнал, версии объектов, обслуживание СУБДСжимать файлы БД ежедневно

В ЗУП отдельно присмотритесь к ведомостям и расчётам за давние периоды: их удаление ломает средний заработок и перерасчёты. Удалять «старые» начисления ради места в зарплатной базе не стоит.

Ошибки, после которых чистку приходится откатывать

  • ❌ Удалили реквизит в типовой — сломалось обновление. Вернуть можно только из .cf или .dt, поэтому копии делают первым шагом.
  • ❌ Выбрали «удалять ссылки» при тестировании. В документах опустели поля контрагентов или номенклатуры. Чинить приходится из копии вручную.
  • ❌ Чистили кэш при открытой 1С. Часть файлов заблокирована, папки удалились наполовину, а ошибка осталась.
  • ❌ Сжали базу, не пересчитав итоги после массового удаления документов. Остатки в отчётах расходятся с ОСВ. Запустите Пересчёт итогов или в пользовательском режиме найдите управление итогами в разделе обслуживания.
  • ❌ Удалили «ненужную» внешнюю обработку из справочника дополнительных отчётов и обработок. Через неё работали печатная форма или регламентное задание. Перед удалением отключите обработку и подождите неделю: если никто не пожаловался, её можно убирать.
  • ❌ Сократили журнал без выгрузки. Если потом понадобится разобрать, кто удалил документ, данных уже нет.

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

Как часто чистить базу 1С?
Помеченные объекты — раз в месяц или квартал. Тестирование и исправление со сжатием — раз в полгода или при явных тормозах. Кэш — после каждого обновления, если появились странные ошибки.
Уменьшится ли файл базы сразу после удаления помеченных объектов?
Нет. Место освободится внутри файла, а его размер останется прежним. Чтобы файл уменьшился, нужно сжатие таблиц или выгрузка и загрузка через .dt.
Можно ли чистить базу, пока в ней работают люди?
Удаление помеченных объектов в современных конфигурациях можно запускать при работающих пользователях, но надёжнее в монопольном режиме. Тестирование и исправление и загрузка .dt требуют выхода всех пользователей.
Сколько места даёт чистка журнала регистрации?
Зависит от уровня регистрации и срока. Если журнал вёлся с уровнем «Все события» несколько лет, папка 1Cv8Log часто весит больше самой базы, и её сокращение даёт основной выигрыш.
Удаляет ли очистка кэша настройки пользователей?
Нет. Настройки форм и отчётов хранятся в самой базе. Очистка кэша удаляет только локальные копии метаданных, они скачаются заново при следующем запуске.