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

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

УИД в 1С 8.3: что это такое и как с ним работать

Что такое УИД (GUID) в 1С 8.3, как устроен уникальный идентификатор, способы узнать УИД объекта в конфигураторе и коде, типичные ошибки при обмене данными.

УИД (уникальный идентификатор, в терминологии платформы — GUID) — это внутренний идентификатор, который платформа 1С:Предприятие 8.3 присваивает каждому объекту базы данных: элементу справочника, документу, записи регистра, пользователю. Внешне он выглядит как строка вида 8a3f2c1e-56b7-4d9e-a1c2-3f4e5d6c7b8a — 36 символов, включая дефисы.

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

Понимание того, что такое УИД и где его искать, необходимо при настройке обменов, при ручной корректировке данных, при разборе ошибок вида «Объект не найден» и при интеграции 1С с сайтами, CRM и складскими системами.

Что такое УИД и как он устроен

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

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

У каждого ссылочного объекта УИД один на всю жизнь: даже если переименовать элемент, поменять все реквизиты и пометить на удаление, а потом снять пометку, — идентификатор останется прежним. Объект теряет свой УИД только вместе с физическим удалением из базы.

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

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

Вторая область — интеграции с внешними системами. При выгрузке товаров на сайт или в CRM УИД часто передаётся как внешний ключ: внешняя система хранит его и по нему обращается к 1С за обновлениями. Это надёжнее, чем код или наименование, которые могут совпадать или меняться.

Третья область — диагностика и восстановление. Строка вида «Объект не найден (785:8a3f...)» в журнале регистрации содержит УИД удалённого объекта, на который осталась ссылка. По этому идентификатору можно понять, что именно было удалено, и восстановить объект с тем же УИД, чтобы ссылки снова заработали.

Объект создан в этой базеУИД сгенерирован платформой

УИД уникален, менять его не нужно

Объект пришёл через обменУИД присвоен в базе-источнике

Не создавайте дубль вручную — синхронизация ищет объект по УИД

Ошибка «Объект не найден»Ссылка указывает на удалённый объект

Извлеките УИД из текста ошибки и проверьте, есть ли объект в копии базы

Как узнать УИД объекта

Самый простой способ без программирования — открыть объект и посмотреть на адресную строку, если база работает в веб-клиенте или тонком клиенте с навигационными ссылками. Команда «Получить ссылку» (значок цепочки в командной панели формы или меню «Ещё») покажет навигационную ссылку вида e1cib/data/Справочник.Номенклатура?ref=8a3f2c1e56b74d9ea1c23f4e5d6c7b8a — часть после ref= и есть УИД объекта, только без дефисов.

В коде на встроенном языке УИД получают через метод УникальныйИдентификатор() объекта или ссылки:

bsl
УИДСтрокой = Строка(НоменклатураСсылка.УникальныйИдентификатор());
Сообщить(УИДСтрокой); // например, 8a3f2c1e-56b7-4d9e-a1c2-3f4e5d6c7b8a

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

Как узнать УИД без программирования
  1. 1
    Откройте нужный объект (элемент справочника или документ) в режиме предприятия
  2. 2
    Нажмите кнопку «Получить ссылку» в командной панели формы или в меню «Ещё»
  3. 3
    Скопируйте навигационную ссылку из появившегося окна
  4. 4
    Найдите фрагмент после «ref=» — это УИД объекта без дефисов
  5. 5
    При необходимости расставьте дефисы в формате 8-4-4-4-12 символов

УИД при обмене и переносе данных

При типовой синхронизации платформа сохраняет УИД объектов-источников в базе-приёмнике: перенесённый контрагент получает тот же идентификатор, что имел в исходной базе. Благодаря этому повторная выгрузка обновляет существующий объект, а не создаёт копию. Нарушение этого принципа — самая частая причина дублей после обмена.

Если вы переносите данные собственной обработкой через COM-соединение, OLE или веб-сервисы, сохранение УИД нужно реализовать явно. Для этого в приёмнике создают ссылку с заданным идентификатором через ПолучитьСсылку(Новый УникальныйИдентификатор(УИДСтрокой)) и записывают объект по этой ссылке.

