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

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

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

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

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

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

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

Что такое битая ссылка и как её распознать

Каждый объект базы 1С (элемент справочника, документ, запись) имеет уникальный идентификатор — GUID. Когда документ ссылается на контрагента или номенклатуру, он хранит именно этот идентификатор. Если объект удалить физически, идентификатор останется в ссылающихся объектах, но разыменовать его будет нечего — платформа покажет «<Объект не найден (123:abc...)>».

Типичные признаки наличия битых ссылок в базе:

  • в списках и полях ввода вместо наименования виден текст «Объект не найден» с кодом;
  • отчёты выдают строки с пустыми или «битыми» значениями измерений;
  • документ не проводится с ошибкой обращения к несуществующему объекту;
  • обмен данными завершается с ошибками загрузки или выгрузки;
  • запросы и СКД возвращают NULL или значение «Битая ссылка».

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

Проверка через «Удаление помеченных объектов»

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

Порядок действий:

  1. Откройте обработку и выберите режим «Выборочное удаление объектов» или полный список помеченных.
  2. Дождитесь построения списка помеченных объектов и нажмите «Удалить выбранные».
  3. Если у объекта есть ссылки, он не удалится — обработка покажет список мест использования.
  4. Записи, которые не удалось удалить из-за ссылок, и объекты с признаками «Объект не найден» в дереве ссылок укажут на проблемные участки.

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

Поиск ссылок на объект в конфигураторе

Если известен конкретный объект, который подозревается в «битости», или нужно понять, где используется элемент перед удалением, используйте штатный сервис конфигуратора. Откройте конфигуратор монопольно или в рабочем режиме (для поиска монопольный режим не обязателен) и выполните: меню «Сервис» → «Поиск ссылок на объекты».

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

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

Порядок действий
  1. 1
    Откройте конфигуратор и меню «Сервис» → «Поиск ссылок на объекты»
  2. 2
    Добавьте в список проверяемый объект или тип объекта
  3. 3
    Запустите поиск и изучите таблицу найденных ссылок
  4. 4
    Двойным щелчком перейдите к объекту-источнику и исправьте ссылку
  5. 5
    Повторите поиск, чтобы убедиться, что проблемных мест не осталось

Тестирование и исправление с проверкой ссылочной целостности

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

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

Учтите ограничения: проверка требует монопольного доступа к базе, на больших базах выполняется долго, а в клиент-серверном варианте создаёт заметную нагрузку на СУБД. Запускайте её в нерабочее время и обязательно после резервного копирования.

Поиск битых ссылок запросом и обработками

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

ВЫБРАТЬ

Реализация.Ссылка,

Реализация.Контрагент

ИЗ

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

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

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

ГДЕ

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

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

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

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

bsl
Функция ЭтоБитаяСсылка(Ссылка)
    Если Не ЗначениеЗаполнено(Ссылка) Тогда Возврат Ложь; КонецЕсли;
    Запрос = Новый Запрос("ВЫБРАТЬ 1 ИЗ " + Ссылка.Метаданные().ПолноеИмя() + " ГДЕ Ссылка = &Ссылка");
    Запрос.УстановитьПараметр("Ссылка", Ссылка);
    Возврат Запрос.Выполнить().Пустой();
КонецФункции

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

Способ исправления зависит от того, нужны ли данные, на которые указывала ссылка. Возможны три сценария.

Восстановление объекта. Если есть актуальная резервная копия, найдите в ней объект по GUID (в копии ссылка отображается корректно) и перенесите его в рабочую базу обработкой выгрузки-загрузки с сохранением идентификатора. Либо создайте объект-заглушку через тестирование и исправление и заполните его данными из копии.

Замена ссылки. Если объект был продублирован и удалён как дубликат, используйте типовую обработку «Поиск и замена значений» (или «Поиск и удаление дублей» в БСП): она заменит битую или старую ссылку на актуальный объект во всех местах использования.

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

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

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

Удалённый объект содержит нужные данные и есть резервная копияВосстановите объект из копии с сохранением GUID
Объект удалён как дубликат, есть актуальная заменаВыполните поиск и замену ссылок на актуальный объект
Данные не нужны, а ссылка мешает работеОчистите ссылку через обработку или тестирование и исправление
Масштаб проблемы неизвестенСначала выполните полную проверку ссылочной целостности и оцените отчёт

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

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

Дополнительные меры: ограничьте права на интерактивное удаление (роль «Интерактивное удаление» должна быть только у администраторов), проверяйте сторонние обработки на предмет прямого вызова Удалить() у объектов, а после сбоев обмена и восстановления из копий запускайте проверку ссылочной целостности.

Регулярное регламентное обслуживание — тестирование и исправление по расписанию в нерабочее время — позволяет обнаруживать проблемы раньше, чем они проявятся в отчётах и обменах.

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

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

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

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

Чем битая ссылка отличается от помеченного на удаление объекта?

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

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

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

Что выбрать в тестировании и исправлении: создавать объекты или очищать ссылки?

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

Мешают ли битые ссылки обмену данными и обновлению конфигурации?

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

Как восстановить объект, если резервной копии нет?

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

Как запретить пользователям создавать битые ссылки?

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