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

· 9 мин

Содержание

Получить ID объекта в 1С быстрее всего так: откройте карточку документа или элемента справочника и нажмите Shift+F11. Платформа выдаст навигационную ссылку вида e1cib/data/Справочник.Контрагенты?ref=…, где 32 символа после ref= и есть идентификатор. Программисту хватит одной строки: Строка(Ссылка.УникальныйИдентификатор()).

Типичная ситуация: интегратор пишет «пришлите GUID контрагента, у нас расхождение в обмене», а бухгалтер видит в карточке только код 00-000123 и наименование. Ниже разобраны все рабочие способы узнать ID элемента, документа или записи — из пользовательского режима, через Конфигуратор и программно.

Что такое идентификатор объекта в 1С и чем он отличается от кода и номера

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

К ссылочным объектам относятся:

  • 📁 элементы и группы справочников;
  • 📄 документы;
  • 📊 планы видов характеристик, планы счетов, планы видов расчёта;
  • 🔁 бизнес-процессы и задачи;
  • 🔢 значения перечислений (у них тоже есть внутренний идентификатор).

Код справочника и номер документа — это не ID. Это реквизиты для людей: их можно поменять вручную, они повторяются в разных организациях или годах, а при обменах часто перенумеровываются.

ЧтоПримерУникален?Меняется?
Код справочника00-000123В пределах справочника, если включён контрольДа, вручную
Номер документаБП00-000045В пределах периода и префиксаДа
Наименование«Ромашка ООО»НетДа
Уникальный идентификатор3f2a8c10-5b7e-11ee-8c99-0242ac120002Да, глобальноНет

Зачем нужен ID на практике:

  • 🔗 сопоставить объект в двух базах при обмене данными;
  • 🌐 передать ссылку на объект во внешнюю систему: сайт, CRM, сервис доставки;
  • 🛠️ найти «битую» ссылку, которая в отчёте показывается как <Объект не найден>;
  • 📨 переслать коллеге точную ссылку на документ, чтобы он открыл именно его.

Как узнать ID документа или справочника в пользовательском режиме

Конфигуратор для этого не нужен. Работает в любой типовой конфигурации на платформе 8.3 с интерфейсом «Такси»: Бухгалтерии 3.0, ЗУП 3.1, УТ 11 и других.

Способ 1. Навигационная ссылка из карточки

  1. Откройте нужный документ или элемент справочника.
  2. Нажмите Shift+F11. Или нажмите значок ссылки в заголовке формы — рядом со звёздочкой «Избранное».
  3. В открывшемся окне скопируйте строку целиком.

Ссылка выглядит так:

e1cib/data/Документ.РеализацияТоваровУслуг?ref=8c990242ac12000211ee5b7e3f2a8c10

В ней три части:

  • e1cib/data/ — признак ссылки на данные;
  • Документ.РеализацияТоваровУслуг — тип объекта по метаданным;
  • ref=… — внутренний идентификатор в шестнадцатеричном виде.

Ссылку можно отправить коллеге, работающему в той же базе. Он вставит её в поле перехода по ссылке в главном меню программы — и откроется ровно этот документ.

Способ 2. Ссылка на элемент из списка

Карточку открывать необязательно. Выделите строку в списке справочника или журнале документов и нажмите тот же Shift+F11. Платформа выдаст ссылку на выделенный объект.

Способ 3. Через «Функции для технического специалиста»

Этот способ нужен, если объект не выводится ни в одном рабочем месте — например, служебный справочник.

  1. Откройте главное меню (кнопка с тремя полосками) → Сервис → Параметры.
  2. Включите флажок отображения команды «Функции для технического специалиста». В старых релизах платформы она называется «Все функции».
  3. В главном меню выберите эту команду, раскройте ветку «Справочники» или «Документы».
  4. Откройте нужный список, найдите объект и получите ссылку по Shift+F11.

ID в навигационной ссылке записан не в том порядке, что в привычном GUID с дефисами. Если внешняя система ждёт формат xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, его нужно пересобрать. Как это сделать — в разделе для разработчиков.

Получение ID через Конфигуратор: отладка и метаданные

