В системе 1С:Документооборот (1С:ДО) процесс удаления объектов часто превращается в сложную задачу из-за разветвленной структуры связей. Типичная ситуация: вы пометили бизнес-процесс на удаление, запустили стандартную обработку «Удаление помеченных объектов», но система выдает ошибку, ссылаясь на наличие связанных файлов или задач, которые невозможно найти обычными средствами. В этой статье мы детально разберем механизмы хранения ссылок в 1С:ДО и методы очистки базы от «фантомных» объектов.
Прежде всего, проанализируем, как платформа работает с помеченными объектами. В 1С не существует отдельной физической «корзины» или таблицы, куда перемещаются данные. При установке пометки удаления у объекта просто меняется значение системного реквизита ПометкаУдаления на Истина (в терминах SQL-таблиц это поле _Marked).
Список, который мы видим в обработке удаления, генерируется динамически. Система сканирует таблицы и ищет все записи с этой пометкой. Если объект не удаляется, значит, на него ссылается другой объект базы данных, который либо не помечен на удаление, либо является частью защищенного механизма. Рассмотрим подробнее, где именно могут «прятаться» эти связи в контексте 1С:Документооборот.
Бизнес-процессы в 1С:ДО — это комплексные объекты. При пометке на удаление только «шапки» процесса часто остаются «брошенными» его задачи и присоединенные файлы. Рассмотрим правильный алгоритм действий:
Важный нюанс: В настройках списков 1С:ДО по умолчанию включена фильтрация, которая скрывает помеченные на удаление объекты. Чтобы увидеть их «вживую», необходимо в меню «Еще» (или через настройки формы) включить опцию «Показывать удаленные». Это часто помогает обнаружить файлы, которые визуально отсутствовали в карточке документа или задачи.
Если стандартная обработка не показывает, какой именно объект блокирует удаление, или сообщает о «битой» ссылке, воспользуемся консолью запросов. Проанализируем состояние справочников файлов и их версий. Часто бывает так, что карточка файла помечена на удаление, а его конкретная версия — нет, или наоборот.
Выполним следующий запрос для поиска проблемных файлов:
ВЫБРАТЬ
Файлы.Ссылка КАК Ссылка
ИЗ
Справочник.Файлы КАК Файлы
ГДЕ
Файлы.ПометкаУдаления = ИСТИНА;
ВЫБРАТЬ
ВерсииФайлов.Ссылка КАК СсылкаВерсияФайла,
ВерсииФайлов.Владелец КАК ВладелецФайл,
ВерсииФайлов.Владелец.ПометкаУдаления КАК ВладелецФайлПометкаУдаления
ИЗ
Справочник.ВерсииФайлов КАК ВерсииФайлов
ГДЕ
ВерсииФайлов.ПометкаУдаления = ИСТИНА
Проанализируем результаты. Если мы видим, что у версии файла ВладелецФайлПометкаУдаления имеет значение Ложь, это прямой признак того, что цепочка удаления разорвана. Нам необходимо вручную пометить владельца на удаление.
Когда мы определили объект, который мешает удалению, но не можем найти его в интерфейсе (например, это вспомогательная запись в табличной части), воспользуемся внешними обработками типа «Редактор реквизитов объектов». Разберем пошагово методику работы с ними:
Этот метод позволяет «отвязать» объект от помеченного на удаление вспомогательного файла, после чего повторный запуск удаления пройдет успешно.
Если при попытке удаления система выдает ошибку вида Объект не найден (84:b7...), это означает физическое отсутствие объекта в базе при наличии ссылок на него в других местах. Выясним причину: такое случается при некорректных обменах данными или прямом удалении записей через SQL. Для исправления ситуации выполним следующие действия:
После завершения этой процедуры ссылки, указывающие «в пустоту», будут удалены, и блокировка с бизнес-процесса будет снята.
В современных версиях 1С:ДО, использующих механизмы БСП, данные о файлах и связях могут храниться в служебных регистрах. Если объект «невидим», проанализируем следующие места:
Проанализируем также права доступа. Иногда объект не удаляется, потому что у пользователя нет прав на удаление одного из связанных объектов (например, в другой папке документов), хотя пометка на удаление установлена. В таких случаях поможет запуск регламентного задания ОбновлениеПравДоступа, которое актуализирует дескрипторы и позволит системе корректно обработать цепочку удаления.
Резюмируем: Для успешного удаления в 1С:ДО всегда начинайте с комплексной пометки всей цепочки (Бизнес-процесс — Задачи — Файлы). Если это не помогает, используйте запросы к справочникам Файлы и ВерсииФайлов, а при обнаружении пустых ссылок — процедуру ТестированиеИИсправление.