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

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

Как изменить уникальный идентификатор объекта в 1С

Как изменить уникальный идентификатор объекта 1С: способы через код, обработку и обмен данными. Риски, проверка результата и частые ошибки при смене GUID.

Уникальный идентификатор (GUID) — это 36-символьная ссылка вида «8b3d5c1e-...», которую платформа 1С присваивает каждому объекту при создании: элементу справочника, документу, узлу плана обмена. Именно по GUID, а не по коду или наименованию, информационные базы узнают друг друга при обмене данными, а внешние системы — при интеграции через веб-сервисы и HTTP-запросы.

В типовой работе менять идентификатор не требуется: он создаётся один раз и живёт вместе с объектом до удаления. Необходимость возникает в нестандартных ситуациях: восстановление объекта после случайного удаления, когда на старую ссылку ссылаются документы; устранение дублей после обмена, когда один и тот же контрагент существует в базе дважды с разными GUID; синхронизация ссылок между двумя базами, где объекты создавались независимо.

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

Что такое GUID в 1С и почему его нельзя править напрямую

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

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

Когда смена идентификатора оправдана, а когда нет

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

Смена GUID действительно нужна, когда требуется, чтобы объект имел конкретную ссылку: восстановление удалённого элемента, на который ссылаются записи с «битыми» ссылками; выравнивание ссылок между двумя базами, синхронизируемыми по GUID; исправление последствий нештатного обмена, где один объект был создан с двумя разными идентификаторами в разных узлах.

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

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

В базе два одинаковых объекта с разными GUIDИспользуйте поиск и замену дублей — GUID менять не нужно
Объект удалён, а ссылки на его старый GUID осталисьСоздайте объект заново с заданной ссылкой через УстановитьСсылкуНового()
Нужно, чтобы объекты в двух базах имели одинаковый GUIDПеренесите данные через создание объекта с ссылкой источника
Проблема только в наименовании или реквизитахОтредактируйте объект обычным способом, GUID трогать не нужно

Подготовка: резервная копия и анализ ссылок

Любая операция со ссылками — потенциально деструктивная. Перед началом сделайте выгрузку информационной базы через конфигуратор («Администрирование» → «Выгрузить информационную базу») или средствами СУБД, если база клиент-серверная. Проверьте, что копия восстанавливается: загрузите её в тестовую базу и убедитесь, что она открывается.

Второй шаг — выяснить, где используется объект. В режиме 1С:Предприятие выделите объект и выполните команду «Ещё» → «Найти ссылки на объект» (в типовых конфигурациях доступна также обработка поиска ссылок). Сохраните список: после смены GUID именно по нему вы будете проверять целостность данных. Заодно запишите старый GUID объекта — его можно получить через команду «Получить ссылку» в форме объекта или запросом.

Способ 1: создание объекта с заданным GUID через УстановитьСсылкуНового

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

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

// Создание элемента справочника с заданным GUID

СтрокаGUID = "8b3d5c1e-1234-5678-9abc-def012345678";

НовыйGUID = Новый УникальныйИдентификатор(СтрокаGUID);

НоваяСсылка = Справочники.Контрагенты.ПолучитьСсылку(НовыйGUID);

НовыйОбъект = Справочники.Контрагенты.СоздатьЭлемент();

НовыйОбъект.УстановитьСсылкуНового(НоваяСсылка);

НовыйОбъект.Наименование = "ООО «Пример»";

// перенос остальных реквизитов из старого объекта

НовыйОбъект.Записать();

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

Способ 2: обработка замены ссылок и перенос данных

Если объект с нужным GUID уже существует как дубль, задача обратная: оставить один объект и перевести на него все ссылки со второго. Для этого служит обработка «Поиск и замена значений» из состава стандартных подсистем БСП или аналогичные универсальные обработки. Она находит все вхождения заменяемой ссылки в реквизитах, табличных частях и регистрах и подменяет их целевой.

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

Порядок замены дубля через обработку
  1. 1
    Сделайте выгрузку базы и проверьте её восстановление
  2. 2
    Откройте обработку поиска и замены дублей
  3. 3
    Укажите заменяемый объект и целевой объект
  4. 4
    Запустите поиск вхождений и проверьте список ссылок
  5. 5
    Выполните замену, пометьте дубль на удаление
  6. 6
    Запустите удаление помеченных и проверьте связанные документы

Способ 3: выравнивание GUID между базами через обмен

