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

На записи видно то, ради чего прогон разбит на шаги: счётчик и имя текущего объекта МЕНЯЮТСЯ. По замершему счётчику зависание видно сразу, а по крутилке нет.
Отчёт устроен как разбор у врача: диагноз, вердикт, лечение. По каждой находке видно, что нашли, чем это обернётся, и лежит готовый код, который эту находку закрывает.
Что она отвечает, чего не отвечает больше никто
Сколько займёт. Инструмент замеряет скорость ссылочного контроля на ВАШЕЙ базе и пересчитывает на весь объём. На боевой бухгалтерии это выглядит так: 2 000 объектов, 608 запросов за 67,8 секунды, один запрос стоит 0,1 с, проверка 209 858 помеченных займёт 73 секунды. Не "зависит от инфраструктуры", а число, снятое на вашем железе.
Что сломается. Пример с боевой базы. Вы пометили на удаление 37 796 договоров контрагентов и жмёте "удалить". Удалятся не все: часть держат другие объекты. Инструмент показывает, КТО держит и сколько штук:
объект и поле, где лежит ссылка ссылок как чинить РегистрНакопления.РеализацияТМЗ.ДоговорКонтрагента 1 946 перепроведение Справочник.Контрагенты.ОсновнойДоговорКонтрагента 1 477 правка поля Документ.ЭСФ.ДоговорПоставки 429 правка поля Документ.СчетФактураВыданный.ДоговорКонтрагента 381 правка поля
Первая строка читается так: в движениях регистра РеализацияТМЗ, в поле ДоговорКонтрагента, лежит 1 946 ссылок на те самые договоры, которые вы собрались удалить. Пока они там лежат, договор не удалится.
Правая колонка важнее, чем кажется. Ссылка в реквизите документа правится полем, а ссылка в движениях регистра руками не правится вовсе: её переписывает только перепроведение. Это разные работы и разные окна, а в отчётах их обычно не разделяют.
Что проверяется
- Экспресс-ответ: сколько можно убрать точно, сколько помечено к разбору, сколько хранится и на учёт не влияет.
- С чего начинать: какой рычаг больше - чистка помеченных или свёртка периода.
- Помеченные на удаление: сколько и в каких объектах, с долей каждой группы.
- Сколько это займёт: замер на этой базе и оценка на весь объём.
- Что сломается: поля и числа, с признаком "правка поля" или "перепроведение".
- Файлы и версии: точный вес присоединённых файлов, файлы без владельца, история версий.
- Старые периоды: документов старше N лет по видам.
- Дубли: группы одинаковых наименований и сколько записей лишние.
- Битые ссылки: указатели на несуществующие объекты, поимённо по полям.
- Границы инструмента: сколько базы просмотрено и чего инструмент НЕ делает.
Вердикты с решениями
У строки отчёта есть колонка "Решение". Где написано "есть код", кнопка "Показать решение" открывает готовый код 1С с подсветкой Конфигуратора:
- Помеченные: удалить те, на которые никто не ссылается, остальные назвать вместе с держателем.
- Дубли: заменить ссылки на главный элемент группы и удалить лишние.
- Битые ссылки: найти и очистить конкретное поле конкретной таблицы.
- Присоединённые файлы: вынести на диск все хранилища плюс код формы, чтобы файл открывался по ссылке.
- Файлы без владельца: выгрузить копию и удалить.
- Версии объектов: снести полностью либо старше N месяцев.
- Старые периоды: удалить документы закрытых периодов после свёртки.
Обработка этот код не выполняет. Она его показывает, вы читаете, правите под свою базу и запускаете сами. У всего, что меняет данные, первой строкой стоит ТолькоПоказать = Истина: первый прогон печатает план и не трогает ничего. Там, где безопасного кода не существует - свёртка, автоматическое объединение дублей, - шаблона нет тоже, и сказано почему.
Три правила, которые инструмент не нарушает
Размер в гигабайтах по метаданным не печатается. Оценка берётся из объявленной длины реквизитов, а данные лежат по факту заполнения. На замере из 932 строк такая оценка не совпала с фактом ни в одной из пяти верхних позиций, а верхушка и есть то, ради чего смотрят отчёт. Настоящие размеры отдаёт SQL-скрипт из комплекта, суженный до таблиц, которые чек-ап назвал виноватыми.
В корзину "можно убрать точно" попадает только проверенное целиком. Помеченные объекты не попадают туда никогда: выборка даёт признак, а не итог по группе.
У каждой проверки стоит знаменатель. Не "битых ссылок нет", а "проверено 2 500 полей из 5 060, среди них битых нет". Отрицательный результат одинаково означает "чисто" и "мерить было нечем", и различить их можно только по знаменателю.
Отчёт в файл
Кнопка "Сохранить отчёт по чистоте базы" кладёт Markdown. Имя файла несёт имя БАЗЫ и время, поэтому отчёты с разных баз не затирают друг друга. Внутри: где снято, как прошёл прогон с временами по фазам, все находки с вердиктами и кодом лечения, знаменатели и раздел диагностики - окружение базы, профиль конфигурации, самые долгие шаги и шаги, которые не досмотрели своё до конца.
Как запускать
Открыть, при необходимости поменять единственный параметр - с какого возраста считать документы старыми, - и нажать "Проверить базу". Прогон разбит на шаги, и в строке хода видно счётчик и имя текущего объекта: по замершему счётчику зависание видно сразу, а по крутилке нет.
На боевых базах от 19 до 155 секунд. Бюджет прогона 240 секунд: то, что не успело, попадает в отчёт отдельной строкой, а не пропадает молча.
Совместимость
Управляемые формы, платформа 8.3.14 и выше. Конфигурация любая: хранилища файлов и регистр версий ищутся ПО ФОРМЕ, а не по именам БСП, поэтому обработка работает и там, где справочник файлов называется по-своему, и там, где БСП нет вовсе. Проверено на шести боевых базах: Бухгалтерия для Казахстана, ERP, Розница, УТ.
К таблицам информационной базы напрямую не обращается: всё через платформу.
Разбор того, как устроен механизм и почему штатный поиск ссылок для этого не годится - в статье: //infostart.ru/1c/articles/2779836/
Проверено на следующих конфигурациях и релизах:
- Бухгалтерия предприятия, редакция 3.0, релизы 3.0.205.22
Вступайте в нашу телеграмм-группу Инфостарт