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

Разработка и Конфигурация · 9 мин

Как посмотреть GUID объекта в 1С

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

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

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

Что такое GUID в 1С и когда он нужен

GUID в терминологии 1С — это значение типа «УникальныйИдентификатор», строка из 36 символов вида b2c4d8f1-3a5e-4b7c-9d1e-6f8a0c2e5b3d. Платформа генерирует его автоматически при создании объекта и хранит вместе со ссылкой. Один и тот же элемент справочника в разных информационных базах, созданных обменом, будет иметь одинаковый GUID — это и обеспечивает сопоставление данных.

На практике GUID требуется в типовых ситуациях: разбор ошибок обмена, когда в сообщении фигурирует только идентификатор; поиск объекта, на который ссылается «битая» ссылка вида «Объект не найден (77:b2c4...)»; настройка интеграций с внешними системами; восстановление удалённого объекта из другой базы с сохранением ссылок.

Способ 1. Узнать GUID через встроенный язык

Универсальный метод — получить идентификатор программно. Для этого подойдёт любая консоль кода (внешняя обработка «Консоль кода», инструменты разработчика или самописная обработка с полем ввода ссылки). Код минимален:

// Параметр Ссылка — ссылка на объект

Сообщить(Ссылка.УникальныйИдентификатор());

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

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

Способ 2. Посмотреть GUID через «Получить ссылку» в толстом клиенте

В толстом клиенте (обычное приложение) есть штатный приём без программирования. Откройте объект, нажмите кнопку «Перейти» → «Получить ссылку» или сочетание клавиш Ctrl+F11. В появившемся окне будет строка вида e1cib/data/Справочник.Номенклатура?ref=b2c4d8f13a5e4b7c9d1e6f8a0c2e5b3d — фрагмент после ref= и есть GUID в шестнадцатеричном представлении без дефисов.

Важный нюанс: это представление отличается от привычного формата с дефисами. Чтобы привести его к стандартному виду, нужно разбить строку на группы 8-4-4-4-12 и переставить байты внутри групп в обратном порядке. Проще всего сделать это программно:

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

В тонком клиенте и веб-клиенте кнопка «Получить ссылку» тоже работает (Ctrl+F11 либо меню «Ещё»), и навигационная ссылка содержит тот же идентификатор после параметра ref.

Способ 3. Найти GUID через конфигуратор и SQL

Если доступ к базе есть только на уровне СУБД, GUID хранится в поле _IDRRef таблиц ссылочных объектов (например, _Reference29 для конкретного справочника). В Microsoft SQL Server идентификатор хранится как binary(16), и при выборке его байты тоже переставлены — прямое сравнение со строкой GUID не сработает без преобразования.

Прямая работа с таблицами СУБД — крайняя мера. Запросы только на чтение относительно безопасны, но любые изменения данных напрямую в SQL нарушают лицензионные ограничения и почти гарантированно разрушают целостность базы. Для поиска GUID всегда предпочтительнее штатные средства платформы.

Способ 4. Готовые обработки для просмотра GUID

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

Порядок действий типовой: открыть обработку через «Файл → Открыть», в поле типа «Ссылка» выбрать нужный объект, нажать кнопку получения идентификатора. Результат копируется в буфер обмена. Дополнительный плюс — обработки сразу показывают, существует ли объект, или ссылка «битая».

Порядок действий
  1. 1
    Откройте консоль кода или обработку с полем ввода ссылки
  2. 2
    Выберите объект (элемент справочника, документ)
  3. 3
    Выполните: Сообщить(Ссылка.УникальныйИдентификатор())
  4. 4
    Скопируйте полученную строку GUID
  5. 5
    Проверьте объект обратным поиском по GUID

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

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

Ид = Новый УникальныйИдентификатор("b2c4d8f1-3a5e-4b7c-9d1e-6f8a0c2e5b3d");

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

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

Сообщить("Объект отсутствует в базе");

Иначе

Сообщить(Ссылка);

КонецЕсли;

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

Типичные ошибки
01
Путать GUID с кодом или номером объекта — код может повторяться и меняться, GUID нет
02
Копировать идентификатор из строки ref= без перестановки байт — поиск по такому GUID ничего не найдёт
03
Использовать ПолучитьСсылку без проверки существования объекта — создаётся риск записи «пустышки» с чужим GUID
04
Менять GUID вручную при обмене без понимания сопоставления — ссылки в базе-приёмнике разъедутся

Проверка результата и ограничения

Контроль правильности простой: полученный GUID должен иметь формат 8-4-4-4-12 шестнадцатеричных символов, а обратный поиск по нему должен возвращать именно тот объект, с которого начинали. Если обратный поиск возвращает другой объект или ничего — значит, идентификатор был скопирован из навигационной ссылки без преобразования байт.

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

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

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

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

36 символов с дефисами, группы 8-4-4-4-12

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

Строка из 32 символов без дефисов — это ref-представление, требуется преобразование

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

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

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

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

Существование объекта
Норма

ПолучитьОбъект() возвращает объект

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

Возвращается Неопределено — объект удалён или GUID из другой базы

Итог

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

GUID объекта получают методом УникальныйИдентификатор() через консоль кода или обработку; в интерфейсе он виден только в навигационной ссылке в переставленном виде. Обратный поиск выполняют через ПолучитьСсылку с обязательной проверкой существования объекта. Прямые правки в СУБД недопустимы.

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

Можно ли посмотреть GUID без прав разработчика?

Да, если доступна навигационная ссылка: в тонком клиенте откройте объект и нажмите «Ещё» → «Получить ссылку» (или Ctrl+F11). Идентификатор будет в строке после ref=, но в переставленном виде. Для полноценного GUID без программирования попросите администратора выполнить обратное преобразование.

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

Нет. GUID присваивается один раз при создании объекта и не зависит от кода, номера, наименования и любых реквизитов. Он «умирает» только вместе с объектом.

Что означает «Объект не найден (77:b2c4...)»?

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

Как получить GUID сразу для списка объектов?

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

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

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

Можно ли задать GUID объекту вручную?

При создании нового объекта программно можно вызвать УстановитьСсылкуНового() с заранее сформированной ссылкой по нужному GUID. Это используют при миграциях. В пользовательском режиме GUID задать нельзя.