Уникальный идентификатор объекта 1С: где его увидеть, как скопировать и как найти объект по нему
Содержание
Получить 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. Навигационная ссылка из карточки
- Откройте нужный документ или элемент справочника.
- Нажмите
Shift+F11. Или нажмите значок ссылки в заголовке формы — рядом со звёздочкой «Избранное». - В открывшемся окне скопируйте строку целиком.
Ссылка выглядит так:
e1cib/data/Документ.РеализацияТоваровУслуг?ref=8c990242ac12000211ee5b7e3f2a8c10
В ней три части:
e1cib/data/— признак ссылки на данные;Документ.РеализацияТоваровУслуг— тип объекта по метаданным;ref=…— внутренний идентификатор в шестнадцатеричном виде.
Ссылку можно отправить коллеге, работающему в той же базе. Он вставит её в поле перехода по ссылке в главном меню программы — и откроется ровно этот документ.
Способ 2. Ссылка на элемент из списка
Карточку открывать необязательно. Выделите строку в списке справочника или журнале документов и нажмите тот же Shift+F11. Платформа выдаст ссылку на выделенный объект.
Способ 3. Через «Функции для технического специалиста»
Этот способ нужен, если объект не выводится ни в одном рабочем месте — например, служебный справочник.
- Откройте главное меню (кнопка с тремя полосками) →
Сервис → Параметры. - Включите флажок отображения команды «Функции для технического специалиста». В старых релизах платформы она называется «Все функции».
- В главном меню выберите эту команду, раскройте ветку «Справочники» или «Документы».
- Откройте нужный список, найдите объект и получите ссылку по
Shift+F11.
ID в навигационной ссылке записан не в том порядке, что в привычном GUID с дефисами. Если внешняя система ждёт формат xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, его нужно пересобрать. Как это сделать — в разделе для разработчиков.
Получение ID через Конфигуратор: отладка и метаданные
Конфигуратор сам по себе данные базы не показывает. Но в нём есть два полезных инструмента: отладчик и выгрузка конфигурации.
ID конкретного объекта через отладчик
Подходит администратору, у которого есть права на Конфигуратор и копия базы.
- Откройте Конфигуратор и запустите отладку клавишей
F5. - В запущенном сеансе 1С:Предприятия откройте нужный объект.
- В Конфигураторе поставьте точку останова в модуле формы этого объекта, например в обработчике команды или события.
- Когда выполнение остановится, нажмите
Shift+F9— откроется окно вычисления выражения. - Введите выражение:
Строка(Объект.Ссылка.УникальныйИдентификатор())
Результат — GUID в стандартном виде с дефисами.
Точки останова и отладку лучше делать на копии. В рабочей базе остановка в отладчике замораживает сеанс пользователя, у которого сработала точка, пока вы не продолжите выполнение.
ID объектов метаданных
У самих объектов конфигурации — справочника «Контрагенты», документа «Реализация» — тоже есть свои идентификаторы. Они нужны разработчикам расширений и тем, кто сравнивает конфигурации.
Увидеть их можно так:
- В Конфигураторе:
Конфигурация → Выгрузить конфигурацию в файлы. - Выберите папку и формат иерархии.
- Откройте 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–4 | 8c99 | 4-я |
| 5–16 | 0242ac120002 | 5-я |
| 17–20 | 11ee | 3-я |
| 21–24 | 5b7e | 2-я |
| 25–32 | 3f2a8c10 | 1-я |
Итог: 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С?
УстановитьСсылкуНового() и перенести на него ссылки.Сохраняется ли ID при выгрузке и загрузке базы через .dt?
.dt переносит базу целиком, все идентификаторы остаются прежними.Одинаковы ли ID одного контрагента в Бухгалтерии и УТ, связанных обменом?
Как найти документ, если известен только его GUID?
ПолучитьСсылку() у менеджера нужного типа и откройте результат. Тип объекта нужно знать заранее: по одному GUID без типа платформа объект не найдёт.