Когда одна и та же сущность создана независимо в двух базах (например, в УТ и в БП), у неё разные GUID, и обмен воспринимает объекты как разные. Чтобы сшить их, объект в базе-приёмнике создают с GUID из базы-источника: выгружают ссылку источника, в приёмнике создают объект через УстановитьСсылкуНового() с этим идентификатором и переносят реквизиты, а старый объект заменяют по ссылкам и удаляют.

Альтернатива — использовать регистрацию соответствий в типовых планах обмена: в механизмах сопоставления объектов при настройке синхронизации можно вручную указать, какому объекту приёмника соответствует объект источника, без физической смены GUID. Это безопаснее, если обмен уже настроен и работает.

Сравнение подходов

УстановитьСсылкуНового()

Подходит для восстановления удалённых объектов и выравнивания ссылок между базами. Требует кода и монопольного доступа

Поиск и замена дублей

Подходит, когда оба объекта уже существуют. Не меняет GUID, но решает проблему дублей без программирования

Сопоставление при синхронизации

Подходит для работающих обменов. GUID остаются разными, соответствие хранится в регистре — минимальный риск

Проверка результата и типичные ошибки

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

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

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

Ссылка объекта
Норма

GUID в ссылке совпадает с заданным

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

GUID отличается — объект создан без установки ссылки

Документы, ссылающиеся на объект
Норма

Открываются, реквизит заполнен наименованием

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

В реквизите «Объект не найден» или строка GUID

Обмен данными
Норма

Объект сопоставляется, дублей не создаётся

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

В приёмнике появляется новый дубль объекта

Ошибки при смене GUID повторяются из проекта в проект. Самая частая — попытка записать объект с GUID, который уже занят: платформа либо выдаст ошибку нарушения уникальности, либо вы фактически перезапишете чужой объект. Вторая — забыть перенести табличные части, движения по регистрам и прикреплённые файлы: ссылка правильная, а содержимое потеряно. Третья — выполнить замену без анализа вхождений: ссылки подменяются в том числе в закрытых периодах, и прошлые отчёты «поплывут».

Типичные ошибки
01
Создание объекта с занятым GUID — ошибка уникальности или затирание существующего объекта
02
Перенос только основных реквизитов — теряются табличные части, движения и присоединённые файлы
03
Замена ссылок без просмотра списка вхождений — изменения попадают в закрытые периоды
04
Работа в рабочей базе без копии — при ошибке откатить изменения невозможно
05
Смена GUID при работающем обмене — на другой стороне возникают новые дубли
Перед массовой операцией удобно выгрузить список всех ссылок на объект в табличный документ. После смены GUID повторный поиск по старому идентификатору должен дать пустой результат — это самый быстрый признак того, что битых ссылок не осталось.
ПЗ
Практическое замечание

Ограничения и частые вопросы

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

Итог

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

GUID объекта нельзя отредактировать напрямую — его задают при создании через УстановитьСсылкуНового() либо обходят проблему заменой дублей и сопоставлением при обмене. Работайте на копии, фиксируйте список ссылающихся объектов и проверяйте результат поиском по старому идентификатору.

Можно ли изменить GUID объекта без программирования?

Напрямую — нет, штатного интерфейса для этого нет. Но большинство практических задач (дубли после обмена, лишние объекты) решается типовой обработкой поиска и замены дублей, которая не требует написания кода и не трогает сам идентификатор.

Что будет, если создать объект с GUID, который уже занят?

Платформа выдаст ошибку нарушения уникальности индекса либо при определённых условиях запишет данные поверх существующего объекта. Поэтому перед записью всегда проверяйте, свободен ли идентификатор, выполняя поиск объекта по ссылке.

Как узнать GUID существующего объекта?

В форме объекта многих типовых конфигураций есть команда «Получить ссылку», показывающая строку с GUID. Программно идентификатор получают через Ссылка.УникальныйИдентификатор(), а из строки навигационной ссылки GUID можно извлечь обработкой.

Нужно ли менять GUID при переносе данных в новую базу?

Если перенос выполняется типовой обработкой или правилами обмена, GUID переносятся автоматически — объекты создаются с исходными ссылками. Вручную задавать идентификаторы требуется только при нештатных сценариях, например при выгрузке через произвольные файлы.

Опасно ли менять GUID предопределённых элементов?

Да. Предопределённые элементы связаны с кодом конфигурации по имени и ссылке, а их идентификаторы могут использоваться механизмами обновления. Смена GUID таких элементов способна нарушить работу типовой логики и последующие обновления конфигурации.

Как проверить, что после смены GUID не осталось битых ссылок?

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