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

· 9 мин

Содержание

Уникальный идентификатор (УИД) в 1С 8.3 вручную почти никогда не «устанавливают»: платформа создаёт его сама — при регистрации базы в кластере, при добавлении базы в список запуска и при записи каждого нового объекта. Задать УИД руками имеет смысл в двух случаях: исправить строку ID= в файле ibases.v8i и присвоить заранее известный GUID новому элементу через УстановитьСсылкуНового() при обмене данными.

Всё остальное — это не установка, а правильный ответ программе на вопрос «это копия или перенос?» и контроль префиксов в распределённой базе. Ниже каждый уровень разобран отдельно, с командами и кодом.

Какие идентификаторы есть в 1С и за что каждый отвечает

Под «УИД 1С» администраторы и программисты понимают разные вещи. Путаница начинается, когда меняют не тот идентификатор, который нужно.

УровеньГде хранитсяКто создаётМожно ли задать вручную
🖥 Идентификатор базы в кластеререестр кластера сервера 1Ссервер при создании базынет
📋 ID записи в списке базфайл ibases.v8i пользователяокно запуска при добавлении базыда, правкой файла
🔁 Код узла плана обмена и префиксданные самой базыпри настройке синхронизациида, в настройках
🧾 GUID ссылки объектаполе ссылки справочника или документаплатформа при записида, кодом до первой записи
🛡 Идентификатор базы для подсистем БСПконстанта в базетиповая конфигурациянет, только реакция на копию

Каждый уровень живёт своей жизнью. Новый ID в ibases.v8i не меняет идентификатор базы на сервере. Копия базы через .dt получит новый идентификатор в кластере, но GUID всех справочников и документов внутри останутся прежними.

Что 1С генерирует сама при создании базы

Клиент-серверная база

Когда вы создаёте базу в консоли администрирования серверов или через окно запуска, кластер присваивает ей UUID вида 2f6a1c3e-8b9d-4e2a-9c71-5d0e4a3b1f20. По нему сервер различает базы, сеансы и соединения. Имя базы (Ref в строке подключения) — для людей, UUID — для кластера.

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

Файловая база

У файловой базы нет кластерного идентификатора. Её однозначно определяет путь к каталогу с файлом 1Cv8.1CD. Перенесли каталог — для платформы это та же база по новому адресу.

Запись в списке баз

При нажатии «Добавить» в окне запуска 1С пишет в ibases.v8i новую секцию и генерирует для неё GUID в строке ID=. По этому GUID на компьютере пользователя называются каталоги кэша:

  • 📁 %APPDATA%\1C\1cv8\<ID>
  • 📁 %LOCALAPPDATA%\1C\1cv8\<ID>

Поэтому две записи с одинаковым ID на одном компьютере начинают делить кэш и пользовательские настройки. Это самый частый «конфликт УИД», с которым сталкивается администратор.

Объекты внутри базы

Каждый элемент справочника, документ, бизнес-процесс получают GUID при первой записи. Он не зависит от кода и номера: код можно перенумеровать, а ссылка останется прежней. Получить GUID в коде можно так:

ГУИД = Строка(Ссылка.УникальныйИдентификатор());

Ручная настройка идентификаторов в распределённой базе

В распределённой информационной базе (РИБ) и обменах между разными базами важны три вещи: уникальные коды узлов, уникальные префиксы и совпадение GUID одних и тех же объектов.

Префикс базы

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

В Бухгалтерии 3.0 и других конфигурациях на БСП префикс задают в разделе Администрирование → Синхронизация данных. Правило простое:

  1. Перед настройкой обмена назначьте каждой базе свой префикс из 2 символов, например ЦО для центрального офиса и Ф1, Ф2 для филиалов.
  2. Запишите соответствие в регламент, чтобы новый филиал не получил занятый префикс.
  3. Не меняйте префикс у работающей базы без необходимости: старые документы сохранят прежние номера, новые пойдут с новым префиксом.

Коды узлов плана обмена

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

Не создавайте филиал копированием каталога или .dt главной базы. У копии будет тот же «этот узел» и тот же префикс. Подчинённый узел РИБ создают из главной базы через помощник настройки синхронизации — так он получает собственный код.

Принудительная установка GUID объекта

Когда объект нужно создать в базе-приёмнике с тем же GUID, что и в базе-источнике, используют метод УстановитьСсылкуНового(). Так работают правила обмена, и так же можно поступить в своей обработке загрузки.

ИдентификаторСтрокой = "3f2a9c10-7b4e-4d61-a2c5-8e9f0d1b2c34";
НовыйИД = Новый УникальныйИдентификатор(ИдентификаторСтрокой);
Ссылка = Справочники.Номенклатура.ПолучитьСсылку(НовыйИД);

Объект = Ссылка.ПолучитьОбъект();
Если Объект = Неопределено Тогда
    // Элемента с таким GUID в базе ещё нет — создаём с заданной ссылкой
    Объект = Справочники.Номенклатура.СоздатьЭлемент();
    Объект.УстановитьСсылкуНового(Ссылка);
КонецЕсли;

Объект.Наименование = "Бумага офисная А4";
Объект.Записать();

