Администрирование · 10 мин
Как в 1С искать объект по ссылке
Как в 1С найти объект по ссылке: поиск по GUID, навигационной ссылке, функция «Найти по ссылке» в конфигураторе и методы встроенного языка.
В 1С ссылка — это уникальный идентификатор объекта в информационной базе: документа, элемента справочника, записи регистра. Поиск по ссылке нужен, когда известен GUID объекта, но неизвестно, что это за объект и в какой таблице он хранится. Типичные ситуации: разбор ошибок вида «Объект не найден (GUID)», анализ битых ссылок, отладка обмена данными, поиск документа по идентификатору из лога интеграции.
Способов несколько: штатная обработка «Поиск и удаление дублей», универсальные обработки «Поиск по GUID», программные методы встроенного языка, навигационная ссылка из интерфейса и прямые запросы к базе. Выбор зависит от того, есть ли у вас доступ к конфигуратору, какая версия платформы и что именно известно — GUID, навигационная ссылка или внешний идентификатор из другой системы.
Ниже разобраны рабочие приёмы для пользовательского режима и для разработчика, а также способы проверить, что найден именно тот объект, и что делать, если объект по ссылке не существует.
Что такое ссылка и GUID в 1С
Каждый объект базы (элемент справочника, документ, план счетов и т.д.) имеет внутренний уникальный идентификатор — GUID, строку вида «8b3f4a2c-1d5e-4f6a-9b0c-2d3e4f5a6b7c». На его основе формируется ссылка — типизированное значение, которое однозначно указывает на объект конкретного типа.
Важно различать три вещи: сам GUID (просто строка), ссылку (GUID + тип объекта) и навигационную ссылку (строка вида «e1cib/data/Документ.РеализацияТоваровУслуг?ref=...», которую можно вставить в браузер или передать коллеге). По одному GUID без типа объекта найти объект сложнее — придётся перебирать таблицы.
Как получить ссылку на объект, который виден в списке
Если объект открыт в пользовательском режиме, самый простой путь — команда «Получить ссылку» (или «Ещё → Получить ссылку» в зависимости от конфигурации). Система покажет навигационную ссылку и внешнюю ссылку для веб-клиента. Эту строку можно передать другому пользователю: он вставит её в браузер или в диалог открытия и попадёт прямо в карточку объекта.
В тонком клиенте навигационную ссылку можно открыть через меню «Файл → Открыть» или вставив её в адресную строку окна запуска. Это удобно, когда коллега прислал ссылку в письме и нужно быстро открыть тот же документ.
- 1Скопируйте навигационную ссылку вида e1cib/data/... из письма или сообщения
- 2В тонком клиенте откройте меню «Файл» → «Открыть» и вставьте ссылку
- 3Если работаете в веб-клиенте — дополните ссылку адресом базы и откройте в браузере
- 4Проверьте, что открылся именно нужный объект: сверьте номер, дату и организацию
Поиск по GUID через встроенный язык
Если известны GUID и тип объекта, ссылку получают методом ПолучитьСсылку менеджера соответствующего объекта. Это самый быстрый и точный способ — он не выполняет поиск по базе, а конструирует ссылку напрямую.
Ид = Новый УникальныйИдентификатор("8b3f4a2c-1d5e-4f6a-9b0c-2d3e4f5a6b7c");
Ссылка = Документы.РеализацияТоваровУслуг.ПолучитьСсылку(Ид);
Если Ссылка.ПолучитьОбъект() = Неопределено Тогда
Сообщить("Объект не найден — ссылка битая");
КонецЕсли;
Обращение к объекту через ПолучитьОбъект() или запрос по ссылке покажет, существует ли он реально. Если объекта нет, запрос вернёт пустой результат, а ПолучитьОбъект() — Неопределено. Это стандартная проверка на битую ссылку.
Когда тип объекта неизвестен, приходится перебирать все ссылочные таблицы: справочники, документы, планы видов характеристик и т.д. Для этого по метаданным строят цикл и для каждого типа выполняют запрос с условием «Ссылка = &Ссылка».
Ид = Новый УникальныйИдентификатор(СтрокаGUID);
Для Каждого Менеджер Из Документы Цикл
Ссылка = Менеджер.ПолучитьСсылку(Ид);
Запрос = Новый Запрос("ВЫБРАТЬ Ссылка ИЗ " + Менеджер + " ГДЕ Ссылка = &С");
КонецЦикла;Навигационная ссылка и поиск через неё
Навигационная ссылка вида «e1cib/data/Справочник.Номенклатура?ref=80e500155d0a4a3f11ec...» уже содержит тип объекта, поэтому по ней искать проще всего. В коде её можно преобразовать в обычную ссылку функцией ЗначениеИзСтрокиВнутр или через штатные механизмы обмена ссылками.
В пользовательском режиме навигационную ссылку просто вставляют в диалог открытия. Если ссылка пришла из другой базы (например, из копии или из связанной системы), учтите: GUID объекта в разных базах может совпадать (при обмене) или отличаться (при независимом создании). Совпадение GUID в двух базах — признак того, что объекты синхронизированы.
Универсальные обработки поиска по ссылке
Для баз без доработок удобны внешние обработки «Поиск объекта по GUID» — они перебирают все ссылочные типы метаданных и показывают, где встречается идентификатор. Такие обработки есть в открытых источниках и входят в состав стандартных инструментов разработчика (ИР).
Штатная обработка «Поиск и удаление дублей» (раздел «Администрирование → Обслуживание» в типовых конфигурациях) решает смежную задачу: находит объекты, ссылающиеся на один и тот же элемент, и заменяет ссылки. А для поиска всех мест использования объекта служит команда «Найти использование» (или «Ссылки на объект») в меню «Ещё» формы элемента — она показывает, где данный объект задействован.
Способы поиска по ссылке
Быстро и точно, но нужно знать тип объекта и уметь выполнять код
Находит объект без знания типа; требует загрузки внешней обработки и прав
Не требует кода вообще; работает только если ссылка получена из той же базы
Показывает, где объект используется; не ищет по GUID, а работает от открытого объекта
Поиск битых ссылок и объектов «Объект не найден»
Строка вида «<Объект не найден> (123:8b3f...)» в списке означает, что где-то в базе хранится ссылка на удалённый объект. Чтобы найти, где именно она лежит, скопируйте GUID из текста и выполните поиск по всем таблицам универсальной обработкой или запросом к реквизитам ссылочных типов.
Массовую чистку выполняют через «Тестирование и исправление» информационной базы (режим конфигуратора) с включённой проверкой ссылочной целостности. Перед запуском обязательно сделайте резервную копию: операция может удалять записи с битыми ссылками без возможности отката.
Типичные ошибки при поиске по ссылке
Самая частая проблема — попытка использовать GUID из навигационной ссылки напрямую. Байты в ней переставлены, поэтому объект «не находится». Вторая ошибка — поиск GUID из внешней системы в базе, где объект был создан независимо: идентификаторы просто не совпадают.
Также пользователи путают поиск «по ссылке» и поиск «по строке»: полнотекстовый поиск в 1С не ищет по GUID, для этого нужны специальные инструменты.
Как проверить результат поиска
Найденный объект нужно верифицировать: откройте его и сверьте ключевые реквизиты (номер, дату, наименование, организацию) с источником, откуда пришла ссылка. Если объект найден по GUID из лога обмена, убедитесь, что это именно тот узел обмена и та выгрузка.
Если поиск дал пустой результат, проверьте: правильно ли преобразован GUID, тот ли это тип объекта, не удалён ли объект (тогда ссылка битая) и нет ли разделения данных — в сервисных базах объект может быть в другой области.
Как проверить результат
Запрос по ссылке возвращает объект
Запрос пустой — объект удалён или GUID неверный
Номер, дата и реквизиты совпадают с источником
Открылся другой объект — GUID преобразован с ошибкой
Применена функция перестановки байт
GUID вставлен как есть — поиск не сработает
Часто задаваемые вопросы
Можно ли найти объект по GUID, не зная его типа?
Да, но только перебором: внешняя обработка или код проходит по всем ссылочным типам метаданных (справочники, документы, планы счетов и т.д.) и для каждого выполняет запрос с условием по ссылке, построенной из GUID. Это медленнее прямого обращения, но надёжно.
Чем навигационная ссылка отличается от обычной ссылки?
Обычная ссылка — значение внутри базы, привязанное к типу объекта. Навигационная — текстовая строка формата e1cib/data/..., предназначенная для открытия объекта в клиенте или передачи другому пользователю. Её можно вставить в браузер, но в запросе она напрямую не используется.
Почему ПолучитьСсылку возвращает значение, а объекта в базе нет?
Метод ПолучитьСсылку не обращается к данным — он просто конструирует ссылку из GUID. Существование объекта проверяется отдельно: запросом по ссылке или вызовом ПолучитьОбъект(), который вернёт Неопределено для отсутствующего объекта.
Как найти все места, где используется конкретный элемент справочника?
Откройте элемент и в меню «Ещё» выберите команду поиска ссылок на объект (в типовых — «Найти использование» или «Ссылки на объект»). Система покажет список документов и других объектов, где элемент указан в реквизитах или табличных частях.
Что делать, если в списке отображается «Объект не найден»?
Это битая ссылка на удалённый объект. Одиночные случаи разбирают вручную: находят запись по GUID и заменяют или очищают реквизит. При массовых случаях запускают тестирование и исправление с проверкой ссылочной целостности — предварительно сделав резервную копию базы.
Можно ли искать по ссылке через полнотекстовый поиск?
Нет. Полнотекстовый поиск индексирует строковые, числовые и даты в реквизитах, но не сами ссылки и не GUID. Для поиска по идентификатору используйте ПолучитьСсылку, запросы или специализированные обработки.
Что важно запомнить
Поиск по ссылке сводится к трём приёмам: ПолучитьСсылку при известном типе, универсальная обработка при неизвестном типе и навигационная ссылка для открытия объекта без кода. GUID из навигационной ссылки требует преобразования байт, а существование объекта всегда проверяйте запросом, а не самим фактом получения ссылки.