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

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

1С: объект не найден — как найти и заменить битую ссылку

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

Ошибка «Объект не найден» (в интерфейсе она выглядит как «<Объект не найден> (123:abcd...)») появляется, когда в базе осталась ссылка на запись, которой физически уже нет. Чаще всего это результат прямого удаления объектов без контроля ссылочной целостности, неудачного обмена данными или восстановления базы после сбоя. Такая «битая» ссылка мешает проведению документов, ломает отчёты и вызывает ошибки при обмене.

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

Откуда берутся битые ссылки и как их распознать

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

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

Распознать проблему просто: в списках, отчётах и полях документов вместо понятного наименования отображается строка вида «<Объект не найден> (75:8a9a...)». При попытке открыть такое значение платформа сообщает, что объект не найден в информационной базе.

Единичные ссылки в паре документовЛокальная проблема

Достаточно ручной замены через обработку

Ссылки по всей базе после свёртки/обменаМассовая проблема

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

Ссылки появляются снова после исправленияДействующий источник

Ищите обмен или регламентное задание, которое их создаёт

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

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

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

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

Способ 1. Штатная обработка «Поиск и удаление ссылок»

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

Алгоритм такой: в обработке группового изменения выберите тип объекта (например, документы «Реализация товаров и услуг»), настройте отбор — реквизит «Контрагент» равен проблемному значению. Битую ссылку в отборе можно указать, вставив её из поля документа. Затем задайте новое значение реквизита и выполните изменение. Обработка перепишет все найденные объекты с контролем блокировок.

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

Замена через групповое изменение реквизитов
  1. 1
    Сделайте резервную копию базы
  2. 2
    Откройте Администрирование → Обслуживание → Корректировка данных → Групповое изменение реквизитов
  3. 3
    Выберите тип объектов и задайте отбор по битой ссылке
  4. 4
    Укажите реквизит и новое значение для замены
  5. 5
    Выполните изменение и проверьте несколько объектов вручную

Способ 2. Универсальная обработка «Поиск и замена значений»

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

Порядок работы: откройте обработку через «Файл» → «Открыть» в режиме 1С:Предприятие, укажите заменяемое значение (битую ссылку можно подобрать из поля документа или вставить по GUID) и значение-замену. Запустите поиск — обработка покажет список всех объектов, где встречается ссылка. Снимите флажки с объектов, которые трогать не нужно, и выполните замену.

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

Способ 3. Программная замена через запрос и код

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

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

ВЫБРАТЬ

Реализация.Ссылка КАК Документ,

Реализация.Контрагент КАК БитаяСсылка

ИЗ

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

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

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

ГДЕ

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

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

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

Отдельный нюанс — ссылки в движениях документов. Замена реквизита шапки не перепишет регистры: документ нужно перепровести, либо исправлять наборы записей напрямую. Проще и безопаснее после замены ссылок перепровести затронутые документы штатной обработкой «Проведение документов».

bsl
Запрос = Новый Запрос("ВЫБРАТЬ Реализация.Ссылка ИЗ Документ.РеализацияТоваровУслуг КАК Реализация ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК К ПО Реализация.Контрагент = К.Ссылка ГДЕ К.Ссылка ЕСТЬ NULL И Реализация.Контрагент <> ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)");

Способ 4. Восстановить удалённый объект по GUID

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

Для этого создаётся новый объект справочника, затем через УстановитьСсылкуНового() ему присваивается ссылка с нужным GUID, и объект записывается. После этого достаточно заполнить наименование и реквизиты — все документы, ссылавшиеся на старый объект, автоматически «увидят» новый, потому что ссылка совпадает.

Этот способ идеален, когда объект удалили случайно, а его данные известны или восстановимы из архивной копии. Минус — нужен программный доступ; в пользовательском режиме такую операцию не выполнить. Также помните: если объект участвовал в обменах, восстановленный элемент с тем же GUID корректно синхронизируется с другими базами.

Сравнение способов замены

Групповое изменение реквизитов

Подходит для единичных замен в известных типах объектов; не требует внешних обработок, но нужно знать, где искать

Поиск и замена значений (обработка)

Находит все вхождения по всей базе; требует осторожности с настройками и теста на копии

Запрос + код

Максимальный контроль и гибкость; нужен конфигуратор и навыки разработки

Восстановление по GUID

Лучший вариант при ошибочном удалении; не подходит, если данных объекта восстановить нечем

Проверка результата и типичные ошибки

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

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

Типичные ошибки
01
Замена без резервной копии — при ошибке в отборе данные теряются безвозвратно
02
Замена только в шапке документа без перепроведения — в регистрах остаются старые ссылки и отчёты расходятся
03
Запуск тестирования и исправления с режимом удаления ссылок — значения реквизитов очищаются без замены
04
Исправление последствий без поиска причины — после очередного обмена битые ссылки появляются снова
Контрольные точки

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

Поле в документе
Норма

Отображается наименование нового объекта

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

По-прежнему «<Объект не найден>»

Повторный запрос с левым соединением
Норма

Пустой результат выборки

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

Остались строки с NULL

Отчёты по затронутым данным
Норма

Формируются без ошибок

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

Ошибка обращения к объекту

Проведение документов
Норма

Проводятся штатно

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

Сообщения о незаполненных или битых реквизитах

Как предотвратить появление битых ссылок

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

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

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

Итог

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

Битая ссылка — это след удалённого напрямую объекта или сбоя обмена. Заменяйте её через групповое изменение реквизитов, обработку поиска и замены, кодом или восстановите объект по GUID. Всегда работайте на копии, перепроводите документы после замены и устраняйте причину, а не только следствие.

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

Можно ли заменить битую ссылку без конфигуратора и внешних обработок?

Да, если в конфигурации есть «Групповое изменение реквизитов» (раздел «Администрирование» → «Обслуживание»). Она позволяет отобрать объекты по значению реквизита и массово присвоить новое значение. Ограничение — нужно знать, в каких типах объектов искать ссылку, и уметь вставить битую ссылку в отбор через копирование из поля документа.

Почему после замены ссылки отчёт всё равно показывает ошибку?

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

Что делать, если неизвестно, на какой объект ссылалась битая ссылка?

Извлеките GUID из текста «Объект не найден» и поищите его в архивных копиях базы или в базах-корреспондентах обмена — там объект может ещё существовать. Если найти не удалось, создайте объект-заглушку с понятным именем («Удалённый контрагент, заменён») и замените ссылки на него, чтобы документы остались читаемыми.

Опасно ли тестирование и исправление для битых ссылок?

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

Битые ссылки появляются снова после каждого обмена — в чём причина?

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

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

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