Битые ссылки «Объект не найден» в 1С 8.3: диагностика и исправление

· 9 мин

Содержание

«Объект не найден» в 1С 8.3 означает битую ссылку: в документе, справочнике или регистре записан идентификатор объекта, которого в базе больше нет. Исправляют её через Конфигуратор → Администрирование → Тестирование и исправление с флажком проверки ссылочной целостности, а сам удалённый объект при необходимости возвращают из резервной копии.

В поле это выглядит как <Объект не найден> (45:b1c3005056a3e1f611ee8c2f9d0a7e21). Документ с такой ссылкой может не проводиться, отчёт выдаёт пустые строки, обмен падает. Ниже порядок действий: от безопасной проверки до восстановления базы и данных.

Откуда берётся ошибка «Объект не найден» и как оценить масштаб

Строка в угловых скобках — не сбой платформы, а честное сообщение: ссылка есть, объекта нет. Число до двоеточия — внутренний номер таблицы, длинная строка после — идентификатор (GUID) пропавшего объекта.

Частые причины:

  • 🗑️ Непосредственное удаление. Пользователь с правом интерактивного удаления удалил элемент без контроля ссылок. Штатное «Удаление помеченных объектов» такой ссылки не оставит: оно не удаляет то, на что ссылаются.
  • 🔄 Обмен данными. В РИБ или при обмене между конфигурациями пришёл документ, а контрагент или номенклатура к нему не пришли. Позже объект может догрузиться, и ссылка «оживёт».
  • 📦 Частичная загрузка. Перенос через XML или обработку выгрузки с отбором: документы загрузили, справочники — нет.
  • 💾 Повреждение файла базы. Аварийное выключение, сбой диска, антивирус, который держит 1Cv8.1CD. Тогда битые ссылки идут вместе с другими ошибками чтения.
  • 🧩 Доработки. Обработка или код расширения записывает в реквизит ссылку из другой базы.

Перед лечением оцените масштаб. Если ссылка битая в одном-двух документах, хватит ручной правки. Если таких строк сотни и база ведёт себя странно в разных местах, сразу переходите к тестированию в Конфигураторе.

Диагностика: выберите симптом

Что исправить в режиме Предприятия, не трогая Конфигуратор

Не всё требует монопольного доступа. В режиме Предприятия можно точечно устранить последствия.

Ручная замена реквизита

  1. Откройте документ с битой ссылкой.
  2. В поле с <Объект не найден> выберите правильный элемент из справочника.
  3. Запишите и проведите документ.

Способ подходит, когда понятно, что там было: например, по номеру накладной и сумме ясно, какой это контрагент.

Поиск и удаление дублей как инструмент замены

В типовых конфигурациях на БСП (БП 3.0, ЗУП 3.1, УТ 11) есть обработка «Поиск и удаление дублей» в Администрирование → Обслуживание, группа «Корректировка данных». Приём практика такой:

  1. В Конфигураторе тестирование создаёт для битых ссылок объекты-заглушки (подробно — в следующем разделе).
  2. Заглушка появляется в справочнике с наименованием вида Объект не найден (45:b1c3...).
  3. Через «Поиск и удаление дублей» указываете заглушку как дубль, а настоящий элемент — как оригинал.
  4. Обработка заменяет ссылки во всех документах и регистрах сразу, а заглушку помечает на удаление.

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

Если документов с битой ссылкой немного, найти их можно отбором в списке: установите отбор по реквизиту, равному заглушке, после того как она создана.

Тестирование и исправление информационной базы в Конфигураторе

Главный способ восстановить базу. Работает и для файловых, и для клиент-серверных баз.

Перед запуском сделайте резервную копию: выгрузку .dt или копию каталога файловой базы. Тестирование меняет данные, и вернуть «как было» без копии нельзя.

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

