Идентификатор информационной базы 1С: где его искать на клиенте, на сервере и в СУБД

· 10 мин

Содержание

Быстрее всего ID базы 1С узнают двумя способами. На рабочем месте открывают файл %APPDATA%\1C\1CEStart\ibases.v8i и смотрят строку ID= в блоке нужной базы. На сервере выполняют rac infobase --cluster=<UUID кластера> summary list: команда выводит UUID каждой информационной базы кластера рядом с её именем.

Это два разных идентификатора. ID в ibases.v8i принадлежит записи в списке баз конкретного пользователя: по нему называются папки кэша. UUID в кластере принадлежит самой базе на сервере 1С: его требуют rac, скрипты обслуживания и техподдержка, когда разбирают журналы и сеансы. Определение идентификатора начинают с вопроса, какой из двух нужен.

Какой идентификатор базы вам нужен: сравнение вариантов

Под словами «ID базы» администраторы имеют в виду разные вещи. Таблица помогает выбрать способ, не перебирая все подряд.

Что ищетеГде лежитДля чего нуженТип базы
ID записи в списке базibases.v8i у пользователянайти и очистить кэш, перенести список базфайловая и серверная
UUID базы в кластеререестр кластера, вывод racскрипты rac, блокировка сеансов, разбор техжурналатолько серверная
UUID кластеравывод rac cluster listлюбая команда rac по базамтолько серверная
Имя базы данных в СУБДMS SQL, PostgreSQLбэкап средствами СУБД, перенос, обслуживаниетолько серверная

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

💡 У файловой базы UUID в кластере нет: кластера нет. Её идентифицируют по пути к каталогу с файлом 1Cv8.1CD, а для кэша используют ID из списка баз.

Как узнать ID базы 1С в списке запуска

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

Где лежит файл со списком баз

  • 📁 Список текущего пользователя Windows: %APPDATA%\1C\1CEStart\ibases.v8i
  • 📁 Общие списки, подключённые администратором: путь указан в файле %APPDATA%\1C\1CEStart\1cestart.cfg в строках CommonInfoBases=
  • 🐧 Linux: ~/.1C/1cestart/ibases.v8i

Пошагово

  1. Закройте окно запуска 1С, чтобы файл не перезаписался во время чтения.
  2. Нажмите Win+R, вставьте %APPDATA%\1C\1CEStart и нажмите Enter.
  3. Откройте ibases.v8i в Блокноте. Кодировка UTF-8, Блокнот её понимает.
  4. Найдите блок с названием базы в квадратных скобках.
  5. Строка ID= и есть идентификатор записи.

Фрагмент файла выглядит так:

[Бухгалтерия предприятия (основная)]
Connect=Srvr="srv-1c";Ref="buh_main";
ID=5b3f1e9a-7c2d-4a8e-9f10-2c6d8e4b7a31
OrderInList=16384
Folder=/
OrderInTree=16384
External=0
ClientConnectionSpeed=Normal
App=Auto
WA=1
Version=8.3

Строка Connect= подскажет тип базы. File="D:\Bases\Buh" означает файловую базу , Srvr=...;Ref=... означает серверную. Значение Ref — имя базы в кластере, по нему потом ищут UUID на сервере.

Зачем этот ID на практике

Главное применение — кэш. Папки кэша клиента называются ровно так же, как ID из списка:

  • %APPDATA%\1C\1cv8\<ID> — пользовательские настройки и часть кэша;
  • %LOCALAPPDATA%\1C\1cv8\<ID> — кэш конфигурации.

Если в профиле пользователя десятки папок с UUID-именами, а очистить нужно кэш только одной базы, ID из ibases.v8i показывает, какую папку трогать.

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

Нюанс: если удалить базу из списка и добавить снова, она получит новый ID. Старые папки кэша останутся мусором, их можно удалить.

UUID базы на сервере через командную строку rac

Для серверных баз основной инструмент — консольная утилита rac. Она лежит в каталоге платформы: C:\Program Files\1cv8\<версия>\bin\rac.exe. Работает через сервер администрирования ras, по умолчанию на порту 1545.

Шаг 1. Запустите сервер администрирования

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

cd "C:\Program Files\1cv8\8.3.24.1548\bin"
ras.exe cluster --port=1545 localhost:1540

Подставьте свою версию платформы. Окно не закрывайте, пока работаете с rac.

Шаг 2. Получите UUID кластера

rac.exe localhost:1545 cluster list

В выводе ищите строку cluster : — это UUID кластера. Обычно кластер один, на порту 1541.

