В процессе длительной эксплуатации учетных систем, особенно таких объемных конфигураций, как УПП 1.2, база неизбежно накапливает «мусор» — тысячи объектов, помеченных на удаление, но не удаленных из-за наличия ссылочной целостности. Когда свертка базы по годам не является вариантом, перед программистом встает задача физической очистки. Давайте разберем, как подойти к этому процессу грамотно и эффективно.
Стандартная процедура УдалениеОбъектов в платформе 1С выполняет два этапа: поиск ссылок и попытку удаления. В старых базах с многолетней историей каждый объект может иметь сотни «осиротевших» ссылок в регистрах. Попытка удалить всё разом приведет к тому, что система будет тратить колоссальные ресурсы на перебор связей. Мы должны работать итерационно.
Не пытайтесь удалить всё сразу. Самый эффективный метод — это программное порционное удаление. Разберем алгоритм, который поможет автоматизировать этот процесс.
Сначала нам нужно получить список всех помеченных объектов. Для этого используем функцию НайтиПомеченныеНаУдаление(). Далее, на каждой итерации мы берем фиксированное количество объектов (например, 500-1000) и передаем их в процедуру УдалитьОбъекты().
// Пример итерационного удаления
МассивОбъектов = НайтиПомеченныеНаУдаление();
Для Каждого Объект Из МассивОбъектов Цикл
// Здесь можно добавить фильтрацию по типу или по дате создания
// чтобы сначала чистить самый старый «мусор»
КонецЦикла;
// Передаем порцию объектов в метод платформы
УдалитьОбъекты(МассивДляУдаления, Истина);
Часто объекты не удаляются, потому что на них ссылаются другие, уже ненужные документы или записи справочников. В таких случаях «упереться» в неразрешимые ссылки можно бесконечно долго. Разумным решением будет замена ссылок на служебный элемент справочника, например, с наименованием «Старое и ненужное».
Разберем основные шаги реализации этой стратегии:
Поиск дублей и замена ссылок. Он позволяет выявить объекты, на которые ссылаются другие элементы.Поиск и замена значений назначьте для найденных «мусорных» ссылок в качестве нового значения созданную заглушку. После этого объект, на который раньше было много ссылок, станет доступен для штатного удаления.Стандартные средства не всегда удобны для работы с большими объемами. Профессионалы часто используют инструменты, такие как Инструменты Разработчика (ИР). Преимущество таких обработок заключается в том, что они умеют:
Важно задать себе вопрос: какова цель очистки? Если вы ожидаете, что удаление помеченных объектов резко ускорит работу всей базы, вы можете разочароваться. В современных СУБД (SQL) наличие помеченных на удаление объектов слабо влияет на производительность запросов. Часто гораздо эффективнее будет:
Технологическом журнале.(не используется).Перед началом работ проанализируйте структуру ссылок. Объекты, на которые меньше всего ссылок в регистрах (особенно в периодических РегистрахСведений), удаляются быстрее всего. Начните с них. Если же объект критически важен для отчетов (например, Контрагент), лучше не удалять его, а использовать метод замены значения, иначе вы рискуете исказить данные в отчетах за прошлые периоды.
Запомните: безопасность данных — приоритет №1. Перед любыми массовыми операциями удаления в УПП обязательно делайте архивную копию базы данных. Если количество помеченных объектов исчисляется десятками тысяч, процесс очистки может занять несколько дней — не пытайтесь ускорить его через прямой SQL-запрос к таблицам, так как это неминуемо приведет к повреждению логической целостности конфигурации.