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

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

Как убрать битую ссылку в 1С

Что такое битая ссылка в 1С, как найти и удалить записи вида «Объект не найден» через ТиИ, обработки и код. Проверка результата и типичные ошибки.

Битая ссылка в 1С — это ситуация, когда реквизит документа, регистра или справочника указывает на объект, которого уже нет в базе. В интерфейсе это выглядит как надпись вида «<Объект не найден> (123:8b4a...)», в отчётах — как пустые или «мусорные» строки, а при обменах — как ошибки загрузки. Чаще всего причина в удалении объектов без контроля ссылочной целостности, в незавершённом обмене данными или в ручном удалении через внешние обработки.

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

Ниже — рабочий порядок действий: от диагностики до проверки результата. Инструкция подходит для типовых конфигураций (Бухгалтерия, Управление торговлей, ERP, ЗУП) и файловых, и клиент-серверных баз.

Как понять, что в базе есть битые ссылки

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

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

«Объект не найден» в поле документаРеквизит ссылается на удалённый объект

Открыть документ и определить, какой реквизит содержит битую ссылку

Ошибки при проведенииДвижения ссылаются на несуществующие записи

Проверить журнал регистрации на момент ошибки

Сбой обмена даннымиОбъект не сопоставляется по GUID

Посмотреть протокол обмена и список незагруженных объектов

Расхождения в отчётахВ регистрах есть записи с битыми измерениями

Сформировать отчёт с детализацией до регистратора

Подготовка: резервная копия и права доступа

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

Для работы понадобятся полные права или права администратора. Обычному пользователю с ролью «бухгалтер» или «менеджер» инструменты исправления недоступны — и это правильно: массовые изменения данных должны выполняться осознанно.

Способ 1: тестирование и исправление базы

Штатный инструмент конфигуратора — «Администрирование» → «Тестирование и исправление» — умеет находить и частично устранять битые ссылки. Запускать его нужно в монопольном режиме: все пользователи должны выйти из базы, фоновые задания — быть остановлены.

В настройках отметьте пункт «Проверка ссылочной целостности информационной базы». В блоке «При наличии ссылок на несуществующие объекты» доступны варианты: создавать объекты (платформа создаст «пустышки» с нужным GUID), очищать ссылки или не изменять. Вариант «создавать объекты» безопаснее для регистров, «очищать ссылки» подходит для реквизитов документов, где пустое значение допустимо.

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

Порядок действий в ТиИ
  1. 1
    Сделайте выгрузку базы в файл dt
  2. 2
    Завершите сеансы пользователей и отключите регламентные задания
  3. 3
    Откройте конфигуратор: Администрирование → Тестирование и исправление
  4. 4
    Отметьте «Проверка ссылочной целостности», выберите режим обработки битых ссылок
  5. 5
    Нажмите «Выполнить» и дождитесь окончания
  6. 6
    Изучите протокол: какие объекты созданы или очищены

Способ 2: поиск и удаление через типовые обработки

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

Откройте «Удаление помеченных объектов» и выполните поиск. Если обработка показывает, что объект используется, но место использования открывается с ошибкой «Объект не найден» — это и есть битая связь. В таком случае сначала исправьте место использования (очистите реквизит вручную), затем повторите удаление.

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

Способ 3: ручное исправление и программная очистка

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

Для регистров сведений и накопления ручное редактирование делается через форму записей регистра или через движения документа-регистратора. Если регистратор сам битый, записи проще удалить программно.

Программный способ — через запрос с конструкцией, проверяющей существование ссылки. Пример для поиска битых ссылок в реквизите «Контрагент» документов:

bsl
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РеализацияТоваровУслуг.Ссылка КАК Документ
|ИЗ
| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|ГДЕ
| РеализацияТоваровУслуг.Контрагент ЕСТЬ НЕ NULL
| И РеализацияТоваровУслуг.Контрагент.Ссылка ЕСТЬ NULL";
Результат = Запрос.Выполнить().Выбрать();
Пока Результат.Следующий() Цикл
 Сообщить("Битая ссылка в: " + Результат.Документ);
КонецЦикла;

Приём основан на свойстве запросов 1С: если ссылка битая, обращение к реквизиту через точку возвращает NULL. Найденные документы дальше обрабатывают: очищают реквизит через Объект.Контрагент = Неопределено; с последующей записью в режиме обмена данными или в обычном режиме с проведением.

Восстановление объекта вместо удаления ссылки

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

Это делается программно: GUID из строки вида «8b4a...» преобразуется в уникальный идентификатор, создаётся новый объект нужного типа с этим идентификатором, после чего заполняется наименованием и реквизитами. Такой приём используют и обработки восстановления удалённых объектов. После восстановления проверьте, что документы по этому объекту проводятся, а отчёты показывают осмысленные данные.

Маршрут решения

Как выбрать действие

Ссылка в реквизите документа, объект точно не нуженОчистите реквизит вручную или программно, перепроведите документ
Объект удалён по ошибке, на него много ссылокВосстановите объект по GUID с тем же уникальным идентификатором
Битые записи в регистрах, регистратор не существуетУдалите записи регистра программно или через ТиИ
Битых ссылок много по всей базеЗапустите ТиИ с проверкой ссылочной целостности в монопольном режиме

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

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

Если база участвует в обменах, выполните тестовую синхронизацию и проверьте, что ошибки сопоставления объектов исчезли. Также попросите пользователей открыть проблемные документы и убедиться, что надпись «Объект не найден» пропала.

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

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

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

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

Итог

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

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

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

Откуда берётся надпись «Объект не найден» с кодом в скобках?

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

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

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

Опасно ли выбирать в ТиИ режим «создавать объекты»?

Режим создаёт пустые объекты-заглушки с нужным GUID, чтобы ссылки перестали быть битыми. Это безопаснее удаления, но заглушки потом нужно разобрать: заполнить данными или корректно удалить через контроль ссылок. Оставленные «пустышки» засоряют справочники и отчёты.

Почему битые ссылки появляются снова после исправления?

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

Влияют ли битые ссылки на скорость работы базы?

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

Что делать, если битая ссылка в закрытом отчётном периоде?

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