Администрирование · 11 мин
Как удалить битую ссылку на документ в 1С
Как найти и удалить битую ссылку на документ в 1С: поиск по GUID, типовые обработки, тестирование и исправление, замена ссылок. Риски и проверка результата.
Битая ссылка в 1С — это ситуация, когда в реквизите, движении документа или регистре хранится ссылка на объект, которого уже нет в базе. В интерфейсе такие ссылки обычно отображаются как «Объект не найден» с длинным шестнадцатеричным идентификатором, например «<Объект не найден> (123:8f4a00155d...)». Чаще всего проблема возникает после удаления документов без контроля ссылочной целостности, неудачного обмена данными или прямого удаления объектов через обработки.
Оставлять битые ссылки нельзя: они мешают проведению документов, ломают отчёты, вызывают ошибки при обмене с другими базами и при обновлении конфигурации. Хорошая новость в том, что в типовых конфигурациях есть штатные средства для поиска и удаления таких ссылок, а для сложных случаев существуют проверенные обработки.
Ниже разобраны основные способы: от простого удаления документа с битыми ссылками до программной очистки реквизитов. Порядок действий зависит от того, где именно «застряла» ссылка — в реквизите объекта, в табличной части, в регистре или в движениях документа.
Что такое битая ссылка и откуда она берётся
Каждый объект в 1С имеет уникальный внутренний идентификатор (GUID). Когда в реквизите одного документа указывается другой документ, физически в базе хранится именно этот идентификатор. Если объект-владелец GUID удалён из базы, а ссылка на него осталась, платформа при обращении показывает «Объект не найден» — это и есть битая ссылка.
Типичные причины появления: удаление объектов специальными обработками без контроля ссылочной целостности, ошибки при обмене данными (объект выгрузился, а потом был удалён в одной из баз), восстановление базы из неполной копии, сбои при свёртке базы. Иногда битые ссылки появляются в движениях документов после нештатного прерывания проведения.
Прежде чем удалять, полезно понять масштаб проблемы: единичная ссылка в одном документе решается вручную за минуту, а массовые битые ссылки после обмена требуют обработок и анализа.
Подготовка: резервная копия и оценка ситуации
Любые операции с удалением данных начинайте с резервной копии. Для файловой базы достаточно скопировать файл 1Cv8.1CD при закрытых сеансах пользователей, для клиент-серверной — сделать выгрузку через конфигуратор (Администрирование → Выгрузить информационную базу) или штатный backup средствами СУБД.
Далее оцените, где находится битая ссылка. Откройте документ или отчёт, где возникает ошибка, и посмотрите, в каком поле отображается «Объект не найден». Если это реквизит документа, который вы можете отредактировать, — задача простая. Если ссылка сидит в движениях, регистрах или в закрытых периодах, потребуется другой подход.
Способ 1. Штатное удаление помеченных объектов
Самый безопасный сценарий: битая ссылка появилась потому, что документ помечен на удаление, но не удалён физически, либо наоборот — сам документ с битыми ссылками нужно удалить. В типовых конфигурациях (Бухгалтерия, Управление торговлей, ERP) откройте раздел «Администрирование» → «Обслуживание» → «Удаление помеченных объектов».
Запустите пометку нужного документа на удаление (клавиша Del в списке), затем выполните удаление помеченных объектов. Платформа автоматически проверит ссылочную целостность: если на документ есть ссылки из других объектов, система покажет их список и предложит либо удалить ссылающиеся объекты, либо отказаться от удаления.
- 1Сделайте резервную копию базы
- 2Пометьте проблемный документ на удаление
- 3Откройте Администрирование → Обслуживание → Удаление помеченных объектов
- 4Выберите режим «Выборочное удаление» и отметьте нужный документ
- 5Просмотрите список мест использования и подтвердите удаление
- 6Проверьте, что ошибка «Объект не найден» исчезла
Если при удалении система показывает, что на объект ссылаются другие документы, не удаляйте всё подряд — пройдите по списку и решите по каждому объекту: очистить реквизит, перепровести документ или удалить его тоже.
Способ 2. Очистка битой ссылки в реквизите вручную
Когда битая ссылка находится в редактируемом реквизите документа (например, «Документ основание»), достаточно открыть документ, очистить поле и записать объект. Если документ проведён, сначала отмените проведение, очистите реквизит и проведите заново.
Сложнее, если поле недоступно для редактирования или документ находится в закрытом периоде. В этом случае поможет типовая обработка «Групповое изменение реквизитов» (в разделе «Администрирование» → «Обслуживание» → «Корректировка данных», либо через «Все функции»). С её помощью можно отобрать документы по условию и массово очистить значение конкретного реквизита.
Способ 3. Тестирование и исправление информационной базы
Если битые ссылки массовые и их источник неясен, используйте штатный механизм «Тестирование и исправление» в конфигураторе: меню «Администрирование» → «Тестирование и исправление». Отметьте пункты «Проверка ссылочной целостности информационной базы» и «Реиндексация таблиц», выберите режим «Тестирование и исправление».
В ходе проверки платформа найдёт ссылки на несуществующие объекты. В зависимости от настроек она может очищать такие ссылки либо создавать объекты-заглушки. Для клиент-серверных баз процедура может занять продолжительное время и требует монопольного доступа — планируйте её на нерабочие часы.
Сравнение вариантов
Подходит для единичных случаев, безопасно, контроль ссылок автоматический. Не очищает ссылки в регистрах напрямую.
Хорош для массовой очистки реквизитов документов. Не работает с регистрами и движениями.
Находит все битые ссылки в базе, включая регистры. Требует монопольного доступа и времени, действует грубо.
Гибкий точечный вариант для регистров и сложных случаев, но требует навыков и аккуратности.
Способ 4. Программная очистка ссылок в регистрах и движениях
Если битая ссылка находится в регистре сведений или в движениях документа, штатные обработки не помогут. Для регистра сведений откройте его список через «Все функции» (в режиме Предприятия: главное меню → Все функции → Регистры сведений), найдите запись с «Объект не найден» и удалите её или очистите поле.
Для движений документа: откройте документ, перейдите в его движения (кнопка «Дт/кт» или «Ещё» → «Движения документа»), отмените проведение и проведите заново — часто это пересоздаёт движения и убирает битые ссылки. Если документ провести нельзя, потребуется обработка на встроенном языке.
Запрос = Новый Запрос("ВЫБРАТЬ Рег.Документ КАК Док ИЗ РегистрСведений.МойРегистр КАК Рег");
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Если Выборка.Док.ПолучитьОбъект() = Неопределено Тогда
// ссылка битая — очищаем или удаляем запись
КонецЕсли;
КонецЦикла;Универсальный программный признак битой ссылки — сравнение результата метода ПолучитьОбъект() с Неопределено: если объект не существует, метод вернёт Неопределено. На этом принципе построены большинство обработок поиска битых ссылок.
Проверка результата и профилактика
После любых действий проверьте результат: откройте документы и отчёты, где раньше возникала ошибка, убедитесь, что надпись «Объект не найден» исчезла, проведение проходит без сообщений, а обмен данными завершается успешно. Дополнительно можно повторно запустить тестирование ссылочной целостности уже в режиме «Только тестирование», чтобы убедиться, что битых ссылок не осталось.
Как проверить результат
Нет надписи «Объект не найден», поля заполнены корректно
Ошибка или битая ссылка осталась в другом реквизите
Документ проводится без сообщений об ошибках
Появляются ошибки ссылочной целостности
Проверка ссылочной целостности завершается без ошибок
В протоколе остаются записи о несуществующих объектах
Синхронизация проходит без ошибок загрузки
Ошибки «объект не найден» при выгрузке/загрузке
Для профилактики запретите пользователям непосредственное удаление объектов (оставьте только пометку удаления), настройте регламентное удаление помеченных объектов и периодически выполняйте тестирование ссылочной целостности. При обменах следите за журналами ошибок — большинство битых ссылок «приезжает» именно из синхронизаций.
Что важно запомнить
Битая ссылка удаляется штатными средствами: удаление помеченных объектов, групповое изменение реквизитов, тестирование и исправление. Для регистров и движений нужны ручная очистка или обработки. Всегда начинайте с резервной копии и заканчивайте проверкой ссылочной целостности.
Частые вопросы
Можно ли восстановить документ, на который указывает битая ссылка?
Напрямую — нет, если объект физически удалён. Варианты: восстановить объект из резервной копии или из базы-корреспондента обмена, либо при тестировании и исправлении создать объект-заглушку с тем же GUID и заполнить его вручную. Проще всего заменить битую ссылку на существующий аналогичный документ.
Чем заменить битую ссылку, если документ нужен в учёте?
Создайте новый документ того же вида с нужными данными, затем через «Групповое изменение реквизитов» или вручную замените битую ссылку на новый документ во всех объектах, где она встречается. Найти все места использования поможет отчёт «Поиск ссылок на объект» (Все функции → Обработки), если он доступен в вашей конфигурации.
Почему после удаления помеченных объектов битые ссылки остались?
Потому что этот механизм удаляет сами помеченные объекты, но не очищает ссылки на уже давно удалённые объекты в регистрах и движениях. Для таких случаев используйте тестирование и исправление с проверкой ссылочной целостности или ручную очистку регистров.
Опасно ли запускать «Тестирование и исправление» на рабочей базе?
Процедура требует монопольного доступа — все пользователи должны выйти из базы. На больших клиент-серверных базах она может идти часами. Риск потери данных минимален при наличии резервной копии, но пункт «очищать ссылки» действует без дополнительных подтверждений, поэтому сначала запустите режим «Только тестирование» и изучите протокол.
Битая ссылка мешает обмену данными. Что делать в первую очередь?
Найдите объект с битой ссылкой по тексту ошибки в журнале регистрации или в протоколе обмена — там обычно указан GUID и тип объекта. Очистите или замените ссылку, затем повторите выгрузку. Если ошибка возникает на стороне приёмника, проверьте, не удалён ли объект в базе-приёмнике: тогда ссылку нужно чинить там или перерегистрировать объект к обмену.
Как найти все битые ссылки в базе сразу?
Самый полный способ — «Тестирование и исправление» в режиме «Только тестирование» с включённой проверкой ссылочной целостности: протокол покажет все найденные нарушения. Альтернатива — сторонние обработки поиска битых ссылок, которые перебирают метаданные и проверяют каждое ссылочное поле, но их нужно адаптировать под конкретную конфигурацию.