Порядок запуска

  1. Откройте базу в режиме Конфигуратора.
  2. Выберите Администрирование → Тестирование и исправление.
  3. Отметьте флажки:
    • «Проверка логической целостности информационной базы»;
    • «Проверка ссылочной целостности информационной базы»;
    • при подозрении на повреждение — «Реиндексация таблиц информационной базы».
  4. Выберите режим. Первый прогон — «Только тестирование»: посмотрите отчёт, сколько и каких ошибок.
  5. Второй прогон — «Тестирование и исправление» с нужными настройками реакции на ошибки.

Что выбрать при ссылках на несуществующие объекты

ВариантЧто произойдётКогда выбирать
Создавать объектыПоявятся заглушки с исходным идентификаторомПочти всегда: ссылки сохраняются, данные можно заменить
Очищать ссылкиРеквизиты станут пустымиКогда пропавшие данные точно не нужны
Не изменятьОшибки только попадут в протоколДля разведки перед исправлением

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

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

Запуск из командной строки

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

"C:\Program Files\1cv8\8.3.24.1691\bin\1cv8.exe" DESIGNER /F "D:\Bases\Buh" /N "Администратор" /P "пароль" /IBCheckAndRepair -LogAndRefsIntegrity -BadRefCreate /Out "D:\Logs\check.txt"

Номер платформы в пути подставьте свой. Для клиент-серверной базы вместо /F указывается /S "сервер\база". Флаг -TestOnly запускает проверку без исправления.

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

Утилита chdbfl для файловых баз

chdbfl.exe проверяет физическую целостность файла 1Cv8.1CD. Битую логическую ссылку она не починит, но если «Объект не найден» появился после сбоя питания, начинать нужно с неё. Конфигуратор на повреждённом файле может даже не открыться.

Как запустить

  1. Попросите всех выйти из базы. Если файл открыт хоть одним пользователем, утилита не получит доступ.
  2. Скопируйте каталог базы целиком в другое место.
  3. Запустите chdbfl.exe из каталога платформы, например C:\Program Files\1cv8\8.3.24.1691\bin\.
  4. Укажите путь к файлу 1Cv8.1CD.
  5. Отметьте «Исправлять обнаруженные ошибки» и нажмите «Выполнить».
  6. Дождитесь окончания и прочитайте протокол в окне.

После chdbfl обязательно запустите тестирование в Конфигураторе: утилита восстанавливает структуру файла, а логические связи проверяет только платформа.

ИнструментЧто проверяетДля каких баз
chdbflФизическую структуру файла 1Cv8.1CDТолько файловые
Тестирование и исправлениеЛогическую и ссылочную целостность, индексы, итогиФайловые и клиент-серверные
Средства СУБДЦелостность таблиц на сервереКлиент-серверные

Для клиент-серверной базы аналог chdbfl — проверка средствами СУБД (например, DBCC CHECKDB в MS SQL Server). Её делает администратор базы данных.

Журнал регистрации: ищем, кто и когда удалил объект

Исправить ссылку мало — нужно понять, откуда она взялась, иначе через месяц всё повторится.

Журнал открывается в Администрирование → Обслуживание → Журнал регистрации. В Конфигураторе — Администрирование → Журнал регистрации.

Как найти удаление

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

Если удаления не нашлось, проверьте события обмена и загрузки за тот же период. Битая ссылка после обмена видна по записям приёма сообщения обмена с предупреждениями.

Журнал хранит историю ограниченный срок, если в настройках задано сокращение. Посмотреть настройку можно в Конфигураторе: Администрирование → Настройка журнала регистрации. Слишком короткий срок хранения лишает вас главной улики.

Выводы по итогам поиска

  • 👤 Удалил пользователь — ограничьте право интерактивного удаления в его профиле, оставьте только пометку на удаление.
  • 🔄 Виноват обмен — проверьте правила и порядок выгрузки, повторите обмен до исправления базы.
  • 🛠️ Виновата обработка — отключите её до разбора с разработчиком.

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

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

