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

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

Как узнать ID в 1С: поиск идентификаторов объектов, ссылок и пользователей

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

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

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

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

Какие идентификаторы бывают в 1С

Прежде чем искать ID, определите, что именно требуется. В системе 1С:Предприятие сосуществует несколько видов идентификаторов, и путать их — частая причина ошибок при обмене данными.

  • GUID ссылки — уникальный идентификатор конкретного объекта: элемента справочника, документа, записи плана счетов. Именно его чаще всего называют «ID» при интеграциях.
  • Код и номер — прикладные реквизиты (код элемента справочника, номер документа). Это не внутренний ID: коды могут повторяться между базами и меняться пользователем.
  • Идентификатор пользователя — GUID учётной записи в списке пользователей информационной базы.
  • Идентификатор информационной базы — GUID самой базы, используется при регистрации и в механизмах синхронизации.
  • Идентификаторы метаданных — внутренние ссылки на объекты конфигурации, применяются в универсальных механизмах обмена.

Как узнать GUID объекта через навигационную ссылку

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

Фрагмент после параметра ref= — это и есть идентификатор ссылки, только записанный в привычном для 1С виде: байты переставлены местами относительно стандартного текстового GUID. Чтобы получить привычный вид GUID, нужно преобразовать строку: в ней удаляются символы после «ref=», и шестнадцатеричные группы переставляются по определённому правилу (последние 4 + 4 + 4 символа идут в начало в обратном порядке тетрад). Проще воспользоваться любой готовой обработкой «GUID из навигационной ссылки» — их много в открытом доступе, либо одной строкой кода, показанной ниже.

Как узнать GUID встроенным языком

Если у вас есть доступ к конфигуратору или к внешней обработке с консолью кода, GUID получается одной строкой. У любой ссылки есть метод УникальныйИдентификатор():

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

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

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

ГУИД = Новый УникальныйИдентификатор("3f2504e0-4f89-11d3-9a0c-0305e82c3301");

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

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

Сообщить("Объект с таким GUID не найден");

КонецЕсли;

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

bsl
Ссылка = Справочники.Контрагенты.НайтиПоНаименованию("ООО Ромашка");
Сообщить(Ссылка.УникальныйИдентификатор());

Как узнать GUID без конфигуратора и кода

Через консоль запросов

Если в базе установлена типовая подсистема или у вас есть внешняя обработка «Консоль запросов», можно вывести GUID прямо в таблицу. В языке запросов есть представление ссылки: добавьте поле Ссылка в выборку, а затем в результате откройте запись и посмотрите навигационную ссылку, либо используйте функцию обработки, выводящую УникальныйИдентификатор() для каждой строки.

Через универсальные отчёты и подбор

В некоторых типовых конфигурациях (например, с Библиотекой стандартных подсистем) есть обработка «Групповое изменение реквизитов» и универсальный отчёт, где ссылку можно вывести в список. Далее — снова через навигационную ссылку конкретной строки. Это дольше, но не требует никаких прав разработчика.

Способы получить GUID

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

Подходит для разового поиска 1–2 объектов; требует преобразования строки ref в стандартный GUID.

Код через УникальныйИдентификатор()

Самый точный способ для массовой выгрузки; нужен доступ к конфигуратору или консоли кода.

Консоль запросов / отчёты

Компромисс: массовый вывод без программирования, если в базе есть подходящая обработка.

Как узнать ID пользователя информационной базы

Идентификатор пользователя нужен, например, чтобы сопоставить записи журнала регистрации с конкретным человеком. Откройте конфигуратор, перейдите в меню «Администрирование → Пользователи». В списке пользователей колонка GUID по умолчанию не показана, но идентификатор виден программно: у объекта ПользовательИнформационнойБазы есть свойство УникальныйИдентификатор.

Для Каждого Польз Из ПользователиИнформационнойБазы.ПолучитьПользователей() Цикл

Сообщить(Польз.Имя + " — " + Строка(Польз.УникальныйИдентификатор));

КонецЦикла;

В тонком клиенте без конфигуратора посмотреть GUID пользователя штатными средствами нельзя — в форме списка пользователей типовых конфигураций отображаются имя, полное имя и роли, но не идентификатор. Если прав на конфигуратор нет, запросите выгрузку у администратора базы.

Как узнать идентификатор информационной базы и метаданных

Идентификатор самой базы возвращает функция ИдентификаторИнформационнойБазы() — она доступна во встроенном языке и часто используется в обменах, чтобы проверить, та ли это база-партнёр. В клиент-серверном варианте идентификатор базы также виден в консоли кластера серверов 1С в свойствах информационной базы.

Для объектов конфигурации (справочников, документов, регистров) внутренний идентификатор получают так: Метаданные.Справочники.Номенклатура.ПолучитьИдентификатор(). Это нужно в основном разработчикам универсальных механизмов — в прикладной работе такой ID почти не используется.

Частые ошибки при работе с идентификаторами

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

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

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

Типичные ошибки
01
Передача строки ref из навигационной ссылки без преобразования — внешняя система не найдёт объект.
02
Поиск по GUID без указания типа объекта — ПолучитьСсылку вызывается у конкретного менеджера, иначе результат будет неверным.
03
Использование кода или номера вместо GUID в интеграции — при перенумерации сопоставление разваливается.
04
Отсутствие проверки существования объекта — в интеграцию уходят ссылки на удалённые элементы.

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

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

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

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

Формат строки GUID
Норма

36 символов с дефисами в позициях 8-4-4-4-12

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

32 символа без дефисов или переставленные группы — признак необработанной строки ref

Обратное получение объекта
Норма

По GUID открывается тот же самый элемент справочника или документ

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

«Объект не найден» или открывается другой элемент — неверный GUID или тип

Сопоставление с внешней системой
Норма

Внешняя система находит объект по переданному GUID

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

Объект не находится — проверьте, в какой базе объект создавался изначально

Итог

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

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

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

Можно ли узнать GUID объекта в тонком клиенте без конфигуратора?

Да, частично. Через команду «Получить навигационную ссылку» вы получите строку с параметром ref, которую затем нужно преобразовать в стандартный GUID — вручную по правилу перестановки тетрад или готовой обработкой. Полноценный вывод GUID списком без инструментов разработчика недоступен.

Почему у одного товара в двух базах разные GUID?

Значит, элемент создавался независимо в каждой базе, а не переносился обменом. GUID назначается в момент создания объекта. Чтобы идентификаторы совпали, объект нужно загрузить из одной базы в другую штатным обменом или обработкой с установкой ссылки по GUID.

Чем GUID отличается от кода элемента справочника?

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

Как найти объект по GUID, если неизвестен его тип?

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

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

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

Где посмотреть идентификатор информационной базы без программирования?

В клиент-серверном варианте — в консоли кластера серверов 1С: откройте свойства информационной базы, там указан её GUID. В файловом варианте штатного интерфейса нет, проще всего выполнить одну строку кода ИдентификаторИнформационнойБазы() в консоли кода или внешней обработке.