К статье
Практический материал

Администрирование · 12 мин

Как удалить ссылки на объект в 1С

Как найти и удалить ссылки на объект в 1С: поиск ссылок, удаление помеченных объектов, обработка «Поиск и удаление дублей», типовые ошибки и проверка результата.

В 1С нельзя просто удалить элемент справочника или документ, если на него ссылаются другие объекты: проведённые документы, регистры, другие справочники, движения. Платформа защищает целостность данных и при попытке удаления выдаёт сообщение «Объект используется» либо помечает его на удаление без фактического стирания из базы. Поэтому задача «удалить ссылки на объект» обычно означает одно из двух: найти, где используется объект, и убрать эти использования, либо корректно удалить сам объект вместе с контролем ссылочной целостности.

Типовые ситуации: дубли контрагента или номенклатуры, которые мешают отчётам; устаревший элемент справочника, который нельзя удалить из-за старых документов; помеченные на удаление объекты, копящиеся в базе годами. Во всех случаях порядок один: сначала найти ссылки, потом решить, что с ними делать — переназначить, удалить или оставить, и только после этого удалять сам объект.

Ниже разобраны штатные инструменты: команда «Ещё → Найти ссылки», служебная обработка «Поиск и удаление дублей», «Удаление помеченных объектов», а также вариант с программной очисткой для разработчиков. Все действия описаны для управляемых форм типовых конфигураций (Бухгалтерия, Управление торговлей, ERP), но принцип одинаков в любой конфигурации на платформе 1С:Предприятие 8.

Что такое ссылка на объект и почему 1С блокирует удаление

Ссылка — это механизм связи объектов в базе 1С. Когда в реквизите документа указан контрагент, документ хранит не название, а уникальную ссылку на элемент справочника «Контрагенты». Такие связи обеспечивают целостность: отчёты строятся по ссылкам, и если удалить элемент, на который ссылаются проведённые документы, учёт «развалится» — в документах останутся битые ссылки вида «Объект не найден».

Поэтому платформа работает по двухэтапной схеме. Сначала объект помечается на удаление — он перестаёт предлагаться в подборе, но физически остаётся в базе вместе со всеми ссылками. Затем специальная процедура «Удаление помеченных объектов» проверяет, есть ли ссылки, и удаляет только те объекты, на которые никто не ссылается. Если ссылки есть — платформа показывает их список и не даёт удалить объект.

Как найти все ссылки на объект

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

Альтернативный путь — через «Администрирование → Обслуживание → Поиск и удаление дублей»: там тоже можно увидеть места использования, но основной сценарий этой обработки — замена, а не только просмотр. Для разовой проверки достаточно «Найти ссылки».

Обратите внимание на вид найденных объектов. Ссылки из проведённых документов и из движений по регистрам — это, по сути, одна и та же связь: документ при проведении создаёт записи в регистрах. Удалять записи регистров вручную не нужно — достаточно отменить проведение или удалить сам документ, движения исчезнут автоматически.

Порядок поиска и удаления ссылок
  1. 1
    Откройте объект и выполните «Ещё → Найти ссылки», сохраните список мест использования.
  2. 2
    По каждому месту решите: заменить значение на другой элемент, отменить проведение документа или удалить объект-владелец ссылки.
  3. 3
    Пометьте исходный объект на удаление.
  4. 4
    Запустите «Администрирование → Удаление помеченных объектов» и убедитесь, что объект удалён без сообщений о ссылках.
  5. 5
    Повторно выполните «Найти ссылки» — список должен быть пуст.

Замена ссылок через обработку «Поиск и удаление дублей»

Самая частая практическая задача — избавиться от дубля, не теряя историю. Например, в базе два контрагента «ООО Ромашка» с разными ИНН-опечатками, и по обоим есть документы. Удалять документы нельзя, значит, ссылки нужно переназначить на правильный элемент.

Для этого в типовых конфигурациях есть обработка «Поиск и удаление дублей»: «Администрирование → Обслуживание → Корректировка данных → Поиск и удаление дублей» (путь может незначительно отличаться между конфигурациями). Укажите вид справочника, критерии поиска дублей (по наименованию, ИНН, артикулу), выберите из найденных пар правильный элемент и запустите обработку. Она заменит все ссылки с дубля на выбранный элемент — включая документы, регистры и другие справочники — и пометит дубль на удаление.

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

Удаление помеченных объектов и контроль ссылочной целостности

Когда ссылки обработаны, объект нужно физически удалить. Пометьте его на удаление (кнопка «Пометить на удаление» или клавиша Delete в списке), затем откройте «Администрирование → Обслуживание → Удаление помеченных объектов». Выберите режим: «Автоматическое удаление всех помеченных объектов» или «Выборочное удаление», если нужно контролировать каждый объект.

После нажатия «Удалить» платформа проверяет ссылочную целостность. Если ссылок нет — объект удаляется. Если ссылки остались, появится окно со списком мест использования и тремя вариантами: перейти к объекту-ссылке и обработать его, пометить объект-ссылку на удаление прямо из этого окна, либо пропустить. Таким образом, «Удаление помеченных объектов» — это тоже инструмент поиска ссылок, только на этапе удаления.

В файловых базах удаление выполняется в монопольном режиме: попросите пользователей выйти. В клиент-серверных базах монопольный режим обычно не требуется, но при большом объёме помеченных объектов процедура может занять заметное время — планируйте её на нерабочие часы.

Если объект удалить нельзя: альтернативы

Иногда удалять объект не нужно вовсе. Если на элемент справочника ссылаются документы закрытых периодов, которые нельзя трогать по учётной политике, правильнее не удалять, а исключить элемент из оборота: в типовых конфигурациях для этого есть признаки «Недействителен» (контрагенты), «Архив» или пометка на удаление без физического удаления. Помеченный объект не предлагается при подборе в новых документах, но история сохраняется.

Для номенклатуры и договоров часто удобнее перенести элемент в отдельную папку «Архив» или «Не используется». Это не удаление ссылок, но решает практическую задачу — элемент перестаёт мешать пользователям, а отчётность за прошлые периоды остаётся корректной.

Способы избавиться от лишнего объекта

Замена ссылок и удаление

Подходит для дублей и ошибочно созданных элементов. История переносится на правильный объект. Требует доступа к закрытым периодам.

Пометка на удаление без физического удаления

Подходит, когда объект использован в прошлых периодах, которые нельзя менять. Данные сохраняются, объект скрывается из подбора.

Признак «Недействителен» / архивная папка

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

Программное удаление ссылок для разработчиков

Если штатных средств не хватает — например, нужно очистить ссылки в самописном регистре сведений или выполнить пакетную обработку по сложному условию, — задача решается кодом на встроенном языке. Метод НайтиПоСсылкам() возвращает таблицу всех объектов, ссылающихся на переданный массив ссылок, далее по каждому объекту выполняется замена значения реквизита или удаление.

bsl
МассивСсылок = Новый Массив;
МассивСсылок.Добавить(УдаляемыйЭлемент);
Найденные = НайтиПоСсылкам(МассивСсылок);
Для Каждого Строка Из Найденные Цикл
    ОбъектДанных = Строка.Данные.ПолучитьОбъект();
    // заменить значение реквизита или удалить объект
    ОбъектДанных.Записать();
КонецЦикла;

Для физического удаления без контроля ссылок существует метод Удалить() у объекта и метод УдалитьОбъекты() с отключённой проверкой. Использовать их без крайней необходимости не следует: отключение контроля целостности гарантированно приводит к битым ссылкам, если хотя бы одно место использования пропущено. Такой приём допустим только при полной уверенности, что ссылок нет, например после предварительной проверки через НайтиПоСсылкам().

Частые ошибки и как проверить результат

Главная ошибка — попытка удалить объект «в лоб» через конфигуратор или внешнюю обработку с отключённым контролем ссылок. Результат — битые ссылки в документах и регистрах, ошибки при проведении и некорректные отчёты. Вторая типичная ошибка — удаление документов вместо замены ссылки: история учёта теряется, и восстановить её можно только из резервной копии. Третья — забыть про дату запрета редактирования: обработка замены «молча» пропускает закрытые документы, и дубль остаётся недоудалённым.

Типичные ошибки
01
Удаление с отключённым контролем ссылочной целостности — в базе появляются записи «Объект не найден», ломаются отчёты и проведение.
02
Удаление документов вместо замены ссылки — теряется история учёта, расходятся остатки по регистрам.
03
Замена ссылок при установленной дате запрета — часть документов не обрабатывается, объект не удаляется, причина неочевидна.
04
Ручная очистка движений регистров вместо отмены проведения документа — движения восстановятся при следующем перепроведении.
05
Отсутствие резервной копии перед массовой обработкой — откат невозможен.

После всех операций проверьте результат. Повторно выполните «Найти ссылки» на удалённый элемент — если он удалён, команда недоступна или список пуст. Откройте несколько документов, где раньше был дубль: в реквизитах должен стоять правильный элемент. Для полной уверенности запустите «Администрирование → Обслуживание → Тестирование и исправление» с проверкой ссылочной целостности — она покажет оставшиеся битые ссылки, если они были.

Контрольные точки

Как проверить результат

Поиск ссылок на объект
Норма

Список мест использования пуст

Тревожный признак

Остались документы или регистры со ссылкой — объект не удалится

Документы после замены дублей
Норма

В реквизитах стоит правильный элемент, документы проведены

Тревожный признак

Пустое значение или «Объект не найден»

Тестирование и исправление
Норма

Ошибок ссылочной целостности нет

Тревожный признак

Сообщения о битых ссылках — нужна отдельная чистка

Частые вопросы

Почему 1С пишет «Объект используется» при удалении?

Потому что на объект есть ссылки — документы, другие элементы справочников или записи регистров. Откройте «Ещё → Найти ссылки» в карточке объекта, чтобы увидеть полный список мест использования, обработайте каждое из них и повторите удаление через «Удаление помеченных объектов».

Можно ли удалить объект вместе со всеми ссылающимися документами?

Технически — да: в окне «Удаление помеченных объектов» при обнаружении ссылок можно пометить на удаление и объекты-ссылки, после чего они удалятся каскадно. Но делать это с проведёнными документами опасно: нарушится учёт и отчётность. Такой вариант допустим только для ошибочно созданных, не имеющих учётного значения данных.

Что делать, если дубль не находится обработкой «Поиск и удаление дублей»?

Проверьте критерии поиска: обработка сравнивает по выбранным полям (наименование, ИНН, КПП), и при опечатках в обоих полях пара может не совпасть. Ослабьте критерии или найдите дубль вручную в списке справочника, а затем используйте механизм замены ссылок, доступный в вашей конфигурации.

Как удалить «битую ссылку» вида «Объект не найден»?

Битые ссылки не находятся поиском ссылок, потому что целевого объекта уже нет. Их выявляет «Тестирование и исправление» с включённой проверкой ссылочной целостности. Дальше записи с битыми ссылками либо очищаются вручную (редактирование объекта или записи регистра), либо обрабатываются специализированной обработкой очистки.

Нужен ли монопольный режим для удаления помеченных объектов?

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

Можно ли отменить удаление объекта?

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

Итог

Что важно запомнить

Удаление объекта в 1С всегда начинается с поиска ссылок: «Ещё → Найти ссылки». Дубли убираются заменой ссылок через «Поиск и удаление дублей», физическое удаление выполняется через «Удаление помеченных объектов» с контролем целостности. Перед массовыми операциями делайте резервную копию и проверяйте дату запрета редактирования, после — контролируйте результат тестированием ссылочной целостности.