Как удалить элемент справочника в 1С, если помечена ссылка на «Объект не найден»

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия Бухгалтерский учет IT и автоматизация бизнеса
← На главную

При выполнении операции обработки «Удаление помеченных объектов» в платформах 1С:Предприятие 8.3 пользователи и администраторы нередко сталкиваются с ситуацией, когда система блокирует удаление элемента справочника (например, Организация). При этом в списке ссылок, мешающих удалению, отображается запись вида Документ Операция (бух. и нал. учет) <Объект не найден> (GUID). Стандартные процедуры, такие как утилита chdbfl.exe, выгрузка и загрузка информационной базы через файл .dt или базовое тестирование и исправление (ТиИ), зачастую не приносят результата. Рассмотрим подробнее, почему возникают такие битые ссылки и как очистить базу данных.

Выясняем причины появления битых ссылок

Проанализируем механику возникновения битых ссылок в 1С. Ситуация, когда документ физически отсутствует в таблице документов, но ссылка на него сохраняется в связанных механизмах, обычно возникает по следующим причинам:

  1. Некорректное программное удаление: вызов метода Удалить() для объекта напрямую из кода без предварительной отмены проведения и очистки связанных движений/последовательностей. В результате сам документ удаляется, а его записи в служебных таблицах остаются.
  2. Сбои при обмене данными и прерванные транзакции: аварийное завершение работы системы во время проведения, проблемы при синхронизации в распределенных информационных базах (РИБ) или ограничения прав на уровне записей (RLS).

Платформа 1С при выполнении функции НайтиПоСсылкам() проверяет не только прямые реквизиты объектов, но и системные таблицы. Если ссылка сохранилась хотя бы в одном служебном месте, система справедлива блокирует физическое удаление элемента.

Скрытые места хранения битых ссылок

Посмотрим, где именно может затаиться невидимая ссылка, если стандартный поиск по реквизитам ничего не дает:

  1. Последовательности документов: служебные таблицы границ и движений последовательностей фиксируют документы-регистраторы и их измерения (включая организацию). Если документ был удален напрямую, запись в таблице последовательности остается и продолжает удерживать ссылку на справочник.
  2. Регистры сведений и служебные механизмы БСП: таблицы регистрации изменений для обменов (ЗарегистрированныеИзменения), история версионирования объектов, независимые регистры сведений, а также хранилища пользовательских настроек.

Варианты решения проблемы

Разберем по шагам основные способы устранения битых ссылок в зависимости от причины их возникновения.

Способ 1. Восстановление и очистка последовательностей документов

Если битая ссылка блокирует удаление из-за присутствия в последовательностях, выполним пересчет или очистку границы последовательности документов. Для этого можно сбросить границу последовательности через режим конфигуратора или восстановить ее штатной обработкой проведения документов.

Также можно программно прочитать таблицу последовательности и очистить наборы записей, где измерение или регистратор содержит ссылку вида <Объект не найден>.

Способ 2. Воссоздание объекта по уникальному идентификатору (GUID)

Если известна битая ссылка и ее GUID, разберем вариант с программным воссозданием удаленного документа. Метод заключается в том, чтобы временно создать документ с тем же GUID, записать его, а затем правильно распровести и удалить штатным образом.

Пример кода для программного создания объекта с конкретным GUID:


// Получаем GUID из битой ссылки
Идентификатор = Новый УникальныйИдентификатор("00000000-0000-0000-0000-000000000000"); // Укажите реальный GUID

// Формируем ссылку на будущий документ
СсылкаНаДокумент = Документы.ОперацияБух.ПолучитьСсылку(Идентификатор);

// Создаем новый документ и присваиваем ему ссылку
НовыйДокумент = Документы.ОперацияБух.СоздатьДокумент();
НовыйДокумент.УстановитьСсылкуНового(СсылкаНаДокумент);
НовыйДокумент.Дата = ТекущаяДата();
НовыйДокумент.Организация = ЭлементОрганизация; // Ссылка на удаляемую организацию
НовыйДокумент.Записать();

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

Способ 3. Тестирование и исправление с созданием объектов

В режиме Конфигуратора выберем пункт меню Администрирование -> Тестирование и исправление. В настройках укажем флаги проверки ссылочной целостности базы. В разделе «При наличии ссылок на несуществующие объекты» выберем вариант Создавать объекты.

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

Способ 4. Очистка ссылок инструментами БСП

Если в конфигурации используется Библиотека Стандартных Подсистем (БСП), воспользуемся типовыми обработками «Поиск и замена ссылок» или «Поиск и удаление дублей». Данные инструменты позволяют заменить битую ссылку в объектах на пустую или на другой существующий элемент справочника.

← На главную