Битые ссылки «Объект не найден»: найти, заменить или очистить
Содержание
«Объект не найден» в 1С значит, что реквизит документа, справочника или записи регистра ссылается на объект, которого в базе больше нет. Исправить ошибку можно тремя способами: найти и заново выбрать правильное значение, заменить битую ссылку на существующий объект или удалить её через Конфигуратор: Администрирование → Тестирование и исправление, флажок «Проверка ссылочной целостности».
Частое заблуждение — считать, что база «сломалась» и её надо восстанавливать из копии. Обычно нет. Сам объект удалён, а ссылки на него остались в других данных. Это поправимо, если не жать «Очищать ссылки» вслепую: после очистки вы потеряете информацию о том, что там было.
Что означает надпись «Объект не найден» и откуда она берётся
В форме документа или в отчёте битая ссылка выглядит так:
<Объект не найден> (75:b5d4001a4b7ec9d011e5a3c4e8f1b2d7)
Число до двоеточия — внутренний номер таблицы, в которой платформа искала объект. Длинная строка после двоеточия — его уникальный идентификатор в служебной записи. Платформа нашла ссылку, пошла по ней в таблицу справочника или документа, а записи там нет.
Типовые причины появления битых ссылок:
- 🗑️ Непосредственное удаление. Объект удалили клавишей
Shift+Delили командой «Удалить» у пользователя с полными правами, без проверки ссылок. - 🔄 Обмен данными и РИБ. Пришёл документ, а справочник, на который он ссылается, не был выгружен или отклонён правилами обмена.
- 📥 Частичная загрузка. Данные переносили обработкой выгрузки-загрузки XML, загрузили не всё.
- 💥 Аварийное завершение. Сбой питания или переполнение диска при записи в файловую базу . Тут битые ссылки часто идут вместе с физическими повреждениями.
- 🧩 Удалённое расширение. Отключили или удалили расширение, в котором были свои справочники. Ссылки на его объекты в основных данных остались.
- 🛠️ Правка напрямую в СУБД. Кто-то удалял строки SQL-запросом мимо 1С.
Если ошибка появилась сразу после обмена или переноса данных — сначала проверьте источник. Иногда достаточно повторить выгрузку недостающего справочника, и ссылки «оживут» сами: идентификатор совпадёт.
Как найти все битые ссылки в базе
Одна найденная ссылка редко бывает единственной. Прежде чем исправлять, выясните масштаб.
Запрос через консоль запросов
Битая ссылка при обращении к любому реквизиту объекта даёт NULL. На этом построен поиск. Пример для контрагентов в документах реализации БП 3.0:
ВЫБРАТЬ
Док.Ссылка КАК Документ,
Док.Контрагент КАК БитаяСсылка
ИЗ
Документ.РеализацияТоваровУслуг КАК Док
ГДЕ
Док.Контрагент <> ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
И Док.Контрагент.ПометкаУдаления ЕСТЬ NULL
Условие на пустую ссылку обязательно. Пустое значение тоже даёт NULL при обращении к реквизиту, и без отбора в выборку попадут все документы с незаполненным полем.
ПометкаУдаления выбрана потому, что этот стандартный реквизит есть у любого справочника и документа. Наименования или кода у объекта может не быть.
Консоль запросов в 8.3 с интерфейсом «Такси» — это внешняя обработка с диска ИТС или встроенная в конфигурацию. В БП 3.0 её ищите через Главное меню → Все функции → Обработки. Если команды «Все функции» нет, включите её: Сервис и настройки → Параметры → Отображать команду "Все функции".
Как понять, какой объект пропал
Иногда важно узнать, что именно было удалено. Идентификатор из надписи переставлен по частям. Из 32 символов после двоеточия собирается обычный GUID:
Стр = "b5d4001a4b7ec9d011e5a3c4e8f1b2d7";
Ид = Сред(Стр, 25, 8) + "-" + Сред(Стр, 21, 4) + "-" + Сред(Стр, 17, 4) + "-"
+ Сред(Стр, 1, 4) + "-" + Сред(Стр, 5, 12);
Ссылка = Справочники.Контрагенты.ПолучитьСсылку(Новый УникальныйИдентификатор(Ид));
С этим идентификатором ищите объект в базе-источнике обмена, в архивной копии или в журнале регистрации.
Журнал регистрации
Кто и когда удалил объект, покажет журнал: в БП 3.0 это Администрирование → Обслуживание → Журнал регистрации. Поставьте отбор по событию «Данные. Удаление» и периоду, когда ошибка появилась. Если журнал вёлся на уровне «Ошибки», удаления там не будет. Тогда остаётся сравнение с резервной копией.
Исправление ошибки «Объект не найден» через Тестирование и исправление
Главный инструмент — Конфигуратор. Запустите базу в режиме Конфигуратора и откройте Администрирование → Тестирование и исправление.
Перед запуском сделайте резервную копию базы. Для проверки нужен монопольный доступ: всех пользователей придётся выгнать из базы, их несохранённые данные пропадут. Планируйте на вечер или выходной.
Что отметить:
- Флажок «Проверка логической целостности информационной базы».
- Флажок «Проверка ссылочной целостности информационной базы» — именно он ищет битые ссылки.
- Режим «Только проверка» для первого прохода. Так вы увидите список проблем без изменений в данных.
- Нажмите «Выполнить» и сохраните протокол в текстовый файл.
Во втором проходе выбирается действие для ссылок на несуществующие объекты:
| Вариант | Что произойдёт | Когда выбирать |
|---|---|---|
| Создавать объекты | Создаются пустые объекты-заглушки с тем же идентификатором | Почти всегда: данные сохраняются, ссылки становятся «живыми» |
| Очищать ссылки | Реквизит становится пустым | Только если значение точно не нужно и вы знаете, что там было |
| Не изменять | Только запись в протокол | Первый проход и разведка |
Почему «Создавать объекты» лучше
Заглушка получает тот же идентификатор, что и пропавший объект. Все документы снова на неё ссылаются, и связь не теряется. Наименование заглушки начинается со слов «Объект не найден», поэтому найти её в списке справочника легко: отбор по наименованию.
Дальше у вас два пути:
- ✏️ Заполнить заглушку. Если пропал, скажем, контрагент, и вы знаете, какой, — впишите наименование, ИНН и остальные реквизиты. Документы автоматически покажут правильные данные.
- 🔀 Объединить с настоящим объектом. Если в справочнике уже есть правильный контрагент, замените заглушку на него обработкой «Поиск и удаление дублей» (см. следующий раздел). Ссылки перейдут на нужный элемент, заглушка удалится.
«Очищать ссылки» опасен тем, что информация исчезает молча. Документ останется проведённым, но в нём будет пустой контрагент или номенклатура. Отчёты по такому документу начнут показывать строки «<…>», а при перепроведении он упадёт с ошибкой заполнения.
Запуск без интерфейса
Для серверной базы или ночного регламента проверку запускают из командной строки:
"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" DESIGNER /S "srv1c\buh" /N "Администратор" /P "пароль" /IBCheckAndRepair -LogAndRefsIntegrity -BadRefCreate /Out "C:\logs\tii.txt"
Ключ -LogAndRefsIntegrity включает логическую и ссылочную проверку, -BadRefCreate — создание заглушек. Для разведки замените его на -TestOnly. Номер версии в пути подставьте свой.
Как удалить или заменить битую ссылку без Конфигуратора
Если битых ссылок десяток и пользователей выгонять нельзя, поправьте их в пользовательском режиме.
Перевыбор значения в документе
Самый простой способ — открыть документ, выбрать правильное значение вместо «<Объект не найден>» и записать. Подходит для единичных случаев. Если документ проведён, перепроведите его: движения пересоздадутся с новым значением.
Групповое изменение реквизитов
Когда документов много, но правильное значение одно, используйте обработку «Групповое изменение реквизитов». В БП 3.0 она находится в Администрирование → Обслуживание → Корректировка данных.
- Выберите тип объектов, например «Реализация (акты, накладные, УПД)».
- Установите отбор по реквизиту с битой ссылкой. Удобнее отобрать документы списком из результата запроса.
- Укажите новое значение реквизита.
- Запустите изменение и проверьте несколько документов вручную.
Групповое изменение проведённых документов в закрытом периоде меняет движения задним числом. Если отчётность за период сдана, сначала согласуйте это с главным бухгалтером.
Поиск и удаление дублей
Эта обработка из той же группы Корректировка данных умеет заменять все ссылки на один элемент ссылками на другой. Используйте её после «Создавать объекты» в Тестировании и исправлении:
- Откройте обработку и выберите справочник, например «Контрагенты».
- Задайте условие поиска так, чтобы в одну группу попали заглушка и правильный элемент.
- В группе отметьте правильный элемент как оригинал.
- Выполните замену: ссылки перейдут на оригинал, заглушка будет удалена.
«Объект не найден» в регистрах сведений и накопления
Битая ссылка может сидеть не в документе, а в записи регистра. Порядок действий зависит от того, подчинён ли регистр регистратору.
Регистры, подчинённые регистратору
Движения регистров накопления, бухгалтерии и большинства регистров сведений пишет документ при проведении. Поэтому исправлять запись регистра руками бесполезно: при следующем перепроведении она вернётся.
Правильный порядок:
- Найдите документ-регистратор. В отчёте или в списке регистра колонка «Регистратор» показывает его.
- Исправьте реквизит в самом документе одним из способов выше.
- Перепроведите документ. Для массовой операции в БП 3.0 есть обработка «Групповое перепроведение документов
»: её проще всего найти через
Все функции → Обработки.
После массового перепроведения в Конфигураторе выполните «Пересчёт итогов» в том же окне Тестирования и исправления. Это обновит итоговые таблицы регистров накопления и бухгалтерии.
Независимые регистры сведений
Такие регистры (курсы валют, цены, настройки) заполняются не документами. Битую запись можно удалить или поправить вручную:
- Откройте регистр через
Все функции → Регистры сведений. - Установите отбор по колонке, где видна «<Объект не найден>».
- Удалите запись или выберите в ней правильное значение.
Если битое значение стоит в измерении регистра, исправлять его в записи нельзя без риска задвоения: запись с правильным измерением может уже существовать. Надёжнее удалить битую строку и при необходимости создать новую.
Проверка физической и логической целостности базы
Битые ссылки иногда — симптом повреждённой базы. Признаки: ошибки при открытии отдельных списков, сообщения о нарушении структуры файла, база резко выросла или упала с ошибкой записи.
Файловая база: chkdbfl.exe
В папке bin каждой версии платформы лежит утилита chkdbfl.exe. Она проверяет физическую структуру файла 1Cv8.1CD.
- Закройте все сеансы базы. Утилита работает только с неиспользуемым файлом.
- Скопируйте
1Cv8.1CDв другое место — это ваша страховка. - Запустите
chkdbfl.exe, укажите путь к файлу и сначала проверьте без исправления. - Если ошибки есть, повторите с флажком «Исправлять обнаруженные ошибки».
После chkdbfl запускайте Тестирование и исправление: сначала реиндексация и логическая проверка, потом ссылочная.
Клиент-серверная база
Для базы на MS SQL Server или PostgreSQL физическую целостность проверяют средствами СУБД, это задача администратора. Со стороны 1С — то же Тестирование и исправление, но запускать его стоит на копии базы, развёрнутой на тестовом сервере. Проверка большой базы идёт часами.
Как не допустить повторения
Битые ссылки почти всегда появляются из-за удаления без проверки. Закройте эту дыру и настройте копии.
- 🔒 Права. Обычным пользователям оставляйте только пометку на удаление. Право непосредственного удаления — у одного администратора.
- 🧹 Удаление помеченных объектов. Удаляйте через обработку
Администрирование → Обслуживание → Корректировка данных → Удаление помеченных объектов. Она проверяет ссылки и не удалит объект, который где-то используется. - 🔄 Обмены. После настройки или изменения правил обмена проверяйте первые выгрузки на полноту. Справочники должны уходить раньше документов или вместе с ними.
- 🧩 Расширения. Перед удалением расширения со своими справочниками выясните, где на них есть ссылки.
- 📝 Журнал регистрации. Держите уровень «Все события» или хотя бы «Изменения»: тогда удаления видны.
Резервное копирование
Битую ссылку на важный объект без копии не восстановить: заглушка сохранит связи, но не сами данные. Поэтому копия нужна регулярная, а не «перед обновлением».
- Для файловой базы в БП 3.0 есть встроенная настройка:
Администрирование → Обслуживание → Резервное копирование и восстановление. Укажите расписание и папку на другом диске. - Для клиент-серверной базы копии делаются планом обслуживания в СУБД. Выгрузка
.dtиз Конфигуратора требует выгнать всех из базы и подходит только как дополнительная. - Храните минимум несколько последних копий. Ошибку часто замечают через неделю-две, и вчерашняя копия уже содержит те же битые ссылки.
Чего не делать при исправлении битых ссылок
- ❌ Не запускать «Очищать ссылки» на рабочей базе без первого прохода «Только проверка». Вы не узнаете, что потеряли.
- ❌ Не удалять заглушки «Объект не найден» сразу после создания. Пока на них ссылаются документы, удалив их непосредственно, вы получите те же битые ссылки заново.
- ❌ Не править движения регистров вручную, если у них есть регистратор. Перепроведение вернёт старое.
- ❌ Не восстанавливать всю базу из копии ради одного объекта. Вы потеряете работу всех пользователей с момента копии. Лучше развернуть копию рядом и перенести только пропавший объект.
- ❌ Не запускать chkdbfl на единственном экземпляре файла. Если исправление не удастся, вернуться будет не к чему.