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

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

Как найти идентификатор объекта в 1С

Как найти уникальный идентификатор объекта в 1С: через запрос, встроенный язык, стандартные инструменты и обработки. Способы получить GUID ссылки и решить обратную задачу.

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

Знать GUID и уметь его находить нужно в нескольких типовых ситуациях: при настройке обмена данными между конфигурациями, при поиске «битых» ссылок (записей вида «Объект не найден»), при поиске объекта по идентификатору из внешней системы, а также при отладке интеграций через веб-сервисы и HTTP-API. Ниже разобраны все рабочие способы — от встроенного языка до анализа ссылки в браузере.

Что такое GUID объекта и где он хранится

GUID (глобально уникальный идентификатор) присваивается объекту в момент первой записи в базу. Внутри 1С он хранится в системном поле ссылки, недоступном для редактирования пользователем. Два объекта в одной базе не могут иметь одинаковый GUID, а вероятность совпадения идентификаторов в разных базах практически равна нулю.

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

Как получить GUID через встроенный язык 1С

Самый прямой способ — метод УникальныйИдентификатор(), доступный у любой ссылки. Он возвращает значение типа «УникальныйИдентификатор», а оборачивание в Строка() даёт читаемое текстовое представление.

ГУИД = Строка(СсылкаНаОбъект.УникальныйИдентификатор());

Сообщить(ГУИД);

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

bsl
Запрос = Новый Запрос("ВЫБРАТЬ Ссылка ИЗ Справочник.Номенклатура ГДЕ Код = &Код");
Запрос.УстановитьПараметр("Код", "00-000001");
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
    Сообщить(Строка(Выборка.Ссылка.УникальныйИдентификатор()));
КонецЕсли;

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

Как узнать GUID через консоль запросов

Если нет возможности писать код, используйте консоль запросов — типовую или внешнюю обработку. В языке запросов 1С есть функция УНИКАЛЬНЫЙИДЕНТИФИКАТОР(), которая принимает ссылку и возвращает её GUID. Это удобно для пакетного вывода идентификаторов по отбору.

ВЫБРАТЬ

Номенклатура.Наименование,

УНИКАЛЬНЫЙИДЕНТИФИКАТОР(Номенклатура.Ссылка) КАК ГУИД

ИЗ

Справочник.Номенклатура КАК Номенклатура

Результат можно скопировать в Excel или выгрузить таблицей. Учтите, что функция работает только с полями ссылочного типа — передать в неё строку или число нельзя, запрос завершится с ошибкой.

Как найти GUID без программирования

Через навигационную ссылку объекта

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

Через внешние обработки

Существуют распространённые бесплатные обработки «Поиск GUID», «GUID <-> Ссылка» и подобные. Они позволяют вставить ссылку и получить идентификатор, или наоборот — вставить GUID и найти объект во всех ссылочных таблицах базы. Такие обработки запускаются через «Файл → Открыть» и не требуют изменения конфигурации.

Сравнение способов

Встроенный язык

Точно и гибко, подходит для пакетной обработки. Требует права на выполнение кода и минимальных навыков.

Консоль запросов

Удобна для выгрузки GUID списком по отбору. Нужна сама консоль и поддержка функции платформой.

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

Доступна любому пользователю без прав разработчика. Идентификатор требует перестановки байтов.

Внешние обработки

Решают и прямую, и обратную задачу без кода. Нужно доверять источнику обработки.

Как найти объект по известному GUID

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

Ид = Новый УникальныйИдентификатор("a1b2c3d4-e5f6-7890-abcd-ef1234567890");

Ссылка = Справочники.Номенклатура.ПолучитьСсылку(Ид);

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

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

КонецЕсли;

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

Порядок поиска объекта по GUID
  1. 1
    Определите, известен ли тип объекта (справочник, документ и т.д.)
  2. 2
    При известном типе выполните ПолучитьСсылку(Новый УникальныйИдентификатор(GUID)) через соответствующий менеджер
  3. 3
    Проверьте существование объекта запросом или попыткой получить объект
  4. 4
    Если тип неизвестен — запустите обработку поиска GUID по всем ссылочным таблицам
  5. 5
    Если объект не найден нигде — это «битая ссылка», зафиксируйте GUID для восстановления или очистки

Типичные ошибки и ограничения

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

Также помните, что при выгрузке в XML через стандартный обмен GUID сериализуется в текстовом виде, а при загрузке в пустую базу объекту может быть назначен тот же идентификатор — это нормальный механизм переноса. Но вручную присваивать GUID через УстановитьСсылкуНового() стоит только при полном понимании последствий: конфликт идентификаторов при последующем обмене приведёт к перезаписи объектов.

Типичные ошибки
01
Поиск объекта по коду вместо GUID — после перенумерации связь теряется и появляются дубли
02
Использование GUID из навигационной ссылки без перестановки байтов — объект не находится
03
Попытка передать строку в функцию УНИКАЛЬНЫЙИДЕНТИФИКАТОР() запроса — ошибка выполнения
04
Ручное назначение GUID без резервной копии — риск перезаписи данных при синхронизации

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

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

При массовой выгрузке GUID для обмена сверьте несколько случайных записей: сравните идентификатор в выгрузке с тем, что показывает метод УникальныйИдентификатор() в базе-источнике. Совпадение по выборочным позициям — достаточный признак корректной выгрузки.

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

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

Формат GUID
Норма

36 символов, 4 дефиса, только 0-9 и a-f

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

Другая длина, посторонние символы, русские буквы

Обратный поиск
Норма

По GUID находится именно тот объект

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

Объект не найден или найден другой элемент

Совпадение при обмене
Норма

Объект сопоставляется, дубли не создаются

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

После синхронизации появляются дубли элементов

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

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

Нет. Идентификатор назначается один раз при первой записи и остаётся неизменным до удаления объекта. Изменение кода, наименования, номера документа и любых реквизитов на GUID не влияет.

Могут ли два объекта в разных базах иметь одинаковый GUID?

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

Что означает запись «Объект не найден» с набором символов?

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

Можно ли узнать GUID записи регистра сведений?

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

Как получить GUID объекта из внешней системы без доступа к базе 1С?

Если в базе опубликован стандартный OData-интерфейс или HTTP-сервис, идентификатор возвращается в поле Ref_Key (OData) или в ответе сервиса. Без опубликованных интерфейсов получить GUID снаружи нельзя — потребуется помощь администратора базы.

Итог

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

GUID объекта получают методом УникальныйИдентификатор() в коде, функцией УНИКАЛЬНЫЙИДЕНТИФИКАТОР() в запросе или через навигационную ссылку с перестановкой байтов. Обратный поиск выполняется через ПолучитьСсылку() с обязательной проверкой существования объекта. Любые ручные манипуляции со ссылками — только на копии базы.