Администрирование · 10 мин
Как найти идентификатор объекта в 1С
Как найти уникальный идентификатор объекта в 1С: через запрос, встроенный язык, стандартные инструменты и обработки. Способы получить GUID ссылки и решить обратную задачу.
Уникальный идентификатор (GUID) — это внутренний «паспорт» любого объекта в базе 1С: документа, элемента справочника, записи регистра. Он состоит из 32 шестнадцатеричных символов и не меняется на протяжении всего жизни объекта, даже если поменять код, наименование или номер документа. Именно по GUID система связывает таблицы в базе данных, а механизмы обмена сопоставляют объекты между разными базами.
Знать GUID и уметь его находить нужно в нескольких типовых ситуациях: при настройке обмена данными между конфигурациями, при поиске «битых» ссылок (записей вида «Объект не найден»), при поиске объекта по идентификатору из внешней системы, а также при отладке интеграций через веб-сервисы и HTTP-API. Ниже разобраны все рабочие способы — от встроенного языка до анализа ссылки в браузере.
Что такое GUID объекта и где он хранится
GUID (глобально уникальный идентификатор) присваивается объекту в момент первой записи в базу. Внутри 1С он хранится в системном поле ссылки, недоступном для редактирования пользователем. Два объекта в одной базе не могут иметь одинаковый GUID, а вероятность совпадения идентификаторов в разных базах практически равна нулю.
Важно различать GUID и привычные реквизиты вроде кода или номера документа. Код может повторяться после перенумерации, номер документа уникален только в пределах года и вида документа. GUID же неизменен и уникален всегда, поэтому именно он используется при синхронизации данных между базами и внешними системами.
Как получить GUID через встроенный язык 1С
Самый прямой способ — метод УникальныйИдентификатор(), доступный у любой ссылки. Он возвращает значение типа «УникальныйИдентификатор», а оборачивание в Строка() даёт читаемое текстовое представление.
ГУИД = Строка(СсылкаНаОбъект.УникальныйИдентификатор());
Сообщить(ГУИД);
Если нужно вывести идентификаторы для нескольких объектов, удобно выполнить код в консоли кода (доступна во многих типовых конфигурациях через «Администрирование → Печатные формы, отчеты и обработки» при включённых дополнительных обработках) или во внешней обработке. Перебор выборки из запроса позволяет получить GUID сразу для списка элементов.
Запрос = Новый Запрос("ВЫБРАТЬ Ссылка ИЗ Справочник.Номенклатура ГДЕ Код = &Код");
Запрос.УстановитьПараметр("Код", "00-000001");
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Сообщить(Строка(Выборка.Ссылка.УникальныйИдентификатор()));
КонецЕсли;Обратная задача — найти объект по известному GUID — решается через конструктор Новый УникальныйИдентификатор("...") и метод ПолучитьСсылку() менеджера соответствующего типа. После этого проверьте, что ссылка не «битая»: сравните запросом или попыткой обращения к реквизиту.
Как узнать GUID через консоль запросов
Если нет возможности писать код, используйте консоль запросов — типовую или внешнюю обработку. В языке запросов 1С есть функция УНИКАЛЬНЫЙИДЕНТИФИКАТОР(), которая принимает ссылку и возвращает её GUID. Это удобно для пакетного вывода идентификаторов по отбору.
ВЫБРАТЬ
Номенклатура.Наименование,
УНИКАЛЬНЫЙИДЕНТИФИКАТОР(Номенклатура.Ссылка) КАК ГУИД
ИЗ
Справочник.Номенклатура КАК Номенклатура
Результат можно скопировать в Excel или выгрузить таблицей. Учтите, что функция работает только с полями ссылочного типа — передать в неё строку или число нельзя, запрос завершится с ошибкой.
Как найти GUID без программирования
Через навигационную ссылку объекта
В режиме тонкого клиента откройте объект, нажмите кнопку «Получить ссылку» (или пункт меню «Ещё → Получить ссылку»). Навигационная ссылка вида e1cib/data/Справочник.Номенклатура?ref=... содержит идентификатор объекта в параметре ref, только в другом порядке байтов. Для преобразования в привычный вид GUID используются обработки-конвертеры, либо можно сопоставить фрагменты вручную: байты внутри групп переставлены зеркально.
Через внешние обработки
Существуют распространённые бесплатные обработки «Поиск GUID», «GUID <-> Ссылка» и подобные. Они позволяют вставить ссылку и получить идентификатор, или наоборот — вставить GUID и найти объект во всех ссылочных таблицах базы. Такие обработки запускаются через «Файл → Открыть» и не требуют изменения конфигурации.
Сравнение способов
Точно и гибко, подходит для пакетной обработки. Требует права на выполнение кода и минимальных навыков.
Удобна для выгрузки GUID списком по отбору. Нужна сама консоль и поддержка функции платформой.
Доступна любому пользователю без прав разработчика. Идентификатор требует перестановки байтов.
Решают и прямую, и обратную задачу без кода. Нужно доверять источнику обработки.
Как найти объект по известному GUID
Обратная задача возникает при анализе «битых ссылок» или когда внешняя система прислала только идентификатор. Если тип объекта известен, используйте метод менеджера:
Ид = Новый УникальныйИдентификатор("a1b2c3d4-e5f6-7890-abcd-ef1234567890");
Ссылка = Справочники.Номенклатура.ПолучитьСсылку(Ид);
Если Ссылка.ПолучитьОбъект() <> Неопределено Тогда
Сообщить("Объект найден: " + Ссылка);
КонецЕсли;
Если тип неизвестен, придётся перебрать все ссылочные менеджеры (справочники, документы, планы счетов и т.д.) и проверить существование объекта в каждом. Для этого как раз удобны универсальные обработки поиска по GUID — они делают перебор автоматически и показывают, где живёт объект.
- 1Определите, известен ли тип объекта (справочник, документ и т.д.)
- 2При известном типе выполните ПолучитьСсылку(Новый УникальныйИдентификатор(GUID)) через соответствующий менеджер
- 3Проверьте существование объекта запросом или попыткой получить объект
- 4Если тип неизвестен — запустите обработку поиска GUID по всем ссылочным таблицам
- 5Если объект не найден нигде — это «битая ссылка», зафиксируйте GUID для восстановления или очистки
Типичные ошибки и ограничения
Частая ошибка — путать GUID с кодом элемента. При обмене через конвертацию данных сопоставление идёт именно по идентификатору, и попытка искать объект по коду приводит к дублям после синхронизации. Вторая распространённая ситуация — использование GUID из навигационной ссылки без перестановки байтов: такой идентификатор не совпадёт с тем, что вернёт метод УникальныйИдентификатор().
Также помните, что при выгрузке в XML через стандартный обмен GUID сериализуется в текстовом виде, а при загрузке в пустую базу объекту может быть назначен тот же идентификатор — это нормальный механизм переноса. Но вручную присваивать GUID через УстановитьСсылкуНового() стоит только при полном понимании последствий: конфликт идентификаторов при последующем обмене приведёт к перезаписи объектов.
Как проверить результат
После получения GUID убедитесь, что он корректен: длина текстового представления — 36 символов с четырьмя дефисами, все символы — шестнадцатеричные. Для обратной проверки создайте из строки объект УникальныйИдентификатор и получите по нему ссылку — если объект открывается и совпадает с исходным, идентификатор верный.
При массовой выгрузке 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 объекта получают методом УникальныйИдентификатор() в коде, функцией УНИКАЛЬНЫЙИДЕНТИФИКАТОР() в запросе или через навигационную ссылку с перестановкой байтов. Обратный поиск выполняется через ПолучитьСсылку() с обязательной проверкой существования объекта. Любые ручные манипуляции со ссылками — только на копии базы.