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

В этой статье мы разберём 5 проверенных способов получения GUID базы — от стандартных методов через конфигуратор до скриптов на PowerShell и прямых запросов к SQL. Каждый метод подходит для разных сценариев: одни работают только на клиент-серверных базах, другие универсальны для файлового и серверного вариантов. Вы узнаете, где физически хранится GUID в файлах , как его извлечь без доступа к конфигуратору, и почему иногда идентификатор может меняться после переноса базы.

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

Что такое GUID базы 1С и зачем он нужен

GUID (Globally Unique Identifier) в контексте 1С:Предприятие — это 128-битный уникальный код, который присваивается базе данных при её создании. Он используется системой для однозначной идентификации базы в следующих случаях:

  • 🔄 Обмен данными между базами (например, через Универсальный формат обмена или РИБ). GUID гарантирует, что данные не перепутаются между разными базами с одинаковыми именами.
  • 🖥️ Кластерное администрирование. Сервер 1С:Предприятие использует GUID для маршрутизации запросов к конкретной базе в многопользовательском режиме.
  • 🔧 Резервное копирование и восстановление. При переносе базы на другой сервер GUID может измениться, что потребует корректировки настроек интеграций.
  • 🔗 Внешние обработки и расширения. Многие сторонние модули требуют указания GUID для привязки к конкретной базе.

Важно понимать, что GUID не совпадает с:

  • 🆔 Именем базы (которое видно в списке баз при запуске ).
  • 📌 Идентификатором информационной базы (IB) в кластере (это отдельный параметр, который можно увидеть в консоли администрирования сервера ).
  • 🔑 Идентификатором сеанса (который генерируется при каждом подключении пользователя).

GUID хранится в 1CV8.1CD (для файлового варианта) или в системных таблицах SQL-базы (для клиент-серверного варианта). Его формат — строка из 32 шестнадцатеричных символов, разделённых дефисами, например: 123e4567-e89b-12d3-a456-426614174000.

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

Способ 1: Получение GUID через конфигуратор 1С

Самый простой и универсальный метод — использование встроенного функционала конфигуратора. Он работает для всех типов баз (файловых, клиент-серверных, SQL) и не требует дополнительных инструментов.

Инструкция:

  1. Запустите 1С:Предприятие в режиме Конфигуратор (для этого выберите нужную базу в списке и удерживайте Shift при запуске).
  2. В меню конфигуратора перейдите в Администрирование → Публикация на веб-сервере (даже если вам не нужна публикация).
  3. В открывшемся окне в поле Идентификатор информационной базы вы увидите GUID в формате {123e4567-e89b-12d3-a456-426614174000}.

Если у вас 1С:Предприятие 8.3.20+, можно использовать альтернативный путь:

  • 🔧 Откройте Файл → Открыть.
  • 📂 В диалоговом окне выберите вашу базу (для файлового варианта) или подключитесь к серверу.
  • 🔍 В строке подключения (внизу окна) будет отображаться GUID после параметра File= или Srvr=.

Для клиент-серверных баз в конфигураторе также можно выполнить запрос к системной таблице:

ВЫБРАТЬ

ИдентификаторКакСтрока() КАК GUID

ИЗ

ИнформационнаяБаза.СвойстваОбъекта()

⚠️ Внимание: В некоторых версиях 1С:Предприятие 8.2 GUID может отображаться без фигурных скобок. При использовании этого идентификатора в скриптах или конфигурациях скобки можно добавлять или убирать — система распознаёт оба формата.

Запустить 1С в режиме Конфигуратор|Проверить права доступа (нужны права администратора)|Убедиться, что база не заблокирована другими пользователями|Скопировать GUID в буфер обмена для дальнейшего использования-->

Способ 2: Извлечение GUID из файла 1Cv8.1CD (для файлового варианта)

Если у вас файловая база (не клиент-серверная), GUID хранится непосредственно в основном файле базы — 1Cv8.1CD. Его можно извлечь без запуска , используя специализированные утилиты или скрипты.

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