Конфигуратор сам по себе данные базы не показывает. Но в нём есть два полезных инструмента: отладчик и выгрузка конфигурации.

ID конкретного объекта через отладчик

Подходит администратору, у которого есть права на Конфигуратор и копия базы.

  1. Откройте Конфигуратор и запустите отладку клавишей F5.
  2. В запущенном сеансе 1С:Предприятия откройте нужный объект.
  3. В Конфигураторе поставьте точку останова в модуле формы этого объекта, например в обработчике команды или события.
  4. Когда выполнение остановится, нажмите Shift+F9 — откроется окно вычисления выражения.
  5. Введите выражение:
Строка(Объект.Ссылка.УникальныйИдентификатор())

Результат — GUID в стандартном виде с дефисами.

Точки останова и отладку лучше делать на копии. В рабочей базе остановка в отладчике замораживает сеанс пользователя, у которого сработала точка, пока вы не продолжите выполнение.

ID объектов метаданных

У самих объектов конфигурации — справочника «Контрагенты», документа «Реализация» — тоже есть свои идентификаторы. Они нужны разработчикам расширений и тем, кто сравнивает конфигурации.

Увидеть их можно так:

  1. В Конфигураторе: Конфигурация → Выгрузить конфигурацию в файлы.
  2. Выберите папку и формат иерархии.
  3. Откройте XML-файл нужного объекта: идентификатор записан в атрибуте uuid корневого элемента.

Это не то же самое, что ID документа или элемента. ID метаданных один на весь справочник, ID данных — свой у каждой записи.

Программное получение ID в 1С: код для разработчиков

Основной метод у любой ссылки — УникальныйИдентификатор(). Он возвращает значение типа УникальныйИдентификатор, которое превращают в строку функцией Строка().

Получить GUID по ссылке и ссылку по GUID

// Строка идентификатора по ссылке
ИдентификаторСтрокой = Строка(Контрагент.УникальныйИдентификатор());

// Обратная операция: ссылка по строке идентификатора
УИД = Новый УникальныйИдентификатор("3f2a8c10-5b7e-11ee-8c99-0242ac120002");
Контрагент = Справочники.Контрагенты.ПолучитьСсылку(УИД);

// Для документов — аналогично через менеджер документа
Реализация = Документы.РеализацияТоваровУслуг.ПолучитьСсылку(УИД);

ПолучитьСсылку() не проверяет, есть ли такой объект в базе. Она просто собирает ссылку. Если объекта нет, в форме вы увидите <Объект не найден>.

Проверить, что объект с таким ID существует

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

Навигационная ссылка и обратный перевод ref в GUID

Навигационную ссылку из кода получают функцией ПолучитьНавигационнуюСсылку(Ссылка).

32 символа после ref= — это те же 16 байт идентификатора, но в порядке хранения в базе. Группы GUID в них переставлены: сначала идут 4-я и 5-я группы, потом 3-я, 2-я и 1-я. Функция ниже собирает из них стандартный GUID:

Функция ГУИДИзНавигационнойСсылки(НавигационнаяСсылка) Экспорт

	Позиция = СтрНайти(НавигационнаяСсылка, "ref=");
	Если Позиция = 0 Тогда
		Возврат Неопределено;
	КонецЕсли;

	Hex = Сред(НавигационнаяСсылка, Позиция + 4, 32);

	Строка36 = Сред(Hex, 25, 8) + "-"
		+ Сред(Hex, 21, 4) + "-"
		+ Сред(Hex, 17, 4) + "-"
		+ Сред(Hex, 1, 4) + "-"
		+ Сред(Hex, 5, 12);

	Возврат Новый УникальныйИдентификатор(Строка36);

КонецФункции

Проверка на ссылке из способа 1. Ссылка 8c990242ac12000211ee5b7e3f2a8c10 раскладывается так:

Позиции в refФрагментГруппа GUID
1–48c994-я
5–160242ac1200025-я
17–2011ee3-я
21–245b7e2-я
25–323f2a8c101-я

Итог: 3f2a8c10-5b7e-11ee-8c99-0242ac120002.

Перед тем как встраивать функцию в обмен, сверьте результат на одном элементе: получите GUID через УникальныйИдентификатор() и через навигационную ссылку. Строки должны совпасть.

