Администрирование · 11 мин
Как убрать битую ссылку в 1С
Что такое битая ссылка в 1С, как найти и удалить записи вида «Объект не найден» через ТиИ, обработки и код. Проверка результата и типичные ошибки.
Битая ссылка в 1С — это ситуация, когда реквизит документа, регистра или справочника указывает на объект, которого уже нет в базе. В интерфейсе это выглядит как надпись вида «<Объект не найден> (123:8b4a...)», в отчётах — как пустые или «мусорные» строки, а при обменах — как ошибки загрузки. Чаще всего причина в удалении объектов без контроля ссылочной целостности, в незавершённом обмене данными или в ручном удалении через внешние обработки.
Сама по себе битая ссылка не разрушает базу, но мешает работе: документы не проводятся, отчёты показывают некорректные остатки, синхронизации завершаются с ошибками. Поэтому такие записи нужно находить и аккуратно устранять — либо очищая ссылку, либо восстанавливая объект, либо удаляя запись целиком.
Ниже — рабочий порядок действий: от диагностики до проверки результата. Инструкция подходит для типовых конфигураций (Бухгалтерия, Управление торговлей, ERP, ЗУП) и файловых, и клиент-серверных баз.
Как понять, что в базе есть битые ссылки
Самый заметный признак — надпись «<Объект не найден>» в полях документов, справочников или в движениях по регистрам. В отчётах такие строки часто отображаются с пустым наименованием, а итоги по ним могут не сходиться с данными карточек. При попытке открыть объект по ссылке появляется ошибка «Объект не найден в базе данных».
Второй источник сигналов — журнал регистрации. Ошибки при проведении документов, обменах и фоновых заданиях с текстом про нарушение ссылочной целостности указывают на проблему. Третий признак — сбои синхронизации с другими базами: при загрузке объект не может быть сопоставлен, и обмен останавливается.
Открыть документ и определить, какой реквизит содержит битую ссылку
Проверить журнал регистрации на момент ошибки
Посмотреть протокол обмена и список незагруженных объектов
Сформировать отчёт с детализацией до регистратора
Подготовка: резервная копия и права доступа
Любые операции с удалением или заменой ссылок необратимы, поэтому первый шаг — резервная копия. Для файловой базы достаточно скопировать файл 1Cv8.1CD при закрытых сеансах или сделать выгрузку через конфигуратор («Администрирование» → «Выгрузить информационную базу»). Для клиент-серверной базы используйте штатные средства СУБД или выгрузку в dt.
Для работы понадобятся полные права или права администратора. Обычному пользователю с ролью «бухгалтер» или «менеджер» инструменты исправления недоступны — и это правильно: массовые изменения данных должны выполняться осознанно.
Способ 1: тестирование и исправление базы
Штатный инструмент конфигуратора — «Администрирование» → «Тестирование и исправление» — умеет находить и частично устранять битые ссылки. Запускать его нужно в монопольном режиме: все пользователи должны выйти из базы, фоновые задания — быть остановлены.
В настройках отметьте пункт «Проверка ссылочной целостности информационной базы». В блоке «При наличии ссылок на несуществующие объекты» доступны варианты: создавать объекты (платформа создаст «пустышки» с нужным GUID), очищать ссылки или не изменять. Вариант «создавать объекты» безопаснее для регистров, «очищать ссылки» подходит для реквизитов документов, где пустое значение допустимо.
Для больших баз проверка может идти долго — от десятков минут до нескольких часов. Запускайте её в нерабочее время и предупредите пользователей о недоступности базы.
- 1Сделайте выгрузку базы в файл dt
- 2Завершите сеансы пользователей и отключите регламентные задания
- 3Откройте конфигуратор: Администрирование → Тестирование и исправление
- 4Отметьте «Проверка ссылочной целостности», выберите режим обработки битых ссылок
- 5Нажмите «Выполнить» и дождитесь окончания
- 6Изучите протокол: какие объекты созданы или очищены
Способ 2: поиск и удаление через типовые обработки
Во многих типовых конфигурациях есть встроенные механизмы. В БСП-конфигурациях доступна обработка «Поиск и удаление дублей», а также «Удаление помеченных объектов» («Администрирование» → «Обслуживание»). Именно незавершённое удаление помеченных — частый источник битых ссылок: объект удалили без контроля, а ссылки на него остались.
Откройте «Удаление помеченных объектов» и выполните поиск. Если обработка показывает, что объект используется, но место использования открывается с ошибкой «Объект не найден» — это и есть битая связь. В таком случае сначала исправьте место использования (очистите реквизит вручную), затем повторите удаление.
Для массового поиска битых ссылок по всей базе удобны внешние обработки «Поиск битых ссылок» — они сканируют метаданные и показывают список: объект, реквизит, GUID несуществующей ссылки. Используйте обработки из проверенных источников и всегда сначала запускайте их на копии базы.
Способ 3: ручное исправление и программная очистка
Если битых ссылок немного, проще исправить их вручную. Откройте документ или элемент справочника, найдите поле с надписью «Объект не найден» и очистите его или выберите корректное значение. После этого перепроведите документ, чтобы движения пересчитались.
Для регистров сведений и накопления ручное редактирование делается через форму записей регистра или через движения документа-регистратора. Если регистратор сам битый, записи проще удалить программно.
Программный способ — через запрос с конструкцией, проверяющей существование ссылки. Пример для поиска битых ссылок в реквизите «Контрагент» документов:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РеализацияТоваровУслуг.Ссылка КАК Документ
|ИЗ
| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|ГДЕ
| РеализацияТоваровУслуг.Контрагент ЕСТЬ НЕ NULL
| И РеализацияТоваровУслуг.Контрагент.Ссылка ЕСТЬ NULL";
Результат = Запрос.Выполнить().Выбрать();
Пока Результат.Следующий() Цикл
Сообщить("Битая ссылка в: " + Результат.Документ);
КонецЦикла;Приём основан на свойстве запросов 1С: если ссылка битая, обращение к реквизиту через точку возвращает NULL. Найденные документы дальше обрабатывают: очищают реквизит через Объект.Контрагент = Неопределено; с последующей записью в режиме обмена данными или в обычном режиме с проведением.
Восстановление объекта вместо удаления ссылки
Не всегда правильно очищать ссылку — иногда нужно вернуть сам объект. Типичный случай: контрагент или номенклатура удалены по ошибке, а на них завязаны проведённые документы. Если известен GUID из текста «Объект не найден», объект можно создать заново с тем же идентификатором — тогда все ссылки снова станут рабочими.
Это делается программно: GUID из строки вида «8b4a...» преобразуется в уникальный идентификатор, создаётся новый объект нужного типа с этим идентификатором, после чего заполняется наименованием и реквизитами. Такой приём используют и обработки восстановления удалённых объектов. После восстановления проверьте, что документы по этому объекту проводятся, а отчёты показывают осмысленные данные.
Как выбрать действие
Проверка результата и типичные ошибки
После исправлений повторите диагностику: запустите ТиИ в режиме «только проверка» или обработку поиска битых ссылок — список должен быть пустым. Затем сформируйте ключевые отчёты (оборотно-сальдовую ведомость, отчёты по складу, взаиморасчёты) и сравните итоги с данными до исправления: они не должны измениться без объяснимой причины.
Если база участвует в обменах, выполните тестовую синхронизацию и проверьте, что ошибки сопоставления объектов исчезли. Также попросите пользователей открыть проблемные документы и убедиться, что надпись «Объект не найден» пропала.
Как предотвратить появление битых ссылок
Главное правило — удалять объекты только через штатное «Удаление помеченных объектов» с контролем ссылочной целостности. Прямое удаление через обработки в обход контроля — основной источник проблемы. Ограничьте права на интерактивное удаление: большинству пользователей достаточно установки пометки удаления.
Регулярно (например, раз в месяц или перед закрытием периода) запускайте проверку ссылочной целостности. Следите за журналом регистрации на предмет ошибок обменов — незавершённые загрузки быстро накапливают «сиротские» ссылки. При доработках конфигурации избегайте кода, удаляющего объекты методом Удалить() без проверки ссылок.
Что важно запомнить
Битая ссылка убирается тремя путями: очисткой реквизита, восстановлением объекта по GUID или удалением записи. Перед любыми действиями — резервная копия, после — повторная проверка целостности и контроль итогов отчётов. Профилактика — удаление только через штатный механизм с контролем ссылок.
Частые вопросы
Откуда берётся надпись «Объект не найден» с кодом в скобках?
Это отображение ссылки, GUID которой не найден в соответствующей таблице базы. Число и шестнадцатеричный код — внутреннее представление ссылки: по коду типа и GUID можно определить, объект какого вида был удалён, и при необходимости восстановить его с тем же идентификатором.
Можно ли убрать битые ссылки без конфигуратора?
Да. Небольшое количество исправляется вручную в режиме 1С:Предприятие — очисткой поля в документе или справочнике. Для массового поиска подойдут внешние обработки, запускаемые в пользовательском режиме. Конфигуратор нужен только для ТиИ и глубокой диагностики.
Опасно ли выбирать в ТиИ режим «создавать объекты»?
Режим создаёт пустые объекты-заглушки с нужным GUID, чтобы ссылки перестали быть битыми. Это безопаснее удаления, но заглушки потом нужно разобрать: заполнить данными или корректно удалить через контроль ссылок. Оставленные «пустышки» засоряют справочники и отчёты.
Почему битые ссылки появляются снова после исправления?
Чаще всего причина в обмене данными: ссылка приходит из другой базы, где объект существует, а в текущую он ещё не загрузился или был удалён. Проверьте протоколы обмена, настройки сопоставления и убедитесь, что удаление объектов согласовано во всех базах-участницах обмена.
Влияют ли битые ссылки на скорость работы базы?
Напрямую — слабо, но косвенно да: запросы с соединениями по битым ссылкам возвращают лишние строки с NULL, отчёты требуют дополнительной фильтрации, а обмены тратят время на ошибки сопоставления. Регулярная чистка снижает объём «мусорных» данных и упрощает поддержку.
Что делать, если битая ссылка в закрытом отчётном периоде?
Не удаляйте и не очищайте записи напрямую — это изменит итоги сданной отчётности. Зафиксируйте проблему, согласуйте с главным бухгалтером способ исправления: либо корректировкой в текущем периоде, либо восстановлением объекта по GUID, что не меняет итогов, а лишь возвращает отображение данных.