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