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

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

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

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

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

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

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

Что такое ссылка и GUID в 1С

Каждый объект базы (элемент справочника, документ, план счетов и т.д.) имеет внутренний уникальный идентификатор — GUID, строку вида «8b3f4a2c-1d5e-4f6a-9b0c-2d3e4f5a6b7c». На его основе формируется ссылка — типизированное значение, которое однозначно указывает на объект конкретного типа.

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

Как получить ссылку на объект, который виден в списке

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

В тонком клиенте навигационную ссылку можно открыть через меню «Файл → Открыть» или вставив её в адресную строку окна запуска. Это удобно, когда коллега прислал ссылку в письме и нужно быстро открыть тот же документ.

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

Поиск по GUID через встроенный язык

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

Ид = Новый УникальныйИдентификатор("8b3f4a2c-1d5e-4f6a-9b0c-2d3e4f5a6b7c");

Ссылка = Документы.РеализацияТоваровУслуг.ПолучитьСсылку(Ид);

Если Ссылка.ПолучитьОбъект() = Неопределено Тогда

Сообщить("Объект не найден — ссылка битая");

КонецЕсли;

Обращение к объекту через ПолучитьОбъект() или запрос по ссылке покажет, существует ли он реально. Если объекта нет, запрос вернёт пустой результат, а ПолучитьОбъект() — Неопределено. Это стандартная проверка на битую ссылку.

Когда тип объекта неизвестен, приходится перебирать все ссылочные таблицы: справочники, документы, планы видов характеристик и т.д. Для этого по метаданным строят цикл и для каждого типа выполняют запрос с условием «Ссылка = &Ссылка».

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

Навигационная ссылка и поиск через неё

Навигационная ссылка вида «e1cib/data/Справочник.Номенклатура?ref=80e500155d0a4a3f11ec...» уже содержит тип объекта, поэтому по ней искать проще всего. В коде её можно преобразовать в обычную ссылку функцией ЗначениеИзСтрокиВнутр или через штатные механизмы обмена ссылками.

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

Универсальные обработки поиска по ссылке

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

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

Способы поиска по ссылке

ПолучитьСсылку + запрос

Быстро и точно, но нужно знать тип объекта и уметь выполнять код

Универсальная обработка по GUID

Находит объект без знания типа; требует загрузки внешней обработки и прав

Навигационная ссылка

Не требует кода вообще; работает только если ссылка получена из той же базы

Команда «Найти использование»

Показывает, где объект используется; не ищет по GUID, а работает от открытого объекта

Поиск битых ссылок и объектов «Объект не найден»

Строка вида «<Объект не найден> (123:8b3f...)» в списке означает, что где-то в базе хранится ссылка на удалённый объект. Чтобы найти, где именно она лежит, скопируйте GUID из текста и выполните поиск по всем таблицам универсальной обработкой или запросом к реквизитам ссылочных типов.

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

Типичные ошибки при поиске по ссылке

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

Также пользователи путают поиск «по ссылке» и поиск «по строке»: полнотекстовый поиск в 1С не ищет по GUID, для этого нужны специальные инструменты.

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

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

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

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

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

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

Ссылка получена через ПолучитьСсылку
Норма

Запрос по ссылке возвращает объект

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

Запрос пустой — объект удалён или GUID неверный

Открытый по ссылке объект
Норма

Номер, дата и реквизиты совпадают с источником

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

Открылся другой объект — GUID преобразован с ошибкой

GUID из навигационной ссылки
Норма

Применена функция перестановки байт

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

GUID вставлен как есть — поиск не сработает

Часто задаваемые вопросы

Можно ли найти объект по GUID, не зная его типа?

Да, но только перебором: внешняя обработка или код проходит по всем ссылочным типам метаданных (справочники, документы, планы счетов и т.д.) и для каждого выполняет запрос с условием по ссылке, построенной из GUID. Это медленнее прямого обращения, но надёжно.

Чем навигационная ссылка отличается от обычной ссылки?

Обычная ссылка — значение внутри базы, привязанное к типу объекта. Навигационная — текстовая строка формата e1cib/data/..., предназначенная для открытия объекта в клиенте или передачи другому пользователю. Её можно вставить в браузер, но в запросе она напрямую не используется.

Почему ПолучитьСсылку возвращает значение, а объекта в базе нет?

Метод ПолучитьСсылку не обращается к данным — он просто конструирует ссылку из GUID. Существование объекта проверяется отдельно: запросом по ссылке или вызовом ПолучитьОбъект(), который вернёт Неопределено для отсутствующего объекта.

Как найти все места, где используется конкретный элемент справочника?

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

Что делать, если в списке отображается «Объект не найден»?

Это битая ссылка на удалённый объект. Одиночные случаи разбирают вручную: находят запись по GUID и заменяют или очищают реквизит. При массовых случаях запускают тестирование и исправление с проверкой ссылочной целостности — предварительно сделав резервную копию базы.

Можно ли искать по ссылке через полнотекстовый поиск?

Нет. Полнотекстовый поиск индексирует строковые, числовые и даты в реквизитах, но не сами ссылки и не GUID. Для поиска по идентификатору используйте ПолучитьСсылку, запросы или специализированные обработки.

Итог

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

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