Порядок

  1. Исправьте битые ссылки (заглушки заменены на настоящие объекты).
  2. В БП 3.0 откройте Операции → Закрытие периода → Групповое перепроведение документов.
  3. Укажите период, начиная с даты самого раннего исправленного документа.
  4. Запустите перепроведение и дождитесь окончания.
  5. После него повторите закрытие месяца за затронутые периоды.

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

Если битая ссылка сидит в самом документе и не исправлена, перепроведение её не уберёт: документ запишет те же движения с той же битой ссылкой. Поэтому сначала ссылки, потом проведение.

После перепроведения сформируйте оборотно-сальдовую ведомость по нужным счетам с разворотом по субконто. Строки с <Объект не найден> должны исчезнуть.

Как вернуть удалённый объект из резервной копии

Заглушка решает техническую проблему, но реквизиты пропавшего элемента (ИНН, банковский счёт, единицы измерения) не восстанавливает. Если объект нужен целиком, его возвращают из копии с тем же идентификатором.

  1. Разверните резервную копию в отдельную базу: загрузка .dt через Администрирование → Загрузить информационную базу в Конфигураторе новой пустой базы.
  2. Найдите в копии нужный элемент.
  3. Выгрузите его обработкой «Выгрузка и загрузка данных XML» (универсальная обработка, есть в составе дистрибутива ИТС для вашей платформы).
  4. Загрузите файл в рабочую базу той же обработкой.

Объект придёт с прежним GUID, и все ссылки на него оживут сами — заглушка не нужна. Если заглушка уже создана, загрузка перезапишет её, поскольку идентификатор совпадает.

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

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

Исправленная база через полгода снова покажет <Объект не найден>, если не убрать причину. Меры простые и почти бесплатные.

Права и удаление

  • 🔒 Оставьте пользователям только пометку на удаление. Право интерактивного удаления нужно одному-двум администраторам.
  • 🗓️ Удаление помеченных объектов запускайте по расписанию или вручную раз в месяц: оно проверяет ссылки и не удалит то, что используется.

Обмены

  • 🔁 После сбоя обмена не исправляйте базу сразу, а повторите обмен: часть «пропавших» объектов придёт следующим сообщением.
  • 📋 При первой настройке РИБ или обмена выгружайте сначала справочники, потом документы.

Резервные копии и железо

  • 💾 Делайте ежедневную выгрузку или копию каталога и храните хотя бы 7-14 последних копий. Битую ссылку часто замечают через неделю-две, и вчерашняя копия уже не поможет.
  • 🔌 Файловую базу держите на компьютере с ИБП. Аварийное отключение — частая причина повреждения 1Cv8.1CD.
  • 🛡️ Добавьте каталог базы в исключения антивируса: проверка файла на лету мешает записи.

Регулярная проверка

Пакетную команду с -TestOnly из раздела про Конфигуратор можно поставить в планировщик Windows на ночь, когда в базе никто не работает : проверке нужен монопольный доступ. Утром смотрите файл протокола: если в нём появились ссылки на несуществующие объекты, вы узнаете о проблеме раньше бухгалтера.

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

Можно ли просто удалить заглушки «Объект не найден»?
Только после замены ссылок на них. Если удалить заглушку раньше, ссылки снова станут битыми, и ошибка вернётся.
Почему после тестирования ошибка осталась в отчётах?
Отчёты берут данные из регистров. Перепроведите документы за нужный период, и строки обновятся.
Тестирование не запускается: база занята. Что делать?
Попросите пользователей выйти. В клиент-серверной базе администратор может завершить сеансы через консоль кластера, но пользователи потеряют несохранённые данные, поэтому делайте это вне рабочего времени.
Опасно ли запускать «Только тестирование»?
Нет. Этот режим ничего не меняет и только формирует протокол. Но монопольный доступ ему всё равно нужен.
Как часто проверять базу?
Файловую базу на несколько пользователей разумно тестировать раз в месяц перед закрытием периода и обязательно после аварийного отключения.