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

Администрирование · 13 мин

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

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

При работе с 1С пользователи и разработчики регулярно встречают аббревиатуру УИД — например, в ссылках вида e1cib/data/Справочник.Номенклатура?ref=80e600155d0d4a4c11ee..., в файлах обмена, в сообщениях об ошибках синхронизации. За этой аббревиатурой стоит уникальный идентификатор — внутренняя «метка», по которой платформа отличает один объект базы от другого, даже если у них совпадают наименования, коды и все остальные реквизиты.

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

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

Что такое УИД в 1С простыми словами

УИД — сокращение от «уникальный идентификатор». В документации и коде 1С также встречаются обозначения GUID (Globally Unique Identifier) и UUID. Это строка из 32 шестнадцатеричных символов, обычно записываемая в виде групп, разделённых дефисами: например, 80e60015-5d0d-4a4c-11ee-a1b2c3d4e5f6.

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

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

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

Главная путаница у начинающих пользователей возникает между УИД и привычными реквизитами — кодом справочника или номером документа. Это принципиально разные вещи:

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

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

Где и зачем используется уникальный идентификатор

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

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

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

Ссылки в веб-клиенте и внешних системах. Адрес объекта в тонком или веб-клиенте содержит его УИД в параметре ref. Эту ссылку можно скопировать и передать коллеге — при открытии она приведёт ровно к тому же объекту.

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

Момент назначенияПри создании объекта

Присваивается платформой автоматически, вручную не задаётся

ИзменяемостьНе меняется

Остаётся прежним при любых правках реквизитов и перенумерации

УникальностьВ пределах базы гарантирована

Два объекта одной базы не могут иметь один УИД

ВидимостьСкрыт от пользователя

Не отображается в формах, доступен через ссылку, запрос или обработку

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

Существует несколько способов посмотреть идентификатор конкретного элемента — от простых, доступных любому пользователю, до инструментов разработчика.

Через ссылку на объект

Самый доступный способ: откройте нужный элемент справочника или документ, затем в меню (кнопка «Ещё») выберите команду «Получить ссылку» или скопируйте адрес из адресной строки веб-клиента. В строке вида ...?ref=80e600155d0d4a4c11eea1b2c3d4e5f6 часть после ref= — это и есть УИД объекта в записи без дефисов.

Через консоль запросов или код

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

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

// Обратная операция — получить ссылку по известному УИД:
НовыйУИД = Новый УникальныйИдентификатор("80e60015-5d0d-4a4c-11ee-a1b2c3d4e5f6");
Ссылка = Справочники.Номенклатура.ПолучитьСсылку(НовыйУИД);

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

Через внешние обработки

В сообществе 1С распространены универсальные обработки «поиск объекта по УИД» и «редактор УИД». Они позволяют вставить идентификатор и сразу открыть соответствующий объект, не зная заранее, к какому справочнику или виду документов он относится. Такие обработки удобны администраторам при разборе ошибок обмена.

Как найти объект по известному УИД
  1. 1
    Скопируйте идентификатор из сообщения об ошибке или файла обмена
  2. 2
    Определите тип объекта, если он указан (справочник, документ)
  3. 3
    В консоли кода выполните ПолучитьСсылку() для этого типа с переданным УИД
  4. 4
    Проверьте результат: если ПолучитьОбъект() вернул Неопределено — объект отсутствует или удалён
  5. 5
    Если тип неизвестен, воспользуйтесь универсальной обработкой поиска по УИД

УИД и обмен данными: почему появляются дубли

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

Стандартные механизмы синхронизации умеют смягчать эту проблему: при первоначальной настройке обмена выполняется сопоставление объектов по реквизитам поиска (ИНН и КПП для контрагентов, артикул для номенклатуры), и пользователь вручную подтверждает соответствия. После сопоставления система запоминает связь, и дубли не создаются.

Если дубли уже появились, действует правило: нельзя просто удалить один из дублей, не проверив ссылки на него. На каждый из элементов могут ссылаться документы и регистры. Правильный порядок — использовать штатную обработку «Поиск и удаление дублей» (в типовых конфигурациях она находится в разделе администрирования), которая заменит все ссылки на выбранный основной элемент и только затем пометит дубль на удаление.

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

Опыт администрирования показывает, что большинство проблем с идентификаторами вызвано небольшим набором повторяющихся ошибок.

Типичные ошибки
01
Поиск объекта по наименованию вместо УИД при интеграции — при переименовании элемента интеграция ломается или находит не тот объект
02
Ручное создание элемента-дубля в базе-приёмнике вместо сопоставления — после обмена появляются два одинаковых объекта с разными УИД
03
Удаление дубля без замены ссылок — в документах остаются битые ссылки вида «Объект не найден»
04
Хранение УИД во внешней системе как числа или с потерей регистра/дефисов — идентификатор перестаёт совпадать, ссылка не находится
05
Ожидание, что после загрузки данных из другой базы УИД совпадут автоматически — совпадение гарантируется только при обмене с сохранением идентификаторов

Отдельно стоит сказать о формате записи. Один и тот же идентификатор может встречаться в представлении с дефисами (80e60015-5d0d-...), без дефисов (в ссылках ref=) и в «перевёрнутом» двоичном виде, который используется в отдельных механизмах SQL-хранения. При сравнении идентификаторов из разных источников приводите их к одному виду, иначе можно ошибочно решить, что объекты разные.

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

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

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

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

Сопоставление объектов после первой синхронизации
Норма

Все ключевые справочники сопоставлены, новых дублей не создано

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

В приёмнике появились элементы, дублирующие существующие

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

Документы открываются, ссылки ведут на реальные объекты

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

В полях отображается «Объект не найден <УИД>»

Повторный обмен после сопоставления
Норма

Объекты обновляются, а не создаются заново

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

Количество элементов справочника растёт после каждого обмена

Интеграция по УИД с внешней системой
Норма

По идентификатору всегда находится тот же объект

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

После переименования или перенумерации находится другой объект или ничего не находится

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

Перед первым обменом между базами потратьте время на ручное сопоставление самых массовых справочников — контрагентов и номенклатуры. Час работы на этапе настройки экономит дни на поиске и слиянии дублей после запуска регулярной синхронизации.
ПЗ
Практическое замечание

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

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

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

Почему один и тот же контрагент в двух базах имеет разные УИД?

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

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

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

Сохранится ли УИД при выгрузке базы в файл и загрузке на другом сервере?

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

Чем УИД отличается от навигационной ссылки?

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

Нужно ли обычному пользователю знать про УИД?

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

Итог

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

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