Обработка предназначена для быстрого поиска объектов, на которые нет ссылок в других таблицах базы данных, и последующего удаления (или пометки на удаление) найденных объектов.
При поиске ссылок на объекты вместо использования платформенной функции НайтиПоСсылкам() реализован альтернативный механизм поиска ссылок запросом к таблицам базы данных. Это дает существенный выигрыш в производительности на больших базах данных, поскольку функция НайтиПоСсылкам() формирует неоптимальные, тяжелые запросы к базе данных, приводящие к высокой избыточной нагрузке на сервер СУБД и длительному выполнению таких запросов.
Альтернативный алгоритм поиска ссылок заключается в выполнении следующих действий:
- Обход объектов метаданных и поиск в них ссылок на проверяемый объект (справочник или документ). Проверяются типы значений полей объектов.
- По найденным объектам производится проверка наличия ссылок на проверяемый объект в таблицах базы данных. Сформированный список таблиц базы данных, содержащих ссылки на проверяемую таблицу, сохраняется и при повторном запуске обработки автоматически восстанавливается, что позволяет в дальнейшем ускорить повторный поиск ссылок.
- По найденным на предыдущем шаге объектам метаданных формируется запрос, возвращающий таблицу ссылок на проверяемую таблицу.
- Формируется таблица ссылок, отсутствующих в полученной на предыдущем шаге таблице (то есть объекты без ссылок, которые можно затем пометить на удаление/удалить).
Порядок работы с обработкой.
- Выбор проверяемого объекта (справочника или документа).
- В случае необходимости есть возможность настройки отбора проверяемых объектов.
- Находим ссылки на объект метаданных по кнопке "Найти ссылки на объект метаданных" (выполнение пунктов 1-2 алгоритма поиска ссылок)
При необходимости можно отключить поиск ссылок в ведущих измерениях регистров сведений (например, по измерению Объект регистра сведений ВерсииОбъектов). При удалении объектов автоматически удаляются также и записи в "подчиненных" регистрах сведений, что исключает появление битых ссылок.
- Переходим на закладку "Объекты без ссылок" и нажимаем кнопку "Найти объекты без ссылок"
- Нажимаем кнопку Пометить объекты на удаление / Удалить. Запускается процесс удаления объектов с выводом прогресса выполнения операции.
Важно! В отличие от команды "Пометить объекты на удаление", команда "Удалить" производит непосредственное удаление элемента без возможности восстановления и без проверки ссылочной целостности. Использовать данный метод нужно крайне осмотрительно.
Рекомендуется перед удалением объектов из базы данных сделать резервную копию базы (как вариант сохранить данные удаляемой таблицы с помощью обработки Выгрузка и загрузка данных XML).
Для выполнения операций обработки в фоновом режиме рекомендуется встроить обработку в конфигурацию или в расширение конфигурации.
Дополнительная информация
Тестирование подсистемы проводилось на версии платформы 8.3.21.1302 (режим совместимости конфигурации 8.3.14). При разработке использовалась Библиотека стандартных подсистем версии 3.1.7.