Разработка и Конфигурация · 9 мин
Как использовать уникальный идентификатор в 1С
Как работает уникальный идентификатор в 1С: способы получить GUID объекта, поиск элемента по ссылке, применение в обмене данными, типичные ошибки и примеры кода.
Уникальный идентификатор (GUID) — это внутренний «паспорт» каждого объекта информационной базы 1С: справочника, документа, плана счетов или любой другой ссылочной сущности. Он представляет собой строку из 36 символов вида 8a2b3c4d-1234-5678-90ab-cdef12345678 и не меняется на протяжении всего времени существования объекта, даже если у него поменяли код, наименование или любые другие реквизиты.
Понимание того, как работать с GUID, нужно в типовых задачах: при настройке обмена данными между базами, при поиске «потерянных» объектов, при интеграции с внешними системами через веб-сервисы и файлы обмена, а также при диагностике ошибок вида «Объект не найден». Ниже разобраны практические способы получить идентификатор, найти по нему объект и безопасно использовать GUID в прикладном коде.
Что такое уникальный идентификатор и зачем он нужен
Платформа 1С автоматически присваивает каждой новой ссылке значение GUID при создании объекта. Важно понимать разницу: код и номер — это реквизиты, которые пользователь видит и может изменить, а GUID — скрытое системное значение, которое недоступно для редактирования штатными средствами. Именно поэтому идентификатор служит надёжным ключом для сопоставления объектов.
Основные сценарии применения GUID:
- синхронизация и обмен данными между базами (РИБ, универсальный обмен, конвертация данных);
- интеграция с внешними системами — сайтами, CRM, складскими программами;
- поиск конкретного объекта, когда известен только идентификатор из файла обмена или сообщения об ошибке;
- диагностика битых ссылок и «битых» записей после удаления объектов.
Как получить GUID объекта встроенным языком
Самый прямой способ — вызвать метод УникальныйИдентификатор() у ссылки на объект. Метод возвращает значение типа «УникальныйИдентификатор», которое при необходимости преобразуется в строку:
НоменклатураСсылка = Справочники.Номенклатура.НайтиПоКоду("000000123");
Если Не НоменклатураСсылка.Пустая() Тогда
Идентификатор = НоменклатураСсылка.УникальныйИдентификатор();
СтрокаGUID = Строка(Идентификатор); // "8a2b3c4d-..."
КонецЕсли;
Обратите внимание: метод доступен только у ссылки, а не у объекта данных. Если в переменной находится объект (результат ПолучитьОбъект()), сначала обратитесь к его свойству Ссылка.
Для быстрого разового получения GUID без написания обработок можно использовать консоль кода (входит во многие инструменты разработчика) или внешнюю обработку «показать GUID», которых много в открытом доступе. В управляемых формах некоторые конфигурации также выводят идентификатор в служебных отчётах.
СтрокаGUID = Строка(МояСсылка.УникальныйИдентификатор());Как найти объект по известному GUID
Обратная задача возникает, когда из файла обмена, лога интеграции или сообщения об ошибке известен только идентификатор. Поиск выполняется через менеджер конкретного вида объекта:
Идентификатор = Новый УникальныйИдентификатор("8a2b3c4d-1234-5678-90ab-cdef12345678");
НайденнаяСсылка = Справочники.Контрагенты.ПолучитьСсылку(Идентификатор);
Если НайденнаяСсылка.ПолучитьОбъект() = Неопределено Тогда
Сообщить("Объект с таким GUID отсутствует в базе");
КонецЕсли;
Ключевой нюанс: ПолучитьСсылку() возвращает ссылку даже на несуществующий объект, поэтому факт наличия проверяют попыткой получить объект или запросом. Если вид объекта заранее неизвестен, придётся перебрать менеджеры нужных типов (справочники, документы) и проверить каждый.
Применение GUID при обмене данными между базами
В механизмах обмена GUID — основной ключ сопоставления. Когда объект выгружается из базы-источника, в файл обмена попадает его идентификатор; база-приёмник сначала ищет объект по GUID, и только потом — по полям поиска (коду, наименованию, ИНН). Это гарантирует, что переименованный элемент не задвоится.
Практические следствия, которые важно учитывать:
- если один и тот же контрагент создан вручную в обеих базах, у него будут разные GUID, и обмен создаст дубли — такие объекты сопоставляют вручную в регистрации соответствия или через правила конвертации;
- при восстановлении базы из копии GUID объектов сохраняются, поэтому обмен продолжает работать корректно;
- при пересоздании объекта (удалить и создать заново с тем же названием) GUID будет новым, и связи в других системах разорвутся.
GUID в интеграциях с внешними системами
При обмене с сайтом, CRM или учётной системой через HTTP-сервисы, файлы XML/JSON или CommerceML идентификатор 1С обычно передаётся как строка. Внешняя система хранит его как первичный ключ и присылает обратно при обновлении данных. Такой подход надёжнее передачи кодов и наименований, которые могут совпадать или меняться.
Рекомендации для интеграций:
- храните во внешней системе GUID как строку фиксированного формата и не пытайтесь «сокращать» его;
- при приёме данных всегда проверяйте, что объект с переданным GUID существует, прежде чем обновлять его;
- для предопределённых элементов помните: их GUID одинаков во всех базах с одинаковой конфигурацией, что упрощает сопоставление;
- фиксируйте в журнале интеграции и GUID, и представление объекта — это сильно ускоряет разбор ошибок.
- 1Определите предполагаемый вид объекта (справочник, документ) по контексту — источнику GUID.
- 2Создайте значение: Новый УникальныйИдентификатор(СтрокаGUID).
- 3Вызовите ПолучитьСсылку() у менеджера нужного вида объекта.
- 4Проверьте существование: ПолучитьОбъект() не равен Неопределено или запросом по ссылке.
- 5Если объект не найден, переберите остальные вероятные типы или проверьте, не удалён ли он.
Типичные ошибки и ограничения при работе с GUID
Большинство проблем с идентификаторами возникает из-за неверных предположений о том, как платформа хранит и сравнивает ссылки.
Отдельно стоит упомянуть метод УстановитьСсылкуНового(): он позволяет задать новому объекту конкретный GUID до записи. Это легальный приём для восстановления удалённых объектов и синхронизации, но использовать его нужно осознанно — два объекта с одинаковым идентификатором в одной таблице недопустимы, и платформа выдаст ошибку при записи.
Как проверить результат
Строка из 36 символов в формате 8-4-4-4-12 с дефисами
Пустая строка, значение Неопределено или строка иной длины
ПолучитьОбъект() вернул объект, реквизиты читаются
Возвращается Неопределено либо ошибка 'Объект не найден'
Объект в приёмнике обновляется, дублей нет
При каждом обмене создаётся новый элемент с тем же наименованием
Частые вопросы об уникальных идентификаторах в 1С
Можно ли узнать GUID объекта без программирования?
Штатного поля с GUID в пользовательском интерфейсе нет. Проще всего воспользоваться консолью кода из инструментов разработчика или любой готовой обработкой «GUID объекта», которые свободно распространяются. Также идентификатор виден в файлах выгрузки обмена данными.
Одинаковы ли GUID у одинаковых элементов в разных базах?
Нет, если элементы создавались независимо — у них будут разные идентификаторы. Одинаковый GUID бывает только у предопределённых элементов и у объектов, попавших в базу через обмен или восстановление из копии.
Что делать, если по известному GUID объект не находится?
Проверьте, правильно ли определён вид объекта, и переберите другие типы. Если поиск ничего не дал, объект, скорее всего, удалён физически — восстановить его можно из резервной копии или создав новую ссылку с тем же идентификатором через УстановитьСсылкуНового().
Меняется ли GUID при изменении реквизитов объекта?
Нет. Идентификатор привязан к ссылке и остаётся постоянным при любых изменениях кода, наименования и других данных. Новый GUID появляется только при создании нового объекта.
Можно ли присвоить объекту нужный GUID вручную?
Только новому объекту до первой записи — методом УстановитьСсылкуНового(Новый УникальныйИдентификатор(СтрокаGUID)). У уже записанного объекта изменить идентификатор нельзя. Приём применяют при восстановлении данных и в механизмах синхронизации.
Чем GUID отличается от кода справочника или номера документа?
Код и номер — видимые пользователю реквизиты, они могут повторяться в разных базах и изменяться. GUID — скрытое системное значение, уникальное и неизменное, поэтому именно его используют как ключ при обмене и интеграциях.
Что важно запомнить
GUID — неизменный идентификатор ссылки объекта 1С. Получают его методом УникальныйИдентификатор(), ищут объект через ПолучитьСсылку() с обязательной проверкой существования. В обменах и интеграциях используйте GUID как ключ сопоставления и не полагайтесь на коды и наименования.