Шаг 3. Выведите список баз с UUID

rac.exe localhost:1545 infobase --cluster=<UUID кластера> summary list

Для каждой базы команда печатает три строки:

infobase : 8d2a4c6e-1f3b-4a5d-9e7c-0b1a2c3d4e5f
name     : buh_main
descr    :

Значение name совпадает с Ref из строки подключения клиента. Так связывают запись в списке пользователя с базой на сервере.

Если на кластере заданы администраторы, добавьте --cluster-user=<имя> --cluster-pwd=<пароль> после --cluster.

Шаг 4. Детали базы и имя в СУБД

rac.exe localhost:1545 infobase --cluster=<UUID кластера> info --infobase=<UUID базы> --infobase-user=<пользователь 1С> --infobase-pwd=<пароль>

Здесь нужен пользователь самой базы с административными правами. В выводе есть dbms, db-server и db-name: тип СУБД, сервер и имя базы данных SQL. Эта команда отвечает на частый вопрос, в какой базе SQL лежат данные конкретной базы 1С.

Остальные параметры смотрите в справке: rac help infobase.

Быстрый поиск одной базы в PowerShell

Когда баз в кластере больше сотни, удобно отфильтровать вывод:

$rac = "C:\Program Files\1cv8\8.3.24.1548\bin\rac.exe"
$cl = (& $rac localhost:1545 cluster list | Select-String '^cluster\s*:').ToString().Split(':')[1].Trim()
& $rac localhost:1545 infobase --cluster=$cl summary list | Select-String -Context 1,0 'name\s*:\s*buh_main$'

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

💡 Вместо rac можно зайти в консоль администрирования серверов 1С. Но там UUID не так удобно копировать, а в скрипты всё равно нужен вывод rac.

Служебные файлы сервера и клиента, по которым видно ID базы

Когда ras не запущен или нет прав администратора кластера, UUID баз можно найти в файлах.

Реестр кластера: 1CV8Clst.lst

Сервер 1С хранит описание кластера в каталоге srvinfo:

  • Windows, установка по умолчанию: C:\Program Files\1cv8\srvinfo\reg_1541\1CV8Clst.lst
  • Linux: /home/usr1cv8/.1cv8/1C/1cv8/reg_1541/1CV8Clst.lst

Если служба запускается с другим каталогом данных, путь виден в параметре -d командной строки службы 1C:Enterprise 8.3 Server Agent.

Файл текстовый, во внутреннем формате 1С со скобками. Описание каждой базы начинается с её UUID, рядом — имя, сервер СУБД и имя базы данных. Найти нужную базу можно так:

findstr /n "buh_main" "C:\Program Files\1cv8\srvinfo\reg_1541\1CV8Clst.lst"

Строка с найденным именем начинается с UUID в фигурных скобках.

Файл только читайте. Не редактируйте и не удаляйте 1CV8Clst.lst: ошибка в нём ломает весь кластер. Если хотите изучить его подробно, скопируйте в другую папку и открывайте копию.

Папки баз в srvinfo

В том же каталоге reg_1541 есть подпапки с UUID-именами. Каждая принадлежит одной базе кластера: в ней сеансовые данные и, если включён, полнотекстовый индекс. Имя папки равно UUID базы из rac infobase summary list.

Отсюда практичный приём: чтобы понять, какая база занимает 30 ГБ на диске сервера, возьмите имя крупной папки и найдите этот UUID в выводе rac или в 1CV8Clst.lst.

Чистить папки сеансовых данных можно только при остановленной службе агента сервера 1С. Остановка службы оборвёт сеансы всех пользователей всех баз кластера, поэтому её делают вне рабочего времени и с предупреждением пользователей.

Файлы файловой базы

В каталоге файловой базы лежат:

  • 📄 1Cv8.1CD — сама база;
  • 📁 1Cv8Log — журнал регистрации;
  • 📁 1Cv8FTxt — полнотекстовый индекс, если он включён.

UUID-идентификатора в открытом виде среди них нет. Файловую базу однозначно задаёт путь к каталогу. Его видно в строке Connect=File="..." из ibases.v8i и в окне запуска под списком баз, когда база выделена.

База 1С в MS SQL и PostgreSQL: как сопоставить идентификатор

СУБД ничего не знает про UUID базы 1С. У неё свои объекты: имя базы данных и её внутренний номер. Задача обычно звучит так: «есть UUID или имя базы в 1С, нужно найти базу в SQL» или наоборот.

