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

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

Как изменить идентификатор в 1С: практическое руководство

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

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

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

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

Какие идентификаторы существуют в 1С

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

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

Как узнать текущий идентификатор объекта

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

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

bsl
Ссылка = Справочники.Номенклатура.НайтиПоКоду("000001");
Сообщить(Ссылка.УникальныйИдентификатор());

Как изменить GUID объекта программно

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

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

Порядок замены GUID объекта
  1. 1
    Сделайте резервную копию базы
  2. 2
    Получите целевой GUID из базы-источника
  3. 3
    Создайте новый объект и вызовите УстановитьСсылкуНового с нужным GUID
  4. 4
    Перенесите реквизиты и табличные части со старого объекта
  5. 5
    Найдите все ссылки на старый объект и замените их на новый
  6. 6
    Пометьте старый объект на удаление и выполните удаление помеченных
  7. 7
    Проверьте обмен данными и целостность ссылок
bsl
НовыйОбъект = Справочники.Номенклатура.СоздатьЭлемент();
НовыйОбъект.УстановитьСсылкуНового(
  Справочники.Номенклатура.ПолучитьСсылку(
    Новый УникальныйИдентификатор("a1b2c3d4-e5f6-7890-abcd-ef1234567890")));
НовыйОбъект.Наименование = СтарыйОбъект.Наименование;
НовыйОбъект.Записать();

Готовые обработки для замены GUID

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

Типовые возможности таких обработок: указание старой ссылки и нового GUID, автоматический поиск всех мест использования, замена ссылок в режиме обмена данными (чтобы изменения не улетели в другие базы раньше времени), протокол выполнения. Перед запуском на рабочей базе обязательно протестируйте обработку на копии: ошибка в логике замены может привести к потере ссылок в документах.

Как изменить идентификатор конфигурации

Идентификатор конфигурации хранится в свойствах корневого узла дерева конфигурации. Чтобы его увидеть, откройте конфигуратор, выделите корень дерева метаданных и вызовите палитру свойств. Поле «Имя» — это не идентификатор; сам GUID конфигурации платформа генерирует внутренне и в палитре свойств напрямую не редактируется.

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

Как изменить идентификатор информационной базы

Идентификатор информационной базы в клиент-серверном варианте задаётся при создании базы в консоли кластера серверов 1С. Он используется при регистрации базы и в ряде механизмов, где требуется однозначно отличать одну базу от другой, например при работе с внешними компонентами и лицензировании некоторых сервисов.

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

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

Программная замена GUID

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

Готовая обработка замены GUID

Подходит для массовых замен. Риск зависит от качества обработки, обязательно тестировать на копии.

Выгрузка/загрузка базы (.dt)

Подходит для смены идентификатора базы. Долго на больших базах, требует проверки внутренних констант.

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

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

Типичные ошибки
01
Замена GUID без резервной копии — при ошибке данные восстановить не из чего
02
Забыли заменить ссылки в регистрах сведений — часть связей осталась на старый объект
03
Смена GUID во время работы пользователей — появились документы со старой ссылкой
04
Удалили старый объект до проверки обмена — в базе-корреспонденте возник конфликт
05
Изменили идентификатор базы, но не обновили константу идентификатора в данных — сломались внешние подключения
Контрольные точки

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

Поиск объекта по новому GUID
Норма

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

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

Объект не найден или найден дубликат

Тестирование и исправление
Норма

Ошибок ссылочной целостности нет

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

Есть битые ссылки на старый GUID

Тестовый обмен данными
Норма

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

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

Создаётся дубликат или конфликт

Часто задаваемые вопросы

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

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

Что будет, если в двух базах один объект имеет разные GUID?

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

Опасно ли менять GUID объектов в рабочей базе?

Опасно без подготовки. Главные риски — потеря ссылок в документах и регистрах, конфликты при обмене и работа пользователей во время замены. Безопасный порядок: копия базы, тест на копии, замена в монопольном режиме, проверка целостности и тестовый обмен.

Как найти объект по известному GUID?

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

Нужно ли менять идентификатор базы после переезда на новый сервер?

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

Можно ли изменить GUID документа так же, как справочника?

Да, механизм одинаковый: создаётся новый документ с нужным GUID, переносятся реквизиты, табличные части и движения по регистрам, затем заменяются ссылки. Для документов важно дополнительно перенести движения, иначе отчёты по регистрам покажут неверные данные.

Итог

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

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