Где найти GUID информационной базы 1С на сервере и в файловом варианте
Содержание
Для серверной базы идентификатор определяют командой rac infobase summary list --cluster=<UUID кластера>: в выводе у каждой базы есть поле infobase — это её GUID в кластере 1С. Для файловой базы GUID кластера нет, и «идентификатором базы» обычно называют ID записи в списке баз из файла ibases.v8i: по нему названы папки кэша в профиле пользователя.
Способов несколько, и выбирают их по задаче. Нужен GUID для скрипта администрирования или поиска журнала регистрации на сервере — берите rac или реестр кластера. Нужно почистить кэш
конкретной файловой базы — смотрите ibases.v8i. Запрос к SQL помогает только связать базу кластера с базой данных СУБД, сам GUID там в готовом виде не лежит.
Какой идентификатор базы 1С вам нужен
Под словами «идентификатор базы» в 1С скрываются разные вещи. Если перепутать их, найденный GUID «не подойдёт» туда, куда вы его вставляете.
| Что называют идентификатором | Где живёт | Для чего нужен |
|---|---|---|
| GUID информационной базы в кластере | реестр кластера сервера 1С | команды rac, каталоги журнала и сеансовых данных на сервере |
ID в списке баз | ibases.v8i на компьютере пользователя | имена папок кэша, поиск базы в списке |
Имя базы в кластере (Ref) | строка соединения Srvr=...;Ref=... | подключение клиента, публикация на веб-сервере |
| Имя базы данных СУБД | MS SQL / PostgreSQL | бэкапы и обслуживание на стороне СУБД |
| Код узла обмена, префикс базы | данные конфигурации | обмены, РИБ, нумерация документов |
Ключевая разница: GUID в кластере один на базу и одинаков для всех пользователей. ID из ibases.v8i свой у каждого пользователя и компьютера, даже если база одна и та же.
Что показывает сама 1С: «О программе» и Конфигуратор
Ни в режиме «Предприятие», ни в Конфигураторе GUID базы кластера на экран не выводится. Зато здесь быстро узнают строку соединения, а по ней уже ищут GUID.
В режиме «Предприятие»
- Откройте главное меню (кнопка с тремя полосками в заголовке окна).
- Выберите
Справка → О программе. - В строке информационной базы будет строка соединения:
- для файловой базы —
File="D:\Bases\Buh"; - для серверной —
Srvr="srv1c";Ref="buh_main".
- для файловой базы —
Из серверной строки вам нужны две вещи: имя сервера (Srvr) и имя базы в кластере (Ref). Имя в кластере не обязано совпадать с названием базы в списке запуска — пользователь мог назвать её как угодно.
В Конфигураторе
В Конфигураторе то же окно открывается через Справка → О программе. Там видно строку соединения и версию платформы. Сам GUID Конфигуратор не показывает, сколько ни ищите в свойствах конфигурации.
Свойство конфигурации «Имя» и её версия — это данные конфигурации, а не базы. В десяти базах одной БП 3.0 они одинаковые и для идентификации базы не годятся.
Через встроенный язык
Функция СтрокаСоединенияИнформационнойБазы() возвращает ту же строку, что окно «О программе». Её удобно выводить в обработке или писать в лог при отладке обменов:
Сообщить(СтрокаСоединенияИнформационнойБазы());
GUID кластера этой функцией не получить: она отдаёт имя сервера и имя базы, а дальше работает rac.
Определяем GUID серверной базы утилитой rac
rac — консольный клиент сервера администрирования ras. Утилита лежит в каталоге bin установленной платформы, например C:\Program Files\1cv8\8.3.24.1342\bin\rac.exe. По умолчанию она подключается к ras на порту 1545.
Шаг 1. Запустите сервер администрирования
Если ras не установлен службой, запустите его вручную на сервере 1С:
cd "C:\Program Files\1cv8\8.3.24.1342\bin"
ras cluster --daemon
Без работающего ras любая команда rac упадёт с ошибкой соединения.
Шаг 2. Узнайте UUID кластера
rac cluster list
В выводе ищите поле cluster — это идентификатор кластера, он понадобится в каждой следующей команде. Рядом будут host и port (обычно 1541).
Шаг 3. Выведите список баз с GUID
rac infobase summary list --cluster=<UUID кластера>
Для каждой базы команда печатает три поля:
- 🔑
infobase— GUID базы, ради которого всё затевалось; - 🏷
name— имя базы в кластере (то самоеRefиз строки соединения); - 📝
descr— описание, если его заполняли.
Если на кластере задан администратор, добавьте учётные данные:
rac infobase summary list --cluster=<UUID кластера> --cluster-user=admin --cluster-pwd=пароль
Шаг 4. Проверьте, что это та база
Для подробностей по одной базе есть команда info. Она требует ещё и логин пользователя самой информационной базы:
rac infobase info --cluster=<UUID кластера> --infobase=<GUID базы> --infobase-user=Администратор --infobase-pwd=пароль
В ответе есть тип СУБД, сервер СУБД и имя базы данных (db-name). По ним сразу видно, что GUID относится к нужной базе, а не к её тестовой копии с похожим именем.
Пароль в командной строке остаётся в истории консоли и в логах планировщика. В скриптах берите его из переменной окружения или защищённого хранилища.
Если не уверены в синтаксисе ключей своей версии платформы, смотрите встроенную справку: rac help infobase.
Вариант для Linux
На Linux команды те же, путь к утилите обычно /opt/1cv8/x86_64/<версия>/rac. Список баз удобно сразу отфильтровать:
/opt/1cv8/x86_64/8.3.24.1342/rac infobase summary list --cluster=<UUID> | grep -B1 -A1 "buh_main"
GUID в реестре кластера и каталогах srvinfo
Когда ras поднять нельзя, GUID находят прямо в файлах сервера. Нужен доступ к каталогу службы сервера 1С.
Где лежит реестр
- 🪟 Windows (служба по умолчанию):
C:\Program Files\1cv8\srvinfo\reg_1541\ - 🐧 Linux:
/home/usr1cv8/.1cv8/1C/1cv8/reg_1541/
Цифры в reg_1541 — порт менеджера кластера. Если кластер работает на другом порту, папка называется иначе, например reg_2541.
Способ 1. Файл 1CV8Clst.lst
В каталоге reg_1541 лежит файл 1CV8Clst.lst — реестр кластера в текстовом формате со скобками. Откройте его копию в редакторе и найдите имя базы поиском. GUID базы стоит в той же записи перед её именем.
- Скопируйте
1CV8Clst.lstв любую рабочую папку. - Откройте копию в Notepad++ или другом редакторе.
- Найдите имя базы из
Ref. - Возьмите GUID в формате
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxв начале записи.
Не редактируйте и не сохраняйте оригинал 1CV8Clst.lst при работающей службе — повреждённый реестр кластера приводит к тому, что базы перестают открываться. Работайте только с копией.
Способ 2. Подкаталоги баз
В reg_1541 для каждой информационной базы есть подкаталог, названный её GUID. Внутри — журнал регистрации 1Cv8Log и служебные данные. Если нужно найти журнал конкретной базы:
- Отсортируйте подкаталоги по дате изменения.
- Откройте каталог, где
1Cv8Logобновлялся в момент работы пользователей нужной базы. - Сверьте имя каталога с GUID из
1CV8Clst.lst.
Подкаталоги без записи в реестре — следы удалённых из кластера баз. Их GUID в rac уже не встретите.
Что даёт запрос к SQL
В базе данных MS SQL или PostgreSQL GUID информационной базы кластера в готовом читаемом поле не хранится. SQL нужен для другого: сопоставить базу 1С с базой данных СУБД и убедиться, что вы смотрите туда, куда нужно.
Список баз данных на сервере СУБД
MS SQL Server:
SELECT name, database_id, create_date
FROM sys.databases
ORDER BY name;
PostgreSQL:
SELECT datname, oid
FROM pg_database
ORDER BY datname;
database_id и oid — внутренние номера СУБД. К идентификатору базы 1С они отношения не имеют, хотя их иногда за него принимают.
Как связать SQL-базу с GUID 1С
- Через
rac infobase infoполучитеdb-serverиdb-nameнужной базы. - Найдите это имя в списке из запроса выше.
- Если имён много и они похожи, проверьте наличие служебных таблиц 1С — например,
ConfigиParams: в чужой базе их не будет.
-- MS SQL: есть ли в базе таблицы платформы 1С
USE buh_main_db;
SELECT name FROM sys.tables WHERE name IN ('Config', 'Params', 'IBVersion');
Только чтение. Любые UPDATE и DELETE в таблицах платформы 1С ломают базу, а восстановить её поможет лишь резервная копия.
Идентификатор файловой базы: ibases.v8i и папки кэша
Файловая база не регистрируется в кластере, поэтому GUID кластера у неё нет. Практический идентификатор — ID записи в списке баз пользователя.
Где файл списка баз
Список баз хранится в %APPDATA%\1C\1CEStart\ibases.v8i. Вставьте путь в адресную строку проводника — он раскроется в профиль текущего пользователя.
Запись одной базы выглядит так:
[Бухгалтерия основная]
Connect=File="D:\Bases\Buh";
ID=3f2a9c1e-7b4d-4e8a-9c61-0d5e2f8b1a47
OrderInList=16384
Folder=/
- 📂
Connect— путь к каталогу с файлом1Cv8.1CD; - 🔑
ID— идентификатор записи списка; - 🗂
Folder— папка в окне запуска, если базы сгруппированы.
Папки кэша с этим ID
Платформа создаёт папки кэша, названные этим ID:
%APPDATA%\1C\1cv8\<ID>%LOCALAPPDATA%\1C\1cv8\<ID>
Так находят кэш одной базы, не трогая остальные. Перед удалением папки закройте все сеансы этой базы на компьютере: открытый клиент держит файлы и может записать их заново.
Почему ID у коллеги другой
Каждый раз, когда базу добавляют в список вручную, платформа генерирует новый ID. У двух бухгалтеров, работающих с одной D:\Bases\Buh, он разный. Если базы раздают общим файлом .v8i через групповые политики или общий список, ID совпадёт у всех, кто получил этот файл.
Для серверной базы ibases.v8i тоже есть, но там ID — всё так же запись списка, а не GUID в кластере. Это главная причина путаницы.
Почему GUID «не тот» или не находится
На этих ситуациях спотыкаются и опытные администраторы. У каждой есть быстрая проверка.
Ещё одна ловушка — несколько кластеров на одном сервере с разными портами. У каждого свой каталог reg_<порт> и свой 1CV8Clst.lst. Ищете базу не в том каталоге — не находите её вовсе.