Разработка и Конфигурация · 8 мин
УИД в 1С 8.3: что это такое и как с ним работать
УИД в 1С 8.3: что такое уникальный идентификатор, как получить GUID ссылки, зачем он нужен при обмене данными и какие ошибки встречаются чаще всего.
УИД (уникальный идентификатор, он же GUID — Globally Unique Identifier) в 1С 8.3 — это внутренний идентификатор, который платформа автоматически присваивает каждому объекту информационной базы: элементу справочника, документу, записи регистра. Он выглядит как строка вида b8f3a2c1-4d5e-6f70-8192-a3b4c5d6e7f8 и гарантированно не повторяется в пределах базы, а при правильной работе обменов — и между разными базами.
Понимание того, что такое УИД, критично в трёх ситуациях: при настройке обмена данными между базами, при интеграции 1С с внешними системами (сайт, CRM, складское ПО) и при поиске «битых ссылок» — объектов, которые были удалены, но на них остались ссылки. Во всех этих задачах именно GUID связывает объекты между собой.
УИД нельзя изменить через интерфейс пользователя — он формируется платформой в момент создания объекта. Однако программно его можно прочитать, а в ряде случаев — задать при создании объекта, что используется в механизмах конвертации данных.
Что такое УИД и как он устроен
Технически GUID — это 128-битное значение, записываемое в шестнадцатеричном виде через дефисы. В 1С для него существует отдельный тип данных УникальныйИдентификатор. Вероятность совпадения двух случайно сгенерированных идентификаторов настолько мала, что в практических задачах ею пренебрегают.
Важно отличать УИД от других реквизитов, которые тоже «идентифицируют» объект: код справочника, номер документа, наименование. Эти реквизиты видит пользователь, их можно редактировать, они могут повторяться между базами. УИД же скрыт от пользователя, неизменен и уникален. Именно поэтому обмены данными сопоставляют объекты по GUID, а не по коду или наименованию.
У ссылочных объектов (справочники, документы, планы счетов и т.д.) идентификатор хранится в самой ссылке. У записей регистров сведений и накопления идентификатора как такового нет — они идентифицируются набором измерений или регистратором.
Где УИД используется на практике
Основная область применения — обмен данными. При выгрузке объекта из одной базы и загрузке в другую приёмник ищет объект с таким же GUID. Если находит — обновляет его, если нет — создаёт новый с переданным идентификатором. Благодаря этому один и тот же контрагент в «Управлении торговлей» и в «Бухгалтерии» остаётся одним и тем же объектом.
Вторая область — интеграция с внешними системами. При передаче данных на сайт или в CRM в качестве ключа объекта почти всегда передаётся именно УИД, потому что код и наименование могут меняться, а идентификатор — нет.
Третья ситуация — диагностика. Когда в отчёте или журнале появляется запись вида «Объект не найден (b8f3a2c1-...)», это означает битую ссылку: объект удалён, а ссылка на него осталась. По УИД из текста ошибки можно определить, что именно было удалено.
Как узнать УИД объекта в 1С 8.3
Штатной кнопки «показать УИД» в пользовательском интерфейсе нет, поэтому применяют программные способы. Самый простой — через встроенный язык:
Ссылка = Справочники.Контрагенты.НайтиПоКоду("000000123");
УИД = Ссылка.УникальныйИдентификатор();
Сообщить(Строка(УИД));Если под рукой нет конфигуратора, используют типовую обработку или консоль кода (в типовых конфигурациях на БСП есть инструмент «Консоль кода» / «Инструменты разработчика»), где выполняют аналогичный фрагмент. Ещё один способ — открыть объект и посмотреть идентификатор в адресной строке веб-клиента: ссылка содержит GUID объекта.
Обратная задача — найти объект по известному УИД — решается методом ПолучитьСсылку:
УИД = Новый УникальныйИдентификатор("b8f3a2c1-4d5e-6f70-8192-a3b4c5d6e7f8");
Ссылка = Справочники.Контрагенты.ПолучитьСсылку(УИД);
Если Ссылка.ПолучитьОбъект() = Неопределено Тогда
Сообщить("Объект не найден");
КонецЕсли;- 1Скопируйте GUID из текста ошибки «Объект не найден»
- 2Откройте консоль кода или конфигуратор
- 3Создайте УникальныйИдентификатор из строки и вызовите ПолучитьСсылку для нужного типа
- 4Проверьте, существует ли объект: ПолучитьОбъект() вернёт Неопределено для удалённого
- 5Если объект удалён — решите, восстанавливать его или очищать ссылки
УИД при обмене данными и конвертации
В планах обмена и правилах конвертации данных (КД 2 и КД 3) сопоставление объектов строится именно на GUID. При первой загрузке объекта в базу-приёмник конвертация может создать объект с заранее заданным идентификатором — для этого у ссылки вызывается ПолучитьСсылку(УИД), а затем объекту присваивается эта ссылка до записи.
Отсюда следует важное правило: если объект создали независимо в двух базах (например, вручную завели одного контрагента и там, и там), у него будут два разных УИД. При обмене такие объекты не сопоставятся автоматически и задвоятся. Решение — либо сопоставление по реквизитам поиска (ИНН, наименование) в правилах конвертации, либо ручная установка ссылки с нужным GUID.
Битые ссылки и типичные ошибки
Битая ссылка возникает, когда объект физически удалён из базы (минуя пометку удаления, через непосредственное удаление или обработку свёртки), а ссылки на него в других объектах остались. В формах такие ссылки отображаются как «Объект не найден» с GUID в скобках.
Типовые инструменты борьбы: обработка «Поиск и удаление дублей», тестирование и исправление информационной базы (режим проверки ссылочной целостности), а также штатное удаление помеченных объектов, которое показывает все места использования перед удалением.
Как проверить результат и не навредить данным
После любых операций с идентификаторами — загрузки из обмена, восстановления объектов, чистки битых ссылок — результат проверяют по трём признакам: объект открывается в интерфейсе без ошибок, запросы и отчёты по нему выполняются, а в других базах обмен проходит без сообщений о несопоставленных объектах.
Как проверить результат
Форма открывается, реквизиты заполнены
Ошибка «Объект не найден» или пустая форма
Объекты сопоставляются по УИД, дублей нет
В приёмнике появились дубли или предупреждения о поиске
Документы и регистры отображают объект корректно
В полях виден GUID в скобках вместо представления
Граница безопасной самостоятельной работы — чтение УИД, поиск объектов по идентификатору и анализ битых ссылок в копии базы. Операции, меняющие ссылки массово (замена ссылок, восстановление удалённых объектов с заданным GUID), выполняйте только после резервного копирования и желательно сначала на тестовой копии.
Что важно запомнить
УИД — неизменяемый идентификатор объекта, назначаемый платформой. Его читают методом УникальныйИдентификатор(), объект по нему находят через ПолучитьСсылку(). Все обмены и интеграции строятся на GUID, поэтому объекты нельзя удалять в обход контроля ссылок, а совпадение идентификаторов между базами нельзя нарушать.
Частые вопросы
Можно ли изменить УИД существующего объекта?
Штатными средствами — нет, идентификатор неизменен. Программно можно создать новый объект с нужным GUID через ПолучитьСсылку() и перенести в него данные, но это фактически замена объекта, требующая переноса всех ссылок.
Чем УИД отличается от кода справочника?
Код — редактируемый пользовательский реквизит, который может повторяться между базами и меняться. УИД — скрытый системный идентификатор, уникальный и постоянный. Для обменов и интеграций используют только УИД.
Что означает надпись «Объект не найден» с длинным кодом?
Это битая ссылка: объект с указанным GUID удалён, но ссылка на него осталась. По коду из скобок можно определить тип и факт удаления объекта, а затем очистить ссылку или восстановить объект.
Совпадут ли УИД одного объекта в двух базах после обмена?
Да, если объект попал во вторую базу через обмен — конвертация создаёт его с тем же GUID. Если объект создали вручную в обеих базах независимо, идентификаторы будут разными и потребуется сопоставление по реквизитам поиска.
Есть ли УИД у записей регистров?
У записей регистров сведений и накопления отдельного GUID нет: они идентифицируются набором измерений (для сведений) или регистратором и номером строки (для остальных). У самого регистратора — документа — УИД есть.