Шаги для извлечения:

  1. Откройте командную строку (Win + R → введите cmd).
  2. Перейдите в каталог с утилитой 1Cv8dt (обычно это C:\Program Files\1cv8\<версия>\bin\).
  3. Выполните команду:
    1Cv8dt.exe INFO "Путь\к\вашей\базе.1CD" /FGuid

    Например:

    1Cv8dt.exe INFO "D:\Bases\Trade.1CD" /FGuid

Альтернативный метод — использовать PowerShell. Следующий скрипт считывает GUID из файла 1Cv8.1CD:

$path = "D:\Bases\Trade.1CD"

$fs = New-Object System.IO.FileStream($path, [System.IO.FileMode]::Open, [System.IO.FileAccess]::Read)

$br = New-Object System.IO.BinaryReader($fs)

$fs.Seek(0x20, [System.IO.SeekOrigin]::Begin) | Out-Null

$guidBytes = $br.ReadBytes(16)

$guid = New-Object Guid($guidBytes)

Write-Output $guid

$br.Close()

$fs.Close()

Результат выполнения скрипта — GUID в стандартном формате, например: 123e4567-e89b-12d3-a456-426614174000.

Метод Требуемые права Работает для SQL-баз? Примечания
1Cv8dt Доступ к файлу 1CD ❌ Нет Самый быстрый способ для файлового варианта
PowerShell Доступ к файлу 1CD ❌ Нет Требует знания смещений в файле
Конфигуратор Права администратора 1С ✅ Да Универсальный, но требует запуска 1С
💡

Если утилита 1Cv8dt не найдена, проверьте путь к бинарникам 1С в переменной окружения PATH или укажите полный путь к утилите в команде.

Способ 3: Получение GUID для клиент-серверной базы через SQL-запрос

Для баз, работающих на Microsoft SQL Server или PostgreSQL, GUID хранится в системных таблицах. Его можно извлечь напрямую через SQL Management Studio или любую другую утилиту для работы с базами данных.

Для Microsoft SQL Server выполните следующий запрос:

SELECT

CAST(InfoBaseID AS UNIQUEIDENTIFIER) AS GUID

FROM

v8users

Для PostgreSQL (используется в 1С:Предприятие 8.3 начиная с версии 8.3.10):

SELECT

encode(infobaseid, 'hex') AS GUID

FROM

v8users

LIMIT 1

Если у вас несколько баз на одном сервере, можно уточнить запрос, добавив фильтрацию по имени:

SELECT

CAST(InfoBaseID AS UNIQUEIDENTIFIER) AS GUID,

InfoBaseName AS BaseName

FROM

v8users

WHERE

InfoBaseName = 'ИмяВашейБазы'

В результате вы получите таблицу с GUID и именем базы. Обратите внимание, что в PostgreSQL идентификатор возвращается в шестнадцатеричном формате без дефисов. Чтобы привести его к стандартному виду, можно использовать функцию regexp_replace:

SELECT

regexp_replace(encode(infobaseid, 'hex'),

'^(.{8})(.{4})(.{4})(.{4})(.{12})$',

'\1-\2-\3-\4-\5') AS GUID

FROM

v8users

⚠️ Внимание: В кластерных установках на одном SQL-сервере может храниться несколько баз с одинаковыми именами, но разными GUID. Всегда проверяйте, что вы подключились к нужному экземпляру сервера (например, SRV-1C\INSTANCE_1 вместо SRV-1C\DEFAULT).
📊 Какой тип базы 1С вы администрируете?
Файловая
Клиент-серверная на MS SQL
Клиент-серверная на PostgreSQL
Облачная (1C:Fresh)
Не знаю

Способ 4: Использование командной строки и утилит 1С

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

Для клиент-серверных баз используйте утилиту rac (Remote Administration Console):

rac infobase --cluster=<имя_кластера> summary list

В выводе будет столбец infobase-id с нужным GUID.

Для файлового варианта подойдёт утилита 1cv8 с параметром /D (вывод информации о базе):

1cv8.exe DESIGNER /D"Путь\к\базе.1CD" /Out"output.txt"