Самый надёжный путь

Возьмите db-name из rac infobase ... info (шаг 4 выше) или из 1CV8Clst.lst. Это и есть имя базы данных в СУБД.

Список баз на стороне СУБД

MS SQL Server:

SELECT name, database_id, create_date
FROM sys.databases
WHERE database_id > 4
ORDER BY name;

database_id > 4 отсекает системные базы master, tempdb, model, msdb.

PostgreSQL:

SELECT datname, oid, pg_size_pretty(pg_database_size(datname)) AS size
FROM pg_database
WHERE datistemplate = false
ORDER BY datname;

oid в PostgreSQL — номер базы. По нему называются каталоги в base/ внутри каталога данных кластера PostgreSQL. Это пригодится, если нужно понять, какая база занимает место на диске.

Кто сейчас подключён к базе SQL

Когда базы в 1С и SQL названы по-разному, помогают активные подключения. Сервер 1С подключается к СУБД от имени своих рабочих процессов, и это видно в списке сеансов.

MS SQL Server:

SELECT DB_NAME(database_id) AS db, host_name, program_name, COUNT(*) AS conn
FROM sys.dm_exec_sessions
WHERE database_id > 4
GROUP BY DB_NAME(database_id), host_name, program_name;

PostgreSQL:

SELECT datname, client_addr, application_name, COUNT(*) AS conn
FROM pg_stat_activity
WHERE datname IS NOT NULL
GROUP BY datname, client_addr, application_name;

Хост подключения подскажет, с какого сервера 1С идёт работа. Это удобно, когда к одной СУБД подключены два кластера.

Не меняйте данные в таблицах базы 1С через SQL. Прямые изменения обходят логику платформы и приводят к рассогласованию данных. Для поиска идентификатора хватает запросов на чтение к системным представлениям.

Чем помогает chdbfl и чего от неё не ждать

Утилита chdbfl.exe лежит в C:\Program Files\1cv8\<версия>\bin\. Она проверяет физическую целостность файловой базы 1Cv8.1CD и умеет исправлять найденные повреждения.

Идентификатор базы утилита не показывает. В задаче поиска ID она нужна в одном случае: у вас на диске несколько копий базы, и надо понять, какая из них рабочая и неповреждённая.

Порядок:

  1. Убедитесь, что к базе никто не подключён: утилита требует монопольного доступа к файлу.
  2. Сделайте копию 1Cv8.1CD.
  3. Запустите chdbfl.exe, укажите путь к файлу.
  4. Сначала проверяйте без флажка «Исправлять обнаруженные ошибки».
  5. Если ошибок нет, файл годен. Его путь и станет идентификатором базы в списке запуска.

Для серверных баз chdbfl не применяется. Их проверяют средствами СУБД или через Конфигуратор → Администрирование → Тестирование и исправление.

Почему ID не совпадает и где ошибаются

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

Ещё несколько нюансов, которые всплывают при идентификации:

  • 🔁 Переименование базы через rac infobase update или консоль не меняет её UUID. Скрипты с UUID продолжат работать.
  • 📦 Загрузка .dt в существующую базу UUID не меняет: меняется содержимое, регистрация в кластере та же.
  • 🗂 Публикация на веб-сервере хранит строку подключения в default.vrd, в атрибуте ib. Там указано имя базы, а не UUID.

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

Можно ли узнать UUID базы из самой 1С, не заходя на сервер?
Пользователь в режиме 1С:Предприятие видит строку подключения: её выводит функция СтрокаСоединенияИнформационнойБазы() во встроенном языке. В ней есть сервер и имя базы, а UUID кластера нет. За UUID всё равно идут в rac или консоль кластера.
Меняется ли ID базы при обновлении платформы?
Нет. Ни ID записи в списке, ни UUID в кластере обновление платформы не трогает. Новые папки кэша могут появиться, но имена у них прежние.
Нужен ли ID базы при обращении в техподдержку?
Иногда просят UUID базы в кластере: по нему фильтруют технологический журнал и список сеансов. ID из списка баз пользователя поддержке обычно не нужен.
Можно ли задать базе в кластере свой UUID?
Нет. Платформа присваивает UUID при создании или регистрации базы в кластере. Управлять можно только именем и описанием.
Где ID базы в 1С на Linux?
Список баз — в ~/.1C/1cestart/ibases.v8i, строка ID= та же. Утилита rac на Linux работает с теми же командами, файл кластера — в каталоге reg_1541 домашней папки пользователя usr1cv8.