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

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

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

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

GUID (Globally Unique Identifier) в 1С — это глобально уникальный идентификатор, который платформа автоматически присваивает каждому объекту базы данных: элементу справочника, документу, записи регистра, плану обмена. Выглядит он как строка из 32 шестнадцатеричных символов, сгруппированных через дефисы, например: 8a3f2c1e-9b4d-4e5a-a1c2-3d4e5f6a7b8c. В отличие от кода справочника или номера документа, которые могут повторяться и меняться, GUID остаётся неизменным на протяжении всей жизни объекта.

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

Что такое GUID и как он устроен

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

Важно понимать разницу между тем, что видит пользователь, и тем, как объект идентифицируется на самом деле:

  • Код справочника — может повторяться в разных базах, может быть изменён вручную (если разрешено), может быть нечисловым.
  • Номер документа — присваивается по правилам нумерации, может меняться при перенумерации.
  • GUID — генерируется один раз при создании объекта, не редактируется штатными средствами, уникален глобально.

Где GUID используется на практике

Основная область применения GUID — обмен данными. В типовых планах обмена (например, между УТ и Бухгалтерией) объекты сопоставляются именно по уникальным идентификаторам. Если в базе-источнике контрагент имеет определённый GUID, то при выгрузке в базу-приёмник система ищет объект с таким же GUID и обновляет его, а не создаёт дубликат.

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

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

Как узнать GUID объекта в 1С

Есть несколько способов получить идентификатор объекта — от простых пользовательских до программных.

Через встроенный язык

Стандартный программный способ — вызвать метод УникальныйИдентификатор() у ссылки:

Идентификатор = СсылкаНаОбъект.УникальныйИдентификатор();

Сообщить(Идентификатор); // строка вида 8a3f2c1e-9b4d-...

Через внешнюю обработку или консоль

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

Через адресную строку браузера

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

Как найти объект по GUID

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

Ид = Новый УникальныйИдентификатор("8a3f2c1e-9b4d-4e5a-a1c2-3d4e5f6a7b8c");

Ссылка = Справочники.Контрагенты.ПолучитьСсылку(Ид);

Если Ссылка.ПолучитьОбъект() = Неопределено Тогда

Сообщить("Объект не найден в базе");

КонецЕсли;

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

GUID при обмене данными и переносе объектов

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

Проблемы начинаются, когда объекты создавались независимо в двух базах. Например, контрагента «ИП Сидоров» завели вручную и в УТ, и в Бухгалтерии — у этих записей разные GUID, и обмен создаст дубли. Решения:

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

GUID в строке подключения и другие идентификаторы

Термин GUID в контексте 1С иногда путают с другими идентификаторами. Различайте:

ИдентификаторЧто обозначаетГде посмотреть
GUID объектаИдентификатор элемента справочника, документаМетод УникальныйИдентификатор()
GUID информационной базыИдентификатор самой базы, используется в регистрации изменений и лицензированииСлужебные механизмы, журналы обмена
GUID в COM/веб-сервисахИдентификаторы интерфейсов и классов WindowsДокументация по технологии

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

Проверка результата и контрольные точки

После операций с GUID — сопоставления объектов, восстановления по идентификатору, настройки обмена — убедитесь, что всё работает корректно:

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

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

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

Объект найден, открывается форма, реквизиты заполнены

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

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

Обмен данными
Норма

Объекты сопоставлены, дублей нет

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

В приёмнике появились дубли справочников

Ссылки в документах
Норма

Все ссылки открываются

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

В полях отображается 'Объект не найден'

Дополнительно полезно выполнить тестирование и исправление информационной базы с проверкой ссылочной целостности — это выявит битые ссылки, возникшие из-за некорректных операций с идентификаторами.

Итог

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

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

Часто задаваемые вопросы

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

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

Почему при обмене появляются дубли контрагентов или номенклатуры?

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

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

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

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

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

Можно ли использовать код справочника вместо GUID для интеграции с сайтом?

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

Как узнать GUID без доступа к конфигуратору?

В веб-клиенте идентификатор виден в адресной строке при открытии объекта (параметр ref). В тонком клиенте можно воспользоваться внешней обработкой для просмотра GUID или попросить разработчика добавить служебную команду в форму объекта.