GUID в 1С: где найти идентификатор базы, пользователя и объекта
Содержание
GUID элемента в 1С проще всего получить кодом: Ссылка.УникальныйИдентификатор(). GUID серверной информационной базы показывает команда rac infobase summary list, а пользователя — свойство УникальныйИдентификатор у объекта ПользовательИнформационнойБазы. Без доступа к коду идентификатор элемента можно вытащить из навигационной ссылки.
Типичная ситуация: администратор видит в каталоге srvinfo папку с именем вроде 3f2a…-…-9c41 и не понимает, какой базе она принадлежит. Или интегратор просит «GUID контрагента», чтобы сопоставить записи в обмене. Ниже — как узнать GUID в 1С для каждого случая, по шагам.
Что такое GUID в 1С и какие идентификаторы бывают
GUID (он же UUID) — 128-битное число, записанное как 32 шестнадцатеричных символа с дефисами: 6f9619ff-8b86-d011-b42d-00cf4fc964ff. Платформа 1С:Предприятие 8.3 присваивает такие номера всему, что нужно отличать друг от друга надёжнее, чем по имени.
Где встречаются идентификаторы:
- 🗄️ Информационная база на сервере — GUID в реестре кластера. По нему названы служебные папки базы в
srvinfo. - 👤 Пользователь ИБ — у каждой учётной записи свой идентификатор. По нему пользователь записан в журнале регистрации.
- 📄 Ссылка на объект — элемент справочника, документ, бизнес-процесс. Это поле
Ссылкав запросах. - 🧩 Объект метаданных — у справочника, реквизита, формы в конфигурации есть свой uuid.
- 🖥️ Кластер, рабочий сервер, сеанс — тоже GUID, их выдаёт
rac. - 📋 Запись в списке баз — строка
ID=в файлеibases.v8i.
Последний пункт часто путают с GUID самой базы. Это идентификатор строки в списке у конкретного пользователя на конкретном компьютере. Если базу добавить в список заново, ID будет другим, хотя база та же.
| Что ищем | Где лежит | Чем получить |
|---|---|---|
| Серверная база | реестр кластера | rac, файл 1CV8Clst.lst |
| Файловая база в списке | ibases.v8i | текстовый редактор |
| Пользователь ИБ | список пользователей | код, журнал регистрации |
| Элемент, документ | поле _IDRRef в таблице СУБД | код, навигационная ссылка, SQL |
| Объект метаданных | конфигурация | выгрузка конфигурации в XML |
Как узнать GUID информационной базы на сервере 1С
Через утилиту rac
Утилита rac работает через сервер администрирования ras. Если ras не запущен, стартуйте его на сервере 1С (по умолчанию слушает порт 1545):
"C:\Program Files\1cv8\8.3.xx.xxxx\bin\ras.exe" cluster --daemon
Затем по шагам:
- Узнайте GUID кластера:В выводе первая строка —
rac cluster listcluster : <uuid>. - Выведите список баз этого кластера:
rac infobase summary list --cluster=<uuid кластера> - Найдите строку
nameс нужным именем базы. Строкаinfobaseнад ней — и есть её GUID.
Если на кластере включена аутентификация администратора, добавьте --cluster-user и --cluster-pwd. Полный список параметров показывает rac help infobase.
💡 На Linux команды те же, бинарники лежат в /opt/1cv8/x86_64/<версия>/.
Через файл реестра кластера
Если ras поднимать не хочется, откройте файл 1CV8Clst.lst в каталоге srvinfo\reg_1541 (на Windows по умолчанию C:\Program Files\1cv8\srvinfo\). Это текстовый файл со скобочной структурой. Ищите имя базы через поиск — GUID стоит рядом с ним в той же записи.
Файл только читайте. Не редактируйте и не сохраняйте 1CV8Clst.lst при работающем сервере — испорченный реестр кластера ломает доступ ко всем базам. Если всё же открыли в редакторе, закройте без сохранения.
Обратная задача: чья это папка
В srvinfo\reg_1541\ лежат каталоги с именами-GUID — там журнал регистрации серверной базы (1Cv8Log) и служебные данные. Чтобы понять, какой базе принадлежит папка, скопируйте её имя и найдите его поиском в 1CV8Clst.lst или в выводе rac infobase summary list.
Если GUID не нашёлся ни там, ни там — база удалена из кластера, а папка осталась. Такие каталоги можно убрать, но только после проверки и при остановленной службе.
Остановка службы «Агент сервера 1С:Предприятия» обрывает сеансы всех пользователей всех баз кластера. Делайте это вне рабочего времени и после предупреждения пользователей.
Где найти GUID файловой базы и записи в списке баз
У файловой базы нет реестра кластера. Что можно посмотреть:
- Откройте
%APPDATA%\1C\1CEStart\ibases.v8iв Блокноте. - Найдите блок с названием базы в квадратных скобках.
- Строка
ID=— GUID этой записи списка.
[Бухгалтерия предприятия]
Connect=File="D:\Bases\Buh";
ID=1b7c3e2a-4f0d-4c11-9a8e-2d5f6a7b8c9d
По этому ID названы папки кэша в %APPDATA%\1C\1cv8\ и %LOCALAPPDATA%\1C\1cv8\. Отсюда практическое правило: чтобы почистить кэш
одной базы, а не всех, найдите её ID в ibases.v8i и удалите только папку с таким же именем. Перед этим закройте 1С на этом компьютере.
💡 У разных пользователей Windows один и тот же файл базы имеет разные ID в своих списках. Для сопоставления между компьютерами этот GUID не годится.
Как получить GUID пользователя и элемента кодом 1С
Код можно выполнить во внешней обработке или в консоли кода, если она есть в базе. Нужны права на запуск внешних обработок.
GUID ссылки на объект
// Получить GUID элемента
Идентификатор = Ссылка.УникальныйИдентификатор();
Сообщить(Строка(Идентификатор));
// Найти элемент по известному GUID
УИД = Новый УникальныйИдентификатор("1b7c3e2a-4f0d-4c11-9a8e-2d5f6a7b8c9d");
Ссылка = Справочники.Контрагенты.ПолучитьСсылку(УИД);
Если Ссылка.ПолучитьОбъект() = Неопределено Тогда
Сообщить("Объекта с таким GUID нет");
КонецЕсли;
ПолучитьСсылку() не проверяет существование объекта: она просто собирает ссылку из GUID. Поэтому проверка через ПолучитьОбъект() обязательна, иначе получите «битую ссылку» вида <Объект не найден>.
Для документов то же самое: Документы.РеализацияТоваровУслуг.ПолучитьСсылку(УИД).
GUID пользователя информационной базы
// Текущий пользователь
ТекПользователь = ПользователиИнформационнойБазы.ТекущийПользователь();
Сообщить(ТекПользователь.Имя + ": " + ТекПользователь.УникальныйИдентификатор);
// Все пользователи
Для Каждого Пользователь Из ПользователиИнформационнойБазы.ПолучитьПользователей() Цикл
Сообщить(Пользователь.Имя + " — " + Пользователь.УникальныйИдентификатор);
КонецЦикла;
// Поиск по GUID
Найденный = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(УИД);
В типовых конфигурациях на БСП есть ещё справочник Пользователи. У его элемента свой GUID ссылки, а связь с учётной записью платформы хранится в реквизите ИдентификаторПользователяИБ. Это два разных идентификатора, их нельзя подставлять один вместо другого.
Без кода: навигационная ссылка
Откройте элемент и нажмите кнопку «Получить ссылку» (значок цепочки в заголовке формы). Получится строка вида:
e1cib/data/Справочник.Контрагенты?ref=9a8e2d5f6a7b8c9d4c114f0d1b7c3e2a
32 символа после ref= — это GUID, но байты в нём переставлены. Чтобы собрать обычный вид, разбейте строку на группы и переставьте их:
| Позиция в ref | Символы | Часть GUID |
|---|---|---|
| 1–4 | 9a8e | 4-я группа |
| 5–16 | 2d5f6a7b8c9d | 5-я группа |
| 17–20 | 4c11 | 3-я группа |
| 21–24 | 4f0d | 2-я группа |
| 25–32 | 1b7c3e2a | 1-я группа |
Итог: 1b7c3e2a-4f0d-4c11-9a8e-2d5f6a7b8c9d. Проверка: в обоих видах ровно 32 шестнадцатеричных символа, ни один не потерялся.
Как найти GUID через запрос к SQL-серверу
В клиент-серверной базе ссылка хранится в поле _IDRRef типа binary(16) в MS SQL или bytea в PostgreSQL. Порядок байтов там тот же, что в навигационной ссылке.
Шаг 1. Узнать имя таблицы
Таблицы называются обезличенно: _Reference45, _Document112. Соответствие с метаданными даёт функция платформы:
Структура = ПолучитьСтруктуруХраненияБазыДанных(, Истина);
Для Каждого Строка Из Структура Цикл
Если Найти(Строка.Метаданные, "Контрагенты") > 0 Тогда
Сообщить(Строка.Метаданные + " → " + Строка.ИмяТаблицыХранения);
КонецЕсли;
КонецЦикла;
Второй параметр Истина возвращает имена таблиц СУБД, а не внутренние.
Шаг 2. Выбрать запись и собрать GUID
MS SQL:
DECLARE @h CHAR(32);
SELECT @h = CONVERT(CHAR(32), _IDRRef, 2)
FROM _Reference45
WHERE _Description = N'ООО Ромашка';
SELECT LOWER(
SUBSTRING(@h,25,8) + '-' + SUBSTRING(@h,21,4) + '-' +
SUBSTRING(@h,17,4) + '-' + SUBSTRING(@h,1,4) + '-' +
SUBSTRING(@h,5,12)) AS GUID;
PostgreSQL:
SELECT substr(h,25,8)||'-'||substr(h,21,4)||'-'||substr(h,17,4)||'-'||
substr(h,1,4)||'-'||substr(h,5,12) AS guid
FROM (SELECT encode(_idrref,'hex') AS h
FROM _reference45
WHERE _description = 'ООО Ромашка') t;
Номер таблицы 45 — пример, подставьте свой из шага 1.
Только SELECT. Изменение данных 1С напрямую в СУБД обходит проверки платформы и регистры. Результат — расхождения, которые потом ищут неделями. Перед любой работой с базой на уровне СУБД сделайте резервную копию и согласуйте действия по регламенту.
Учётные записи пользователей лежат в служебной таблице v8users. Читать её можно, править нельзя: пароли и роли там хранятся в формате платформы, ручная правка ломает вход.
ODBC и внешние утилиты для поиска идентификаторов
В 1С 8.3 нет собственного ODBC-драйвера к информационной базе. «Через ODBC» на практике означает подключение к СУБД клиент-серверной базы: тот же MS SQL или PostgreSQL, только из Excel, Power BI или скрипта. Запросы и перестановка байтов — те же, что в разделе выше.
Что ещё помогает:
- 🔌 COM-соединение (
V83.COMConnector) — внешняя программа подключается к базе как клиент и вызывает тот же код сУникальныйИдентификатор(). Нужна лицензия на сеанс и права пользователя. - 🌐 OData — если стандартный интерфейс OData опубликован, ключи сущностей отдаются в виде
Ref_Keyс GUID в обычном формате. Перестановка не нужна. - 🛠️ Утилиты для чтения файла
1Cv8.1CD— сторонние программы открывают файловую базу на чтение и показывают таблицы с полями-ссылками. Работайте только с копией файла и при закрытой 1С.
💡 Для разовой задачи «узнать GUID одного контрагента» внешние средства избыточны. Навигационная ссылка или три строки кода быстрее. ODBC и OData окупаются при массовом сопоставлении — например, при сверке двух баз после обмена.
GUID в файлах конфигурации и служебных логах
Объекты метаданных
У справочника, реквизита или формы в конфигураторе GUID в палитре свойств не показывается. Чтобы его увидеть:
- В конфигураторе выполните
Конфигурация → Выгрузить конфигурацию в файлы. - Укажите пустой каталог.
- Откройте XML нужного объекта — атрибут
uuidу корневого элемента и есть его идентификатор.
Эти uuid нужны, когда разбираетесь с ошибками сравнения-объединения конфигураций или с расширениями: объекты сопоставляются именно по ним, а не по именам.
Журнал регистрации
В журнале регистрации пользователь записан по GUID, а имя подставляется из словаря. В старом формате (.lgf + .lgp) словарь лежит в файле 1Cv8.lgf текстом: рядом с каждым именем пользователя стоит его идентификатор. Когда пользователя удалили, в журнале остаётся только GUID — по .lgf можно понять, кто это был.
Где лежат журналы:
- 📁 файловая база — каталог
1Cv8Logрядом с1Cv8.1CD; - 📁 серверная база —
srvinfo\reg_1541\<GUID базы>\1Cv8Log.
В новом формате журнал хранится в файле .lgd (это SQLite), открыть его можно любым просмотрщиком SQLite. Работайте с копией файла.
Технологический журнал
Если в logcfg.xml включены события сеансов и соединений, в записях встречаются идентификаторы баз и сеансов. Сопоставляйте их с выводом rac session list — там у каждого сеанса видно и GUID базы, и имя пользователя.
Частые проблемы при поиске GUID и их решения
Меняется ли GUID элемента при копировании справочника?
Можно ли задать GUID вручную при создании элемента?
Объект.УстановитьСсылкуНового(Справочники.Контрагенты.ПолучитьСсылку(УИД)) до первой записи. Так переносят объекты между базами с сохранением ссылок.Совпадает ли GUID базы после выгрузки и загрузки .dt?
Зачем внешним сервисам GUID контрагента, если есть ИНН?
Подходит ли GUID пользователя ИБ для настройки прав в типовой конфигурации?
Пользователи и группы доступа. GUID учётной записи нужен для журнала регистрации и сопоставления с внешними системами.