Разработка и Конфигурация · 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 внутри запроса, используют функцию языка запросов УНИКАЛЬНЫЙИДЕНТИФИКАТОР(Поле) — но она доступна не во всех версиях платформы, поэтому надёжнее выгрузить ссылки и получить идентификаторы в цикле.
Запрос = Новый Запрос("ВЫБРАТЬ Ссылка ИЗ Справочник.Номенклатура ГДЕ Код = &Код");
Запрос.УстановитьПараметр("Код", "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Откройте консоль кода или обработку с полем ввода ссылки
- 2Выберите объект (элемент справочника, документ)
- 3Выполните: Сообщить(Ссылка.УникальныйИдентификатор())
- 4Скопируйте полученную строку GUID
- 5Проверьте объект обратным поиском по GUID
Как найти объект по известному GUID
Обратная задача встречается чаще: в ошибке обмена или в сообщении «Объект не найден» указан идентификатор, и нужно понять, что это за объект. Для этого создают значение идентификатора из строки и получают ссылку:
Ид = Новый УникальныйИдентификатор("b2c4d8f1-3a5e-4b7c-9d1e-6f8a0c2e5b3d");
Ссылка = Справочники.Номенклатура.ПолучитьСсылку(Ид);
Если Ссылка.ПолучитьОбъект() = Неопределено Тогда
Сообщить("Объект отсутствует в базе");
Иначе
Сообщить(Ссылка);
КонецЕсли;
Если тип объекта неизвестен, придётся перебрать виды ссылочных объектов (справочники, документы) и для каждого вызвать ПолучитьСсылку с проверкой существования. Универсальные обработки делают этот перебор автоматически. В сообщении «Объект не найден (77:...)» шестнадцатеричная часть после двоеточия — это тот же GUID в переставленном виде, его можно скормить конструктору через специальное преобразование, которое есть в типовых обработках поиска битых ссылок.
Проверка результата и ограничения
Контроль правильности простой: полученный GUID должен иметь формат 8-4-4-4-12 шестнадцатеричных символов, а обратный поиск по нему должен возвращать именно тот объект, с которого начинали. Если обратный поиск возвращает другой объект или ничего — значит, идентификатор был скопирован из навигационной ссылки без преобразования байт.
Учитывайте ограничения: метод УникальныйИдентификатор() недоступен в некоторых контекстах (например, в запросах напрямую), функция УНИКАЛЬНЫЙИДЕНТИФИКАТОР в запросах зависит от версии платформы, а у записей регистров сведений 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 задать нельзя.