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

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

GUID в 1С: что это такое и как с ним работать

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

GUID (Globally Unique Identifier) в 1С — это уникальный идентификатор, который платформа автоматически присваивает каждому ссылочному объекту базы данных: элементу справочника, документу, плану счетов, записи плана обмена и другим сущностям, на которые можно сослаться. Выглядит он как строка из 32 шестнадцатеричных символов, сгруппированных через дефисы, например: 8b3f4a2c-1d5e-4f6a-9b0c-2e7d8f9a1b3c.

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

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

Как устроен GUID и где он хранится

GUID генерируется платформой в момент создания объекта — ещё до первой записи в базу. С технической точки зрения это 128-битное значение, соответствующее стандарту UUID. В базе данных идентификатор хранится в служебном поле каждой ссылочной таблицы, а в языке 1С представлен типом УникальныйИдентификатор.

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

Зачем нужен GUID: типовые сценарии

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

Второй сценарий — интеграция с внешними системами: сайтами, CRM, складскими программами, мобильными приложениями. Внешняя система сохраняет GUID объекта 1С и затем использует его в запросах через HTTP-сервисы, OData или COM-соединение, чтобы однозначно указать, с каким элементом работает.

Третья область — восстановление ссылок и анализ данных. По GUID можно найти объект в базе, проверить, существует ли он, выяснить, откуда пришла «битая ссылка», а также связать данные из выгрузок, где нет других надёжных ключей.

Обмен создаёт дубли элементовGUID в базах не совпадают

Проверить, выгружался ли объект из одной базы в другую или создавался независимо

В документе видна надпись про удалённый объектБитая ссылка — GUID остался, объекта нет

Извлечь GUID из текста ссылки и проверить наличие объекта в базе

Внешняя система не находит объектПередан неверный или устаревший GUID

Сверить идентификатор в базе 1С и в запросе внешней системы

Как получить GUID объекта в коде 1С

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

bsl
СсылкаНаЭлемент = Справочники.Номенклатура.НайтиПоКоду("00000123");
Если Не СсылкаНаЭлемент.Пустая() Тогда
    Идентификатор = СсылкаНаЭлемент.УникальныйИдентификатор();
    Сообщить(Строка(Идентификатор));
КонецЕсли;

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

bsl
Идентификатор = Новый УникальныйИдентификатор("8b3f4a2c-1d5e-4f6a-9b0c-2e7d8f9a1b3c");
Ссылка = Справочники.Номенклатура.ПолучитьСсылку(Идентификатор);
Если Ссылка.ПолучитьОбъект() = Неопределено Тогда
    Сообщить("Объект с таким GUID не найден — ссылка битая");
КонецЕсли;

Как узнать GUID без программирования

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

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

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

GUID и обмены между базами: что важно учитывать

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

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

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

Самая частая ошибка — использование GUID как единственного ключа поиска там, где он не подходит. GUID уникален, но бессмыслен для пользователя: искать контрагента по строке вида «8b3f4a2c…» в интерфейсе невозможно. Для поиска вручную используют код, ИНН, наименование, а GUID оставляют для машинных интеграций.

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

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

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

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

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

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

Формат строки GUID
Норма

36 символов: 5 групп через дефисы, только цифры и буквы a–f

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

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

Существование объекта по GUID
Норма

ПолучитьОбъект() возвращает объект, реквизиты читаются

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

Возвращается Неопределено — ссылка битая

Совпадение GUID в двух базах
Норма

Одинаковый идентификатор у объекта в источнике и приёмнике

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

GUID различаются — объект создан независимо, нужен поиск дублей

Частые вопросы о GUID в 1С

Можно ли изменить GUID существующего объекта?

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

Что такое битая ссылка и как GUID помогает её найти?

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

Одинаковы ли GUID у предопределённых элементов в разных базах?

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

Можно ли использовать GUID как пароль или секретный ключ?

Нет. GUID уникален, но не является криптографически стойким секретом: он передаётся в открытом виде в адресах, файлах обмена и запросах. Для авторизации и защиты интеграций используйте предназначенные для этого механизмы — токены, пароли, сертификаты.

Почему в файле выгрузки GUID выглядит иначе, чем в базе?

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

Нужен ли GUID обычному пользователю, а не программисту?

В повседневной работе — нет: пользователь ориентируется по кодам, номерам и наименованиям. GUID становится нужен при настройке синхронизаций, обращениях в техподдержку по проблемам обмена и при работе с внешними системами, где идентификатор фигурирует в запросах и сообщениях об ошибках.