Отдельный случай — копирование базы целиком. При копировании средствами СУБД все УИД сохраняются, и копия с точки зрения обменов неотличима от оригинала. Поэтому копию боевой базы нельзя подключать к действующим планам обмена: две базы с одинаковыми УИД начнут конфликтовать.

Битые ссылки и восстановление по УИД

Битая ссылка возникает, когда объект физически удалён, а ссылки на него в других документах и регистрах остались. В формах такая ссылка отображается как «Объект не найден» с идентификатором в скобках. Этот идентификатор — УИД удалённого объекта, и он даёт шанс на восстановление.

Если объект существует в резервной копии или в другой базе, его можно перенести с сохранением исходного УИД — тогда все битые ссылки автоматически «оживут», потому что снова указывают на существующий объект. Это штатный и безопасный способ устранения проблемы, в отличие от очистки ссылок обработками.

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

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

Объект после переноса
Норма

УИД в приёмнике совпадает с УИД источника

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

Платформа присвоила новый УИД — обмен создаст дубли

Бывшая битая ссылка
Норма

Открывается восстановленный объект

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

По-прежнему «Объект не найден» — УИД не совпал или объект не записан

Повторная синхронизация
Норма

Объекты обновляются, количество элементов не растёт

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

Появляются дубли с одинаковыми наименованиями

Типичные ошибки при работе с УИД

Чаще всего проблемы возникают не из-за самого идентификатора, а из-за неверных действий вокруг него. Ниже — ошибки, которых стоит избегать и администраторам, и разработчикам.

Типичные ошибки
01
Создание объекта вручную в обеих базах вместо переноса — получаются два разных УИД и дубли при синхронизации
02
Использование кода или наименования как ключа обмена вместо УИД — сопоставление ломается при переименовании
03
Запуск обмена из копии боевой базы — одинаковые УИД вызывают конфликты и порчу данных в рабочей базе
04
Удаление «лишних» объектов без анализа ссылок — появляются битые ссылки с потерянными УИД
05
Хранение УИД во внешней системе в разных форматах (с дефисами и без) — интеграция перестаёт находить объекты

Ещё одна тонкость — формат хранения УИД в SQL-таблицах отличается от строкового представления: байты идентификатора в базе данных хранятся в переставленном порядке. Поэтому искать объект прямым SQL-запросом по строковому УИД без преобразования бессмысленно — запрос ничего не найдёт.

Когда УИД нужен, а когда можно обойтись без него

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

Маршрут решения

Как выбрать действие

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

Если задача выходит за рамки описанных сценариев — например, требуется массовая замена идентификаторов или слияние баз с пересекающимися данными, — работу стоит поручить специалисту по 1С и обязательно выполнять её на копии. Прямые манипуляции с УИД в боевой базе относятся к операциям с высоким риском.

Итог

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

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

Частые вопросы об УИД в 1С 8.3

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

Штатными средствами интерфейса — нет, платформа не даёт редактировать идентификатор. Технически объект можно пересоздать с нужным УИД через ПолучитьСсылку и запись, но фактически это новый объект, и все ссылки на старый придётся переносить отдельно. Такую операцию выполняют только на копии и при явной необходимости.

Почему в навигационной ссылке УИД без дефисов?

В навигационной ссылке идентификатор записан в компактном виде — 32 шестнадцатеричных символа подряд. Это тот же самый УИД, просто без форматирующих дефисов. Чтобы получить привычный вид, расставьте дефисы по схеме 8-4-4-4-12.

Могут ли совпасть УИД у двух разных объектов?

Случайно — практически исключено: пространство из 128 бит делает коллизию ничтожно маловероятной. А вот намеренно одинаковые УИД встречаются постоянно — при копировании базы или переносе объектов с сохранением идентификаторов. Именно поэтому копию базы нельзя подключать к тем же обменам.

Чем УИД отличается от кода справочника?

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

Как найти объект по УИД из ошибки «Объект не найден»?

Скопируйте идентификатор из текста ошибки, затем в коде создайте УникальныйИдентификатор из этой строки и получите ссылку через ПолучитьСсылку нужного менеджера. Если объект в текущей базе удалён, ту же проверку выполните в резервной копии — там объект можно найти и перенести обратно с сохранением УИД.

Нужно ли хранить УИД при выгрузке товаров на сайт?

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