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

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

Неразрешимые ссылки на объекты метаданных в 1С: причины и способы исправления

Что такое неразрешимые ссылки на объекты метаданных в 1С, почему они возникают и как исправить ошибку через конфигуратор, тестирование и исправление базы.

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

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

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

Что скрывается за ошибкой и как распознать битую ссылку

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

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

Типичные причины появления неразрешимых ссылок

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

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

  • Удаление объектов метаданных без анализа ссылок на них.
  • Обмен между базами с разными версиями конфигураций.
  • Удаление данных напрямую запросами, минуя платформу.
  • Аварийное завершение работы сервера СУБД во время записи.
  • Загрузка данных из внешних файлов с «жёстко прописанными» ссылками.

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

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

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

Исправление через «Тестирование и исправление»

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

Для файловой базы процедура требует монопольного доступа — все пользователи должны выйти. Для клиент-серверной часть проверок выполняется в фоне, но полная проверка целостности также требует блокировки сеансов. На больших базах процесс занимает от десятков минут до нескольких часов, поэтому планируйте его на нерабочее время.

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

Исправление неразрешимых ссылок в метаданных конфигурации

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

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

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

Точечная чистка битых ссылок в данных

Когда глобальное тестирование нежелательно (например, база большая, а проблема локальна), битые ссылки ищут запросом. Универсальный приём: соединить таблицу с таблицей справочника и отобрать строки, где соединение дало NULL, то есть ссылка не разрешилась. Найденные записи либо очищают (присваивают пустую ссылку), либо удаляют, если речь о регистрах.

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

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

Проверка результата и профилактика

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

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

Контрольные точки

Как проверить результат

Отчёты и документы, где была ошибка
Норма

Открываются без сообщений «Объект не найден»

Тревожный признак

Ошибка воспроизводится на тех же данных

Обновление конфигурации базы данных
Норма

Завершается без перечня неразрешимых ссылок

Тревожный признак

В сообщениях снова список проблемных объектов

Повторная проверка целостности
Норма

Проверка проходит без фиксации нарушений

Тревожный признак

Снова найдены битые ссылки

Итог

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

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

FAQ

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

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

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

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

Ошибка появляется только в одном отчёте. Это битые ссылки?

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

Тестирование и исправление зависает на большой базе. Что делать?

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

Обмен выгружает в приёмник объекты, которых там нет. Как быть?

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

Как найти, где в конфигурации используется объект перед его удалением?

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