Задать свой ID новому объекту

При загрузке из внешней системы иногда нужно сохранить её идентификатор. Для этого у нового объекта вызывают УстановитьСсылкуНового() до первой записи:

НовыйЭлемент = Справочники.Контрагенты.СоздатьЭлемент();
НовыйЭлемент.УстановитьСсылкуНового(Справочники.Контрагенты.ПолучитьСсылку(УИД));
НовыйЭлемент.Наименование = "Ромашка ООО";
НовыйЭлемент.Записать();

Если элемент с таким GUID уже есть, запись упадёт с ошибкой уникальности. Поэтому перед Записать() проверьте существование запросом из примера выше.

Другие строковые представления

  • XMLСтрока(Ссылка) — тот же GUID с дефисами; удобно при выгрузке в XML и JSON.
  • ЗначениеВСтрокуВнутр(Ссылка) — внутреннее представление: содержит и тип, и идентификатор. Годится для хранения внутри 1С, но не для внешних систем.

Идентификаторы в облачной 1С: что меняется

В облаке — 1С:Фреш и сервисах партнёров — работают через тонкий или веб-клиент. Принцип тот же: Shift+F11 в карточке.

Отличия, которые стоит учитывать:

  • 🌐 в веб-клиенте ссылка копируется вместе с адресом сервиса и номером области данных. Коллега откроет её в браузере, если у него есть доступ к этой же базе;
  • 🔒 доступа к Конфигуратору в сервисе обычно нет, поэтому способ с отладчиком отпадает;
  • 📦 собственные внешние обработки в облаке запускаются не всегда свободно: часто их проверяет провайдер или их подключают через настройки безопасности. Код из раздела выше удобнее выполнить на локальной копии базы.

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

Ошибки при работе с ID в 1С и как их не допустить

Диагностика: выберите симптом

Ещё две ошибки встречаются у тех, кто хранит ID во внешних таблицах:

  • 🔤 сравнение строк без учёта регистра. Внешние системы иногда пишут GUID заглавными буквами, 1С — строчными. Приводите обе стороны к одному регистру через НРег();
  • 🧩 хранение только GUID без типа. Один и тот же GUID теоретически может встретиться в двух разных справочниках при ручной установке через УстановитьСсылкуНового(). Храните пару «тип объекта + GUID».

Чем ещё идентифицировать объекты, если GUID не подходит

GUID надёжен, но не всегда удобен. Длинную строку не продиктуешь по телефону и не напечатаешь в накладной.

СпособКогда подходитОграничения
Код справочникаВнутри одной базы, для людейМожно изменить, повторяется в разных базах
Номер и дата документаПереписка с контрагентом, печатные формыНомера перенумеровываются, повторяются по годам
ИНН и КПП контрагентаСопоставление контрагентов между базамиБывают дубли и обособленные подразделения
Штрихкод, артикулНоменклатура, склад, маркировкаНужно вести и проверять на уникальность
Ключ записи регистраЗаписи регистров сведенийСостоит из значений измерений и периода, а не из GUID
Навигационная ссылкаПередать коллеге в той же базеВ другой базе не откроется

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

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

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

Можно ли поменять ID объекта в 1С?
Нет. У записанного объекта идентификатор неизменен. Можно только создать новый объект с нужным GUID через УстановитьСсылкуНового() и перенести на него ссылки.
Сохраняется ли ID при выгрузке и загрузке базы через .dt?
Да. Файл .dt переносит базу целиком, все идентификаторы остаются прежними.
Одинаковы ли ID одного контрагента в Бухгалтерии и УТ, связанных обменом?
Обычно да: при синхронизации типовые обмены передают объект вместе с его GUID. Если контрагента завели вручную в обеих базах до настройки обмена, GUID будут разными, и правила сопоставят их по реквизитам.
Как найти документ, если известен только его GUID?
Соберите навигационную ссылку или выполните ПолучитьСсылку() у менеджера нужного типа и откройте результат. Тип объекта нужно знать заранее: по одному GUID без типа платформа объект не найдёт.
Что за GUID из одних нулей?
Это пустая ссылка — реквизит не заполнен. Объекта с таким идентификатором в базе нет.