В файле output.txt будет строка с GUID (ищите ИдентификаторИнформационнойБазы).

Для баз на SQL Server можно использовать sqlcmd:

sqlcmd -S <сервер> -d <база_данных> -Q "SELECT CAST(InfoBaseID AS UNIQUEIDENTIFIER) AS GUID FROM v8users"

Пример скрипта на PowerShell для автоматического извлечения GUID всех баз на сервере:

$clusters = rac cluster list

foreach ($cluster in $clusters) {

$bases = rac infobase --cluster=$cluster summary list

$bases | ForEach-Object {

Write-Output "База: $($_.Name), GUID: $($_.InfobaseID)"

}

}

Как проверить, что утилита rac подключается к правильному кластеру?

По умолчанию rac подключается к локальному кластеру на порту 1541. Если у вас несколько кластеров, укажите нужный явно:

rac --server=имя_сервера --port=1545 cluster list

Чтобы увидеть все доступные кластеры, используйте команду rac cluster list --all.

Способ 5: Программное получение GUID через встроенный язык 1С

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

Код для получения GUID текущей базы:

ИдентификаторБазы = МетодГлобальногоКонтекста("ИдентификаторИнформационнойБазы");

Сообщить("GUID текущей базы: " + ИдентификаторБазы.УникальныйИдентификатор());

Для получения GUID в формате строки (например, для передачи во внешнюю систему):

Функция ПолучитьGUIDБазы()

ИдБазы = МетодГлобальногоКонтекста("ИдентификаторИнформационнойБазы");

Возврат Строка(ИдБазы.УникальныйИдентификатор());

КонецФункции

// Пример использования:

GUIDСтрока = ПолучитьGUIDБазы();

ЗаписатьЛог(Новый Структура("Событие,Данные", "ПолучениеGUID", GUIDСтрока));

Если вам нужно получить GUID другой базы (например, для настройки обмена), используйте объект ИнформационныеБазы:

Попытка

ДругиеБазы = Новый ИнформационныеБазы;

Для Каждого База Из ДругиеБазы Цикл

Если База.Имя = "ИмяНужнойБазы" Тогда

Сообщить("GUID базы " + База.Имя + ": " + База.УникальныйИдентификатор);

КонецЕсли;

КонецЦикла;

Исключение

Сообщить("Ошибка при получении списка баз: " + ОписаниеОшибки());

КонецПопытки;

Этот код можно вставить в обработку или внешнюю печатную форму, чтобы быстро получать GUID без доступа к конфигуратору.

⚠️ Внимание: При работе с распределёнными базами (РИБ) метод ИнформационныеБазы вернёт GUID только для текущего узла. Чтобы получить GUID центральной базы, используйте свойства объекта ПланОбмена.
💡

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

Частые ошибки и проблемы при работе с GUID

Даже опытные администраторы иногда сталкиваются с трудностями при работе с идентификаторами баз. Вот наиболее распространённые проблемы и их решения:

  • 🔄 GUID изменился после переноса базы. Это нормальное поведение — при создании новой базы (даже на основе резервной копии) генерируется новый идентификатор. Чтобы сохранить старый GUID, используйте утилиту 1Cv8dt с параметром /RestoreIB и ключом /UseExistIB.
  • 🔍 Не удаётся найти GUID в SQL-базе. Проверьте, что вы подключились к правильной базе данных (не к master или tempdb). В имя базы данных на сервере может отличаться от имени в списке баз.
  • 🚫 Ошибка доступа при чтении файла 1CD. Убедитесь, что файл не заблокирован процессом (закройте все сеансы) и у вашей учётной записи есть права на чтение.
  • 🔗 Обмен данными не работает после изменения GUID. Обновите настройки обмена в обеих базах, указав новые идентификаторы. В некоторых случаях потребуется пересоздать узлы обмена.