Ключевые моменты:

  • 🔑 УстановитьСсылкуНового() работает только для нового, ещё не записанного объекта. Сменить GUID у существующего элемента нельзя.
  • 🔑 ПолучитьОбъект() вернёт Неопределено, если по ссылке ничего нет. Эта проверка защищает от повторного создания.
  • 🔑 Если в базе уже лежит «битая ссылка» с этим GUID в других документах, после записи элемента они автоматически начнут на него указывать.

Последний пункт — рабочий приём восстановления: в отчётах видно <Объект не найден> (123:a2c58e9f0d1b2c34...), вы берёте GUID из источника или из данных битой ссылки и создаёте элемент с этим GUID. Документы «оживают» без перепроведения ссылок.

Командная строка и файлы: как посмотреть и поправить идентификаторы

Идентификатор базы на сервере через rac

Утилита rac лежит в каталоге bin установленной платформы и работает через сервер администрирования ras. Сначала узнайте UUID кластера, затем список баз:

rac cluster list
rac infobase summary list --cluster=<uuid-кластера>

Во втором выводе строка infobase — это и есть уникальный идентификатор базы в кластере, рядом name и descr. Если на кластере задан администратор, добавьте параметры авторизации — точный синтаксис покажет rac help infobase.

Этот UUID нужен для скриптов: завершение сеансов конкретной базы, блокировка регламентных заданий, выгрузка списка соединений.

ID записи в ibases.v8i

Файл списка баз пользователя лежит в %APPDATA%\1C\1CEStart\ibases.v8i. Секция выглядит так:

[Бухгалтерия предприятия]
Connect=Srvr="srv1c";Ref="bp_main";
ID=9b6f2d41-3c7a-4e85-b0d2-6a1f8e4c7d93
Folder=/

Новый GUID для строки ID= удобно получить в PowerShell:

[guid]::NewGuid()

Порядок правки:

  1. Закройте все окна 1С на этом компьютере.
  2. Сделайте копию ibases.v8i.
  3. Замените значение ID= на новый GUID у дублирующейся записи.
  4. Сохраните файл в той же кодировке, в какой он был открыт (обычно UTF-8 с BOM).
  5. Запустите 1С: для записи с новым ID создастся свой каталог кэша, база откроется с чистыми пользовательскими настройками окна.

💡 Если список баз раздаётся всем через общий файл .v8i на сетевом ресурсе или через 1CEStart.cfg, генерируйте ID один раз в эталонном файле. Тогда у всех сотрудников кэш конкретной базы будет называться одинаково, и его проще чистить скриптом.

Конфликты идентификаторов: симптомы и решения

Диагностика: выберите симптом

Почему ответ «копия или перенос» так важен

Ошибка в этом диалоге стоит дорого. Ответите «перемещена» на тестовой копии — копия начнёт выгружать данные в рабочие узлы обмена, отправлять письма контрагентам и забирать выписки из банка. Ответите «копия» на рабочей базе после переезда — замолчат обмены и регламентные задания, и это заметят через день-два.

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

Восстановление узла РИБ из резервной копии

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

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

Облачные сервисы и аренда 1С: что меняется

В облаке на модели сервиса (например, 1С:Фреш) идентификаторы базы и кластера пользователю недоступны. База — это область данных с номером, а кластер, СУБД и UUID обслуживает провайдер. Задавать там ничего не нужно и нельзя.

Ситуации, где облако всё же касается УИД:

  • ☁️ Выгрузка из облака в локальную базу. При первом запуске локальной копии БСП увидит новую строку соединения и спросит, копия это или перенос. Если облачная база продолжает работать — это копия.
  • ☁️ Обмен локальной базы с облачной. Синхронизация настраивается типовыми средствами, коды узлов и префиксы задаются так же, как между двумя локальными базами. Префиксы должны различаться.
  • ☁️ Аренда сервера (IaaS, RDP). Это обычный кластер, просто чужое железо. Если провайдер дал доступ к консоли кластера, rac и идентификаторы работают как на своём сервере.
  • ☁️ Перенос базы от одного провайдера к другому через .dt. На новом сервере база получит новый UUID кластера, GUID объектов сохранятся. Сообщите новому провайдеру, что это перенос, а не копия.

Частые вопросы

Можно ли перенести идентификатор базы со старого сервера на новый?
Нет. UUID в кластере назначает сервер, при регистрации базы на новом сервере он будет другим. На работу пользователей это не влияет, меняются только скрипты, где UUID был прописан явно.
Изменятся ли GUID документов после загрузки .dt в новую базу?
Нет. Файл .dt переносит данные целиком, ссылки всех объектов сохраняются. Поэтому две базы, созданные из одного .dt, нельзя связывать обменом как независимые.
Можно ли изменить GUID у уже записанного элемента справочника?
Нет. Ссылку задают только новому объекту до первой записи. Если нужен другой GUID, создают новый элемент с нужной ссылкой и заменяют старый на новый во всех документах.
Удаление строки ID из ibases.v8i что-нибудь сломает?
При следующем запуске окно запуска сгенерирует новый ID. База откроется, но кэш создастся заново, а пользовательские настройки окна для этой записи начнутся с нуля.
Нужен ли префикс, если база одна и обменов нет?
Не обязателен. Но если обмен с другой базой может появиться в будущем, проще задать префикс сразу, чем потом жить с двумя сериями номеров.