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

Разработка и Конфигурация · 12 мин

Уникальный идентификатор в форме 1С: что это и как использовать

Что такое уникальный идентификатор (GUID) объекта в 1С, где его посмотреть в форме, как получить программно и зачем он нужен при обмене и поиске данных.

Уникальный идентификатор в 1С — это внутренний «паспорт» объекта базы данных: строка вида 8a1b2c3d-4e5f-6789-abcd-ef0123456789, которую платформа присваивает каждому элементу справочника, документу, записи регистра при создании. В отличие от кода или номера, идентификатор никогда не меняется в течение жизни объекта и не повторяется ни у одного другого объекта, даже разных типов.

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

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

Что такое уникальный идентификатор объекта в 1С

Когда пользователь нажимает «Создать» и записывает новый элемент справочника или документ, платформа 1С генерирует для него уникальный идентификатор по алгоритму UUID версии 4 (случайный). Вероятность совпадения двух идентификаторов настолько мала, что ею пренебрегают даже в базах с миллионами объектов. Идентификатор сохраняется в служебном поле таблицы базы данных и больше не изменяется: переименование, смена кода, перенос в другую группу на него не влияют.

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

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

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

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

ПараметрКод / НомерНаименованиеУникальный идентификатор (GUID)
Кто назначаетПлатформа или пользовательПользовательПлатформа автоматически
Можно изменитьДа (если не запрещено)ДаНет
УникальностьВ пределах вида объекта, если включён контрольНе гарантируетсяГлобальная, гарантирована
Используется дляОтображения, поиска, нумерацииПредставления объектаСсылок, обмена, интеграций

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

Как посмотреть уникальный идентификатор в форме объекта

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

Навигационная ссылка выглядит примерно так: e1cib/data/Справочник.Контрагенты?ref=8a1b2c3d4e5f6789abcdef0123456789. Последние 32 шестнадцатеричных символа — это и есть идентификатор, только записанный без дефисов и в специфическом порядке байтов (в 1С используется «перевёрнутое» представление). Для сопоставления с классическим видом GUID применяют функции преобразования.

В толстом клиенте и в обычных формах (старые конфигурации на 8.2) идентификатор можно вывести через встроенный язык в окне «Вычислить выражение» (Shift+F9 в конфигураторе при отладке) либо через консоль кода.

Как получить идентификатор программно

Во встроенном языке 1С у любой ссылки есть метод УникальныйИдентификатор(), который возвращает значение типа «УникальныйИдентификатор». Обратная задача — получить ссылку по известному GUID — решается конструктором Новый УникальныйИдентификатор(Строка) и методом ПолучитьСсылку() менеджера объекта.

bsl
// Получить GUID объекта
GUIDСтрокой = Строка(КонтрагентСсылка.УникальныйИдентификатор());

// Найти объект по GUID
Ид = Новый УникальныйИдентификатор("8a1b2c3d-4e5f-6789-abcd-ef0123456789");
НайденнаяСсылка = Справочники.Контрагенты.ПолучитьСсылку(Ид);
Если НайденнаяСсылка.ПолучитьОбъект() = Неопределено Тогда
    // Объект удалён или GUID от другой таблицы — будет битая ссылка
КонецЕсли;

Обязательная проверка после ПолучитьСсылку(): метод всегда вернёт ссылку, даже если объекта с таким идентификатором нет в базе. Попытка обратиться к реквизитам такой ссылки вызовет ошибку. Поэтому сначала проверяют существование объекта — через ПолучитьОбъект() или запросом по ссылке.

Для массовой выгрузки идентификаторов (например, списка товаров для интеграции с сайтом) удобнее использовать запрос с функцией представления ссылки или выгружать GUID через планы обмена и универсальные форматы вроде EnterpriseData, где идентификатор передаётся автоматически.

Зачем идентификатор нужен на практике

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

Второй сценарий — диагностика «битых ссылок». Когда объект физически удалён, а ссылки на него остались, в полях документов появляется запись вида «Объект не найден (8a1b2c3d…)». Число в скобках — и есть GUID удалённого объекта. По нему можно определить, что именно было удалено, если есть копия базы: найти объект по идентификатору в архивной копии и восстановить его с тем же GUID.

Третий сценарий — внешние интеграции. При обмене через HTTP-сервисы, REST API или файлы идентификатор служит надёжным ключом: внешняя система хранит GUID объекта 1С и по нему запрашивает или обновляет данные. Это устойчивее, чем передавать код, который может быть перенумерован.

При переносе данных обработкой «Выгрузка и загрузка данных XML» идентификаторы объектов сохраняются — это её ключевое отличие от ручного ввода. Если нужно, чтобы справочники в новой базе совпали по GUID со старой, переносите именно этой обработкой, а не создавайте элементы заново.
ПЗ
Практическое замечание

Типичные ошибки и ограничения при работе с GUID

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

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

Как проверить результат и убедиться, что всё работает

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

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

Поиск объекта по GUID
Норма

Объект найден, открывается, реквизиты читаются без ошибок

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

ПолучитьОбъект() вернул Неопределено или ошибка «Объект не найден»

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

После синхронизации объект обновлён, дублей не появилось

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

В базе-приёмнике создан второй объект с тем же наименованием

Восстановление удалённого объекта
Норма

Объект создан с прежним GUID, ссылки в документах снова отображают его

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

Ссылки продолжают показывать «Объект не найден»

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

Итог

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

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

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

Можно ли изменить уникальный идентификатор существующего объекта?

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

Почему GUID в навигационной ссылке не совпадает со строкой из метода УникальныйИдентификатор()?

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

Что означает надпись «Объект не найден» с длинным кодом в поле документа?

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

Сохраняется ли идентификатор при копировании объекта кнопкой F9?

Нет. Копирование создаёт новый объект, и платформа присваивает ему новый GUID. Старый идентификатор сохраняется только при переносе данных специальными средствами — например, обработкой «Выгрузка и загрузка данных XML» или конвертацией данных.

Может ли одинаковый GUID быть у объектов разных типов?

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

Где посмотреть идентификатор, если нет прав на конфигуратор?

Достаточно прав обычного пользователя: откройте объект и скопируйте навигационную ссылку через меню «Ещё». Идентификатор содержится в конце ссылки. Если в конфигурации есть команда «Уникальный идентификатор» в меню «Ещё», можно получить его в привычном формате в один клик.