Администрирование · 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 в разных справочниках — это разные объекты.
Ссылка = Справочники.Контрагенты.НайтиПоНаименованию("ООО Ромашка");
Сообщить(Ссылка.УникальныйИдентификатор());Как узнать GUID без конфигуратора и кода
Через консоль запросов
Если в базе установлена типовая подсистема или у вас есть внешняя обработка «Консоль запросов», можно вывести GUID прямо в таблицу. В языке запросов есть представление ссылки: добавьте поле Ссылка в выборку, а затем в результате откройте запись и посмотрите навигационную ссылку, либо используйте функцию обработки, выводящую УникальныйИдентификатор() для каждой строки.
Через универсальные отчёты и подбор
В некоторых типовых конфигурациях (например, с Библиотекой стандартных подсистем) есть обработка «Групповое изменение реквизитов» и универсальный отчёт, где ссылку можно вывести в список. Далее — снова через навигационную ссылку конкретной строки. Это дольше, но не требует никаких прав разработчика.
Способы получить GUID
Подходит для разового поиска 1–2 объектов; требует преобразования строки ref в стандартный GUID.
Самый точный способ для массовой выгрузки; нужен доступ к конфигуратору или консоли кода.
Компромисс: массовый вывод без программирования, если в базе есть подходящая обработка.
Как узнать ID пользователя информационной базы
Идентификатор пользователя нужен, например, чтобы сопоставить записи журнала регистрации с конкретным человеком. Откройте конфигуратор, перейдите в меню «Администрирование → Пользователи». В списке пользователей колонка GUID по умолчанию не показана, но идентификатор виден программно: у объекта ПользовательИнформационнойБазы есть свойство УникальныйИдентификатор.
Для Каждого Польз Из ПользователиИнформационнойБазы.ПолучитьПользователей() Цикл
Сообщить(Польз.Имя + " — " + Строка(Польз.УникальныйИдентификатор));
КонецЦикла;
В тонком клиенте без конфигуратора посмотреть GUID пользователя штатными средствами нельзя — в форме списка пользователей типовых конфигураций отображаются имя, полное имя и роли, но не идентификатор. Если прав на конфигуратор нет, запросите выгрузку у администратора базы.
Как узнать идентификатор информационной базы и метаданных
Идентификатор самой базы возвращает функция ИдентификаторИнформационнойБазы() — она доступна во встроенном языке и часто используется в обменах, чтобы проверить, та ли это база-партнёр. В клиент-серверном варианте идентификатор базы также виден в консоли кластера серверов 1С в свойствах информационной базы.
Для объектов конфигурации (справочников, документов, регистров) внутренний идентификатор получают так: Метаданные.Справочники.Номенклатура.ПолучитьИдентификатор(). Это нужно в основном разработчикам универсальных механизмов — в прикладной работе такой ID почти не используется.
Частые ошибки при работе с идентификаторами
Первая ошибка — поиск объекта по GUID в неправильной базе. GUID уникален в пределах создания: если объект создавался независимо в двух базах, у него будут разные GUID, и сопоставление «по идентификатору» не сработает. Синхронизацию GUID обеспечивает только штатный обмен или загрузка с принудительной установкой ссылки.
Вторая ошибка — использование «битых» ссылок. Если объект удалён физически, ссылка с его GUID остаётся в других документах как «Объект не найден». Перед передачей GUID внешней системе проверяйте существование объекта, как показано в примере кода выше.
Третья ошибка — попытка угадать тип объекта по GUID. Из самой строки GUID тип не определяется: нужно либо знать тип заранее, либо перебирать менеджеры объектов методом НайтиПоУникальномуИдентификатору (через МенеджерСсылок в консоли кода) — что при большом количестве таблиц работает медленно.
Как проверить результат
После получения GUID убедитесь, что он корректен: строка должна соответствовать формату 8-4-4-4-12 шестнадцатеричных символов. Затем выполните обратное преобразование — получите ссылку по 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. В файловом варианте штатного интерфейса нет, проще всего выполнить одну строку кода ИдентификаторИнформационнойБазы() в консоли кода или внешней обработке.