Разработка и Конфигурация · 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= и есть УИД объекта, только без дефисов.
В коде на встроенном языке УИД получают через метод УникальныйИдентификатор() объекта или ссылки:
УИДСтрокой = Строка(НоменклатураСсылка.УникальныйИдентификатор());
Сообщить(УИДСтрокой); // например, 8a3f2c1e-56b7-4d9e-a1c2-3f4e5d6c7b8aОбратная задача — найти объект по известному УИД — решается конструктором Новый УникальныйИдентификатор(СтрокаУИД) и методом ПолучитьСсылку менеджера соответствующего вида объекта. После получения ссылки стоит проверить, существует ли объект, иначе обращение к реквизитам вызовет ошибку.
- 1Откройте нужный объект (элемент справочника или документ) в режиме предприятия
- 2Нажмите кнопку «Получить ссылку» в командной панели формы или в меню «Ещё»
- 3Скопируйте навигационную ссылку из появившегося окна
- 4Найдите фрагмент после «ref=» — это УИД объекта без дефисов
- 5При необходимости расставьте дефисы в формате 8-4-4-4-12 символов
УИД при обмене и переносе данных
При типовой синхронизации платформа сохраняет УИД объектов-источников в базе-приёмнике: перенесённый контрагент получает тот же идентификатор, что имел в исходной базе. Благодаря этому повторная выгрузка обновляет существующий объект, а не создаёт копию. Нарушение этого принципа — самая частая причина дублей после обмена.
Если вы переносите данные собственной обработкой через COM-соединение, OLE или веб-сервисы, сохранение УИД нужно реализовать явно. Для этого в приёмнике создают ссылку с заданным идентификатором через ПолучитьСсылку(Новый УникальныйИдентификатор(УИДСтрокой)) и записывают объект по этой ссылке.
Отдельный случай — копирование базы целиком. При копировании средствами СУБД все УИД сохраняются, и копия с точки зрения обменов неотличима от оригинала. Поэтому копию боевой базы нельзя подключать к действующим планам обмена: две базы с одинаковыми УИД начнут конфликтовать.
Битые ссылки и восстановление по УИД
Битая ссылка возникает, когда объект физически удалён, а ссылки на него в других документах и регистрах остались. В формах такая ссылка отображается как «Объект не найден» с идентификатором в скобках. Этот идентификатор — УИД удалённого объекта, и он даёт шанс на восстановление.
Если объект существует в резервной копии или в другой базе, его можно перенести с сохранением исходного УИД — тогда все битые ссылки автоматически «оживут», потому что снова указывают на существующий объект. Это штатный и безопасный способ устранения проблемы, в отличие от очистки ссылок обработками.
Как проверить результат
УИД в приёмнике совпадает с УИД источника
Платформа присвоила новый УИД — обмен создаст дубли
Открывается восстановленный объект
По-прежнему «Объект не найден» — УИД не совпал или объект не записан
Объекты обновляются, количество элементов не растёт
Появляются дубли с одинаковыми наименованиями
Типичные ошибки при работе с УИД
Чаще всего проблемы возникают не из-за самого идентификатора, а из-за неверных действий вокруг него. Ниже — ошибки, которых стоит избегать и администраторам, и разработчикам.
Ещё одна тонкость — формат хранения УИД в SQL-таблицах отличается от строкового представления: байты идентификатора в базе данных хранятся в переставленном порядке. Поэтому искать объект прямым SQL-запросом по строковому УИД без преобразования бессмысленно — запрос ничего не найдёт.
Когда УИД нужен, а когда можно обойтись без него
Для повседневной работы пользователя УИД не нужен: поиск по коду, наименованию или номеру документа полностью закрывает учётные задачи. Трогать идентификаторы имеет смысл только в технических сценариях — обмены, интеграции, восстановление данных, разбор ошибок.
Как выбрать действие
Если задача выходит за рамки описанных сценариев — например, требуется массовая замена идентификаторов или слияние баз с пересекающимися данными, — работу стоит поручить специалисту по 1С и обязательно выполнять её на копии. Прямые манипуляции с УИД в боевой базе относятся к операциям с высоким риском.
Что важно запомнить
УИД — это автоматически генерируемый уникальный идентификатор объекта, который не меняется в течение его жизни. Он лежит в основе обменов, интеграций и восстановления битых ссылок. Узнать УИД можно через навигационную ссылку или метод УникальныйИдентификатор(), а менять его вручную в работающей базе нельзя.
Частые вопросы об УИД в 1С 8.3
Можно ли изменить УИД существующего объекта?
Штатными средствами интерфейса — нет, платформа не даёт редактировать идентификатор. Технически объект можно пересоздать с нужным УИД через ПолучитьСсылку и запись, но фактически это новый объект, и все ссылки на старый придётся переносить отдельно. Такую операцию выполняют только на копии и при явной необходимости.
Почему в навигационной ссылке УИД без дефисов?
В навигационной ссылке идентификатор записан в компактном виде — 32 шестнадцатеричных символа подряд. Это тот же самый УИД, просто без форматирующих дефисов. Чтобы получить привычный вид, расставьте дефисы по схеме 8-4-4-4-12.
Могут ли совпасть УИД у двух разных объектов?
Случайно — практически исключено: пространство из 128 бит делает коллизию ничтожно маловероятной. А вот намеренно одинаковые УИД встречаются постоянно — при копировании базы или переносе объектов с сохранением идентификаторов. Именно поэтому копию базы нельзя подключать к тем же обменам.
Чем УИД отличается от кода справочника?
Код — это видимый пользователю номер элемента, он может повторяться в разных базах, меняться вручную и зависит от настроек нумерации. УИД — скрытый служебный идентификатор, который уникален глобально и не меняется никогда. Для обменов и интеграций надёжным ключом является только УИД.
Как найти объект по УИД из ошибки «Объект не найден»?
Скопируйте идентификатор из текста ошибки, затем в коде создайте УникальныйИдентификатор из этой строки и получите ссылку через ПолучитьСсылку нужного менеджера. Если объект в текущей базе удалён, ту же проверку выполните в резервной копии — там объект можно найти и перенести обратно с сохранением УИД.
Нужно ли хранить УИД при выгрузке товаров на сайт?
Да, это рекомендуемая практика. Сайт сохраняет УИД товара или категории у себя и при последующих обменах передаёт его обратно — так 1С однозначно понимает, какой элемент обновлять, даже если наименование или код изменились. При этом формат хранения (с дефисами или без) должен быть единым на обеих сторонах.