1C-CodeОшибки 1С → Объект не найден

Объект не найден по ссылке — что это значит и как чинить

Сообщение платформы: Объект не найден

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

Отчего это бывает

1. Объект удалили напрямую, минуя пометку

// удаление через «Удалить непосредственно» или скриптом,
// без контроля ссылочной целостности

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

2. Данные пришли обменом не полностью

// документ приехал, а контрагент, на которого он ссылается, — нет

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

3. Ссылка собрана из строки

Ссылка = Справочники.Контрагенты.ПолучитьСсылку(Новый УникальныйИдентификатор(Строка));

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

Что сделать

Найти битые ссылки по всей базе умеет типовая обработка «Поиск и удаление дублей» и «Тестирование и исправление» в конфигураторе. Разово проверить одну — ЗначениеЗаполнено(Ссылка) И Ссылка.Ссылка = Ссылка вернёт Ложь для битой. И главное: закройте источник — прямое удаление объектов на рабочей базе делать нельзя.

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

Открыть тренажёр

Разобраться глубже

Другие частые ошибки

Поле объекта не обнаружено Значение не является значением объектного типа Переменная не определена Метод объекта не обнаружен Индекс находится за границами массива Деление на ноль