Разработка и Конфигурация · 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 — решается конструктором Новый УникальныйИдентификатор(Строка) и методом ПолучитьСсылку() менеджера объекта.
// Получить 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
Отдельно стоит помнить об ограничении: GUID привязан к конкретной таблице (типу объекта). Один и тот же идентификатор в справочнике «Контрагенты» и в справочнике «Номенклатура» — это разные объекты. Поэтому при поиске по GUID всегда нужно знать или определять тип объекта. Универсальный способ — перебрать менеджеры ссылочных типов и попробовать получить ссылку в каждом, либо использовать готовые обработки поиска по GUID.
Как проверить результат и убедиться, что всё работает
Как проверить результат
Объект найден, открывается, реквизиты читаются без ошибок
ПолучитьОбъект() вернул Неопределено или ошибка «Объект не найден»
После синхронизации объект обновлён, дублей не появилось
В базе-приёмнике создан второй объект с тем же наименованием
Объект создан с прежним GUID, ссылки в документах снова отображают его
Ссылки продолжают показывать «Объект не найден»
Если после синхронизации появились дубли, первым делом сравните GUID дублей: разные идентификаторы при одинаковом наименовании подтверждают, что объекты не были сопоставлены. Исправляется это через регистр соответствия объектов (в типовых — «Соответствия объектов информационных баз») или повторной настройкой правил обмена.
Что важно запомнить
Уникальный идентификатор — постоянная машинная метка объекта, назначаемая платформой один раз при создании. Ссылки, обмены и интеграции работают именно на GUID, а не на кодах и наименованиях. Посмотреть идентификатор можно через навигационную ссылку или программно, а любые операции по изменению GUID выполняются только на копии базы.
Частые вопросы
Можно ли изменить уникальный идентификатор существующего объекта?
Штатными средствами пользовательского режима — нет. На практике применяют обходной путь: создают новый объект с нужным GUID через ПолучитьСсылку() и переносят в него данные, либо используют специализированные обработки замены идентификатора. Обе операции рискованны и выполняются только на копии базы с последующей проверкой ссылочной целостности.
Почему GUID в навигационной ссылке не совпадает со строкой из метода УникальныйИдентификатор()?
В навигационной ссылке идентификатор записан в «перевёрнутом» порядке байтов и без дефисов. Это одно и то же значение в разном представлении. Для сравнения используют функции преобразования, которые переставляют группы символов, либо сравнивают идентификаторы только в одном формате.
Что означает надпись «Объект не найден» с длинным кодом в поле документа?
Это битая ссылка: объект, на который указывало поле, удалён из базы, а в скобках показан его GUID. По этому идентификатору можно найти объект в архивной копии базы и восстановить его с тем же GUID — тогда ссылки во всех документах заработают автоматически.
Сохраняется ли идентификатор при копировании объекта кнопкой F9?
Нет. Копирование создаёт новый объект, и платформа присваивает ему новый GUID. Старый идентификатор сохраняется только при переносе данных специальными средствами — например, обработкой «Выгрузка и загрузка данных XML» или конвертацией данных.
Может ли одинаковый GUID быть у объектов разных типов?
Теоретически случайное совпадение практически исключено, но при обменах один и тот же идентификатор встречается в разных базах — это нормально и означает один и тот же объект. Внутри одной базы GUID вместе с типом таблицы однозначно определяет объект, поэтому при поиске по идентификатору нужно указывать менеджер конкретного вида.
Где посмотреть идентификатор, если нет прав на конфигуратор?
Достаточно прав обычного пользователя: откройте объект и скопируйте навигационную ссылку через меню «Ещё». Идентификатор содержится в конце ссылки. Если в конфигурации есть команда «Уникальный идентификатор» в меню «Ещё», можно получить его в привычном формате в один клик.