Особое внимание уделите следующим нюансам:

  • 📋 В 1С:Предприятие 8.2 GUID мог храниться в другом формате (без дефисов). При миграции на 8.3 приведите его к стандартному виду.
  • 🔄 При восстановлении базы из резервной копии через 1Cv8dt используйте ключ /PreserveIBID, чтобы сохранить оригинальный GUID:
    1Cv8dt.exe RESTOREIB /F"backup.dt" /IBName:"ИмяБазы" /IBDir:"Путь" /PreserveIBID
  • 🔐 В облачных решениях (например, 1C:Fresh) GUID базы можно получить только через API или личный кабинет — прямого доступа к файлам или SQL нет.

Если вы работаете с репликацией, помните:

  • Каждый узел РИБ имеет свой GUID, даже если они синхронизируются.
  • При добавлении нового узла его GUID автоматически регистрируется в центральной базе.
  • При удалении узла его GUID остаётся в истории обменов и может конфликтовать при повторном добавлении.

FAQ: Частые вопросы о GUID в 1С

Можно ли вручную изменить GUID базы 1С?

Технически это возможно, но крайне не рекомендуется. GUID жёстко привязан к внутренним механизмам , и его изменение может привести к:

  • 🔄 Потере связи в распределённых базах (РИБ).
  • 🔗 Разрыву интеграций с внешними системами.
  • 📋 Ошибкам при восстановлении из резервных копий.

Если вам необходимо сохранить старый GUID при переносе базы, используйте утилиту 1Cv8dt с ключом /PreserveIBID.

Почему после обновления 1С изменился GUID базы?

Само обновление платформы не должно влиять на GUID. Однако идентификатор может измениться в следующих случаях:

  • 🔄 Вы выполнили выгрузку/загрузку базы через dt-файл без сохранения идентификатора.
  • 📋 База была пересоздана (например, через Создать информационную базу в конфигураторе).
  • 🖥️ Произошло автоматическое восстановление после сбоя (в некоторых версиях).

Чтобы избежать потери GUID, всегда используйте резервное копирование через 1Cv8dt с ключом /PreserveIBID.

Как получить GUID базы, если нет доступа к конфигуратору?

Есть несколько способов:

  1. Для файловой базы: Используйте утилиту 1Cv8dt (см. Способ 2).
  2. Для SQL-базы: Подключитесь к серверу через SQL Management Studio и выполните запрос к таблице v8users (см. Способ 3).
  3. Для облачной базы (1C:Fresh): Обратитесь в техническую поддержку или используйте API (требуется токен доступа).

Если у вас есть доступ к тонкому клиенту, можно выполнить код на встроенном языке (см. Способ 5).

Где хранится GUID в распределённой информационной базе (РИБ)?

В РИБ каждый узел имеет свой уникальный GUID, который хранится:

  • 📋 В центральной базе — в плане обмена (объект ПланОбмена.Узлы).
  • 🖥️ В узловой базе — в свойствах плана обмена (можно получить через ПланыОбмена.Найти("ИмяПлана").Узел.УникальныйИдентификатор).
  • 🔄 В регистрационных записях обмена (таблица _1SJOURN в SQL-базе).

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

Можно ли использовать GUID для идентификации базы в скриптах автоматического резервного копирования?

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

$guid = "123e4567-e89b-12d3-a456-426614174000"  # Замените на ваш GUID

$backupDir = "D:\Backups\$guid\"

$date = Get-Date -Format "yyyyMMdd_HHmmss"

$backupPath = "$backupDir\backup_$date.dt"

Выгрузка базы

1Cv8dt.exe DUMPIB /F"$backupPath" /IBName:"ИмяБазы" /IBDir:"ПутьКБазе" /Out"log.txt"

Проверка результата

if ($LASTEXITCODE -eq 0) {

Write-Output "Резервная копия для базы $guid создана в $backupPath"

} else {

Write-Error "Ошибка при создании резервной копии"

}

Преимущества такого подхода:

  • 📁 Автоматическое разделение резервных копий по папкам с GUID.
  • 🔄 Легкое восстановление на другой сервер с сохранением идентификатора.
  • 📋 Возможность параллельного копирования нескольких баз без конфликтов.