Разработка и Конфигурация · 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 из текста ссылки и проверить наличие объекта в базе
Сверить идентификатор в базе 1С и в запросе внешней системы
Как получить GUID объекта в коде 1С
Во встроенном языке идентификатор получают методом УникальныйИдентификатор() у ссылки на объект. Метод возвращает значение типа «УникальныйИдентификатор», которое можно вывести в сообщение, записать в реквизит или передать во внешнюю систему.
СсылкаНаЭлемент = Справочники.Номенклатура.НайтиПоКоду("00000123");
Если Не СсылкаНаЭлемент.Пустая() Тогда
Идентификатор = СсылкаНаЭлемент.УникальныйИдентификатор();
Сообщить(Строка(Идентификатор));
КонецЕсли;Обратная задача — получить ссылку по известному GUID. Для этого идентификатор сначала создают из строки конструктором Новый УникальныйИдентификатор(СтрокаGUID), а затем получают ссылку методом ПолучитьСсылку() у менеджера соответствующего справочника или документа. После этого обязательно проверяют, что объект реально существует, иначе можно получить «битую» ссылку.
Идентификатор = Новый УникальныйИдентификатор("8b3f4a2c-1d5e-4f6a-9b0c-2e7d8f9a1b3c");
Ссылка = Справочники.Номенклатура.ПолучитьСсылку(Идентификатор);
Если Ссылка.ПолучитьОбъект() = Неопределено Тогда
Сообщить("Объект с таким GUID не найден — ссылка битая");
КонецЕсли;Как узнать GUID без программирования
Пользователю без доступа к конфигуратору GUID обычно не нужен, но иногда его просят предоставить для интеграций или техподдержки. Есть несколько практических способов.
Первый — через адресную строку веб-клиента: при открытии объекта в тонком или веб-клиенте в URL часто присутствует идентификатор ссылки. Второй — через стандартную функцию «Вывести список» с добавлением поля «Ссылка» и последующим анализом, хотя этот способ не всегда показывает GUID напрямую. Третий — внешние обработки, которые показывают GUID выбранного объекта; их использование должно быть согласовано с администратором базы.
- 1Откройте консоль кода или создайте обработку с доступом к нужному справочнику
- 2Найдите ссылку на объект по коду, наименованию или другому признаку
- 3Вызовите метод УникальныйИдентификатор() у полученной ссылки
- 4Выведите результат через Сообщить() или запишите в нужное место
- 5Проверьте, что строка содержит 36 символов в формате с дефисами
GUID и обмены между базами: что важно учитывать
При типовом обмене (например, через планы обмена или «Конвертацию данных») объекты, выгруженные из одной базы, загружаются в другую с сохранением GUID. Благодаря этому повторные выгрузки обновляют существующие объекты, а не плодят дубли. Проблемы начинаются, когда один и тот же объект (контрагент, товар) создавался в обеих базах вручную — у него будут разные GUID, и система увидит два разных объекта.
Для таких случаев в типовых конфигурациях есть механизмы сопоставления: при первой синхронизации система сопоставляет объекты по реквизитам поиска (ИНН, наименование, код) и запоминает соответствие. Вручную «вбивать» чужой GUID в объект штатными средствами нельзя — это делается только программно через установку ссылки новому объекту, что относится к задачам разработчика.
Типичные ошибки при работе с GUID
Самая частая ошибка — использование GUID как единственного ключа поиска там, где он не подходит. GUID уникален, но бессмыслен для пользователя: искать контрагента по строке вида «8b3f4a2c…» в интерфейсе невозможно. Для поиска вручную используют код, ИНН, наименование, а GUID оставляют для машинных интеграций.
Вторая ошибка — предположение, что одинаковые объекты в разных базах имеют одинаковый GUID. Это верно только если объект попал в базы через обмен. При независимом создании идентификаторы различаются, и сопоставлять данные придётся по другим реквизитам.
Как проверить результат и убедиться в корректности
После операций с GUID полезно проверить несколько контрольных точек: формат строки, существование объекта и совпадение идентификаторов в связанных системах. Это особенно важно при настройке нового обмена или интеграции.
Как проверить результат
36 символов: 5 групп через дефисы, только цифры и буквы a–f
Другая длина, посторонние символы, пробелы
ПолучитьОбъект() возвращает объект, реквизиты читаются
Возвращается Неопределено — ссылка битая
Одинаковый идентификатор у объекта в источнике и приёмнике
GUID различаются — объект создан независимо, нужен поиск дублей
Частые вопросы о GUID в 1С
Можно ли изменить GUID существующего объекта?
Штатными средствами — нет, идентификатор фиксируется при создании объекта. Программно можно создать новый объект и установить ему ссылку с нужным GUID через ПолучитьСсылку() до записи, но это задача разработчика, и делать это следует только при осознанной необходимости, например при восстановлении данных по правилам обмена.
Что такое битая ссылка и как GUID помогает её найти?
Битая ссылка — это ссылка на удалённый объект: GUID в реквизите остался, а самого объекта в базе нет. В интерфейсе она отображается как «Объект не найден» с идентификатором в скобках. Из этого текста можно извлечь GUID и через ПолучитьСсылку() определить, к какому типу относилась ссылка, а затем восстановить объект или очистить ссылку.
Одинаковы ли GUID у предопределённых элементов в разных базах?
Да, предопределённые элементы типовых конфигураций обычно имеют одинаковые GUID во всех базах, где развёрнута одна и та же конфигурация, — они создаются при обновлении из поставки. Это удобно для обменов, но полагаться на это стоит только для предопределённых элементов, а не для обычных данных.
Можно ли использовать GUID как пароль или секретный ключ?
Нет. GUID уникален, но не является криптографически стойким секретом: он передаётся в открытом виде в адресах, файлах обмена и запросах. Для авторизации и защиты интеграций используйте предназначенные для этого механизмы — токены, пароли, сертификаты.
Почему в файле выгрузки GUID выглядит иначе, чем в базе?
В некоторых форматах обмена идентификатор записывается в другом порядке байтов или без дефисов — это особенности конкретного формата, а не другой идентификатор. При программной обработке таких файлов используйте штатные средства платформы для преобразования, а не ручную перестановку символов.
Нужен ли GUID обычному пользователю, а не программисту?
В повседневной работе — нет: пользователь ориентируется по кодам, номерам и наименованиям. GUID становится нужен при настройке синхронизаций, обращениях в техподдержку по проблемам обмена и при работе с внешними системами, где идентификатор фигурирует в запросах и сообщениях об ошибках.