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

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

Как найти объект по ссылке в 1С

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

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

Задача возникает в нескольких типовых ситуациях: разбор ошибок обмена данными, поиск «битых» ссылок после удаления объектов, анализ протоколов загрузки, проверка данных по идентификатору из внешней системы. В зависимости от того, что у вас есть на руках — строка вида «e1cib/...», GUID из 32 символов или ссылочное значение в коде — подходят разные инструменты.

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

Что такое ссылка в 1С и какие виды встречаются

Под «ссылкой» в контексте 1С обычно понимают одно из трёх. Первое — ссылочное значение в базе: типизированный указатель на конкретный объект (например, ДокументСсылка.РеализацияТоваровУслуг). Второе — уникальный идентификатор (GUID): строка из 36 символов вида 8-4-4-4-12, которая однозначно определяет объект внутри информационной базы. Третье — навигационная ссылка вида e1cib/data/Документ.РеализацияТоваровУслуг?ref=..., которую программа формирует для открытия объекта в клиенте.

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

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

Как открыть объект по навигационной ссылке

Если у вас есть строка вида e1cib/data/Справочник.Номенклатура?ref=..., объект открывается напрямую. В тонком клиенте: меню «Файл → Перейти по ссылке» (в ряде конфигураций пункт доступен также через «Ещё» в открытой форме). Вставьте ссылку и подтвердите — программа откроет форму объекта.

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

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

Порядок действий
  1. 1
    Скопируйте навигационную ссылку целиком, начиная с e1cib/
  2. 2
    Откройте меню Файл → Перейти по ссылке
  3. 3
    Вставьте ссылку в поле и нажмите «Перейти»
  4. 4
    Проверьте, что открылась форма именно того объекта: сверьте номер, дату или наименование
  5. 5
    Если объект не найден — убедитесь, что вы в правильной информационной базе

Поиск объекта по уникальному идентификатору (GUID)

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

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

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

bsl
ИД = Новый УникальныйИдентификатор("12345678-1234-1234-1234-123456789012");
Ссылка = Документы.РеализацияТоваровУслуг.ПолучитьСсылку(ИД);
Если Ссылка.ПолучитьОбъект() <> Неопределено Тогда
    Сообщить("Объект найден: " + Ссылка);
Иначе
    Сообщить("Объект с таким GUID отсутствует в базе");
КонецЕсли;

Поиск ссылок на объект по всей базе

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

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

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

Поиск «битых» ссылок

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

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

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

Типичные ошибки
01
Поиск GUID из рабочей базы в архивной копии или наоборот — идентификаторы баз не совпадают, поиск ничего не даст
02
Удаление объектов с битыми ссылками без анализа — теряются данные, которые можно было восстановить из обмена или копии
03
Получение объекта через ПолучитьОбъект() без проверки на Неопределено — код падает с ошибкой на несуществующей ссылке
04
Запуск тестирования и исправления с включённым автоматическим исправлением без резервной копии — изменения необратимы

Поиск через запрос и консоль запросов

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

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

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

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

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

Есть навигационная ссылка e1cib/data/...Используйте Файл → Перейти по ссылке — это самый быстрый способ
Есть только GUID и известен тип объектаПолучите ссылку кодом через ПолучитьСсылку и проверьте существование объекта
Есть GUID, но тип объекта неизвестенИспользуйте универсальную обработку поиска по GUID с перебором метаданных
Нужно найти, где объект используетсяЗапустите поиск ссылок на объект в конфигураторе или сервис в разделе Администрирование
В данных встречается «<Объект не найден>»Запустите тестирование и исправление с проверкой ссылочной целостности на копии базы

Ограничения, права и типичные проблемы

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

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

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

Итог

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

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

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

Можно ли найти объект по ссылке, не заходя в конфигуратор?

Да. Навигационная ссылка открывается прямо в пользовательском режиме через «Файл → Перейти по ссылке». Для поиска по GUID без конфигуратора подойдут внешние обработки (консоль кода, поиск по уникальному идентификатору), запускаемые в режиме 1С:Предприятие при наличии права на открытие внешних обработок.

Почему по корректной ссылке открывается «Объект не найден»?

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

Как узнать GUID открытого объекта?

В коде — метод Ссылка.УникальныйИдентификатор(). Без кода: скопируйте навигационную ссылку («Ещё → Получить ссылку») — идентификатор содержится в параметре ref в закодированном виде. Некоторые обработки инструментов разработчика показывают GUID прямо в форме объекта.

Меняется ли GUID при переносе объекта между базами?

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

Опасно ли запускать «Тестирование и исправление» для поиска битых ссылок?

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

Как найти ссылку, если известен только фрагмент строки «Объект не найден (123:abcd...)»?

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