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

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

Как очистить ссылки в 1С: поиск и удаление битых ссылок

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

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

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

Ниже разобраны способы найти битые ссылки, типовые инструменты очистки, ручные и программные методы удаления, а также меры предосторожности, без которых чистка может обернуться потерей данных.

Что такое битая ссылка и откуда она берётся

Битая ссылка — это значение ссылочного типа, которое указывает на несуществующий объект базы данных. Физически в поле хранится уникальный идентификатор (GUID), но записи с таким идентификатором в таблице уже нет. При обращении к такому полю платформа возвращает специальное значение, которое в режиме предприятия выглядит как «<Объект не найден> (84:b2260050568c...)».

Основные причины появления битых ссылок: удаление объектов напрямую, минуя механизм контроля ссылочной целостности (например, через обработки «Удаление помеченных объектов» с отключённым контролем или программно методом Удалить()); обмены по правилам конвертации, когда объект-владелец выгружен, а связанный объект — нет; свёртка базы, при которой остатки записаны, а первичные документы удалены; ручное редактирование данных на уровне СУБД.

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

Быстрый способ увидеть проблему — открыть отчёты и журналы документов: записи со значением «Объект не найден» обычно заметны сразу. Для систематической проверки удобнее использовать запросы: конструкция ГДЕ Ссылка ЕСТЬ NULL при соединении таблиц позволяет выявить записи, у которых ссылочное поле не соединяется ни с одним объектом.

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

«Объект не найден» в журналеЕдиничные битые ссылки

Проверьте, откуда появились записи: обмен, свёртка или ручное удаление

Ошибки при обмене даннымиСсылки не выгружаются корректно

Проверьте правила конвертации и состав плана обмена

Ошибки при тестировании и исправленииМассовое нарушение целостности

Нужна комплексная чистка с анализом причин

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

Любая очистка ссылок — это операция удаления или изменения данных, поэтому первый шаг всегда одинаков: сделайте резервную копию. Для файловой базы достаточно скопировать файл 1Cv8.1CD, для клиент-серверной — выполнить выгрузку в DT через конфигуратор или сделать копию средствами СУБД. Копию стоит проверить: убедитесь, что база из неё открывается.

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

Штатные способы очистки

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

Для замены битых ссылок на корректные значения подходит обработка «Поиск и удаление дублей» — в ней можно указать замену произвольных значений. Также полезна «Групповое изменение реквизитов»: ей можно массово очистить ссылочное поле у выбранных документов, заменив битую ссылку на пустую или на конкретный элемент справочника.

Очистка через групповое изменение реквизитов
  1. 1
    Сделайте резервную копию базы и включите монопольный режим
  2. 2
    Откройте обработку «Групповое изменение реквизитов» в разделе администрирования
  3. 3
    Выберите тип объектов (например, документы) и задайте отбор по условию «Объект не найден» в нужном реквизите
  4. 4
    Укажите новое значение: пустая ссылка или корректный элемент
  5. 5
    Выполните изменение и проверьте результат на нескольких объектах вручную

Замена ссылки против удаления объекта

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

Программная очистка и внешние обработки

Когда битых ссылок много и они разбросаны по разным типам объектов, применяют внешние обработки очистки. Типовой алгоритм такой: обработка перебирает метаданные, для каждого ссылочного реквизита выполняет запрос с проверкой на NULL и предлагает список найденных объектов для очистки или замены.

Программно проверить, битая ли ссылка, можно через запрос: если запрос по ссылке возвращает пустую выборку, а сама ссылка не пустая — объект отсутствует. Ниже пример фрагмента кода для поиска документов с битой ссылкой в реквизите «Контрагент»:

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ Реализация.Ссылка

|ИЗ Документ.РеализацияТоваровУслуг КАК Реализация

|ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты

|ПО Реализация.Контрагент = Контрагенты.Ссылка

|ГДЕ Реализация.Контрагент <> ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)

|И Контрагенты.Ссылка ЕСТЬ NULL";

Очистка регистров и последствия обменов

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

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

Маршрут решения

Как выбрать действие

Битая ссылка в реквизите нужного документаЗамените ссылку на корректное значение или очистите поле через групповое изменение реквизитов
Сам объект — мусор из обменаПометьте на удаление и удалите штатной обработкой «Удаление помеченных объектов»
Ссылки появляются после каждой синхронизацииИсправьте правила обмена и состав выгрузки, затем повторите очистку
Битые ссылки массово по всей базеИспользуйте внешнюю обработку поиска битых ссылок по всем метаданным и анализируйте первопричину

Типичные ошибки при очистке ссылок

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

Ещё одна ловушка — использование прямого удаления через код Объект.Удалить() без контроля ссылок. Такой способ сам по себе создаёт новые битые ссылки в других объектах. Всегда используйте пометку удаления и штатный механизм удаления помеченных объектов — он проверит ссылочную целостность автоматически.

Типичные ошибки
01
Удаление без резервной копии — при ошибке данные восстановить неоткуда
02
Удаление документов вместо замены битой ссылки — теряются учётные данные и проводки
03
Прямое удаление через Удалить() без контроля ссылок — создаются новые битые ссылки
04
Чистка без монопольного режима — часть объектов заблокирована, результат неполный
05
Очистка симптомов без исправления правил обмена — ссылки появляются снова

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

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

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

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

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

Журналы документов и справочники
Норма

Нет значений «Объект не найден»

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

Записи с шестнадцатеричным идентификатором остались

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

Проверка ссылочной целостности без ошибок

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

Сообщения о нарушении целостности

Синхронизация данных
Норма

Обмен завершается без ошибок выгрузки

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

Ошибки по конкретным объектам повторяются

FAQ: частые вопросы об очистке ссылок в 1С

Можно ли удалить битую ссылку прямо из формы документа?

Да, вручную: откройте документ, очистите поле со значением «Объект не найден» или выберите корректное значение, затем перепроведите документ. Это подходит для единичных случаев; при массовой проблеме используйте групповую обработку.

Опасно ли оставлять битые ссылки в базе?

Да. Они вызывают ошибки в отчётах и обменах, могут прервать проведение документов и регламентные задания. Даже если сейчас всё работает, со временем проблема накапливается и усложняет диагностику.

Почему «Удаление помеченных объектов» не удаляет объект?

Потому что на объект есть ссылки из других мест базы. Обработка показывает список мест использования — сначала уберите или замените ссылки там, затем повторите удаление. Это штатная защита от потери целостности.

Чем отличается пометка удаления от прямого удаления?

Пометка — безопасный двухэтапный механизм: сначала объект помечается, затем штатная обработка удаляет его с контролем ссылок. Прямое удаление через код стирает объект сразу и без проверок, создавая битые ссылки.

Битые ссылки появляются после каждого обмена. Что делать?

Чистка не поможет надолго — нужно исправить причину. Проверьте правила конвертации данных, состав плана обмена и регистрацию объектов к выгрузке: связанные объекты должны либо выгружаться вместе, либо ссылка должна корректно сопоставляться на стороне приёмника.

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

Для поиска — нет, запросы и обработки анализа можно запускать в рабочем режиме. Монопольный режим обязателен для этапа изменения и удаления данных, чтобы избежать блокировок и неполной обработки.

Итог

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

Битые ссылки очищают заменой значения или штатным удалением помеченных объектов — всегда после резервной копии и в монопольном режиме. Если ссылки появляются из обмена, сначала исправьте правила синхронизации, иначе проблема вернётся. Результат проверяйте тестированием базы и контрольной синхронизацией.