Идентификатор пользователя в 1С 8.3: где его взять и чем он отличается от кода справочника
Содержание
Самый надёжный способ получить код пользователя 1С — выполнить в базе одну строку кода: ПользователиИнформационнойБазы.ТекущийПользователь().УникальныйИдентификатор. Она вернёт GUID текущего пользователя информационной базы. Если нужен не текущий, а любой пользователь, откройте его карточку в Администрирование → Настройки пользователей и прав → Пользователи и снимите навигационную ссылку сочетанием Shift+F11.
Сначала решите, какой именно «код» вам нужен. В 1С 8.3 у одного человека два разных идентификатора: элемент справочника «Пользователи» и учётная запись в списке пользователей информационной базы. Перепутать их — главная причина, почему найденный GUID «не работает » в обмене или в отборе.
Два идентификатора одного пользователя: что именно вы ищете
Типовые конфигурации на Библиотеке стандартных подсистем (БП 3.0, ЗУП 3.1, УТ 11, КА, ERP) хранят пользователя в двух местах.
| Что | Где живёт | Как выглядит | Для чего нужен |
|---|---|---|---|
| Пользователь информационной базы | Список пользователей платформы (виден в Конфигураторе) | Имя, ПолноеИмя, УникальныйИдентификатор (GUID) | Вход в программу, аутентификация, права |
| Элемент справочника «Пользователи» | Таблица справочника в базе данных | Ссылка, наименование, GUID ссылки | Поле «Ответственный» в документах, настройки, отборы, обмены |
Связь между ними одна: реквизит ИдентификаторПользователяИБ в справочнике. В нём записан GUID учётной записи платформы.
Что из этого обычно называют «кодом пользователя»:
- 🔑 GUID пользователя ИБ — нужен для интеграций, скриптов администрирования, разбора журнала регистрации.
- 📇 GUID ссылки на элемент справочника — нужен для обменов, внешних систем, сопоставления в загрузке данных.
- 🔤 Имя пользователя (логин) — то, что видно в окне входа и в консоли кластера.
- 🔢 Код справочника — у справочника «Пользователи» в типовых решениях на БСП код обычно не используется, ключом служит ссылка. Если ваша конфигурация самописная и код задан, его видно в списке и карточке.
Если внешняя система просит «ID пользователя 1С», уточните, о каком из двух GUID идёт речь. Если речь о полях «Ответственный» или «Автор» в документах, нужна ссылка на элемент справочника — именно она там хранится.
Когда под «кодом» имеют в виду совсем другое
Иногда «кодом пользователя» называют данные, которые к базе вообще не относятся:
- 🌐 Логин Интернет-поддержки — учётная запись на портале 1С, через которую база получает обновления, курсы валют и сервисы. Подключённый логин виден в
Администрирование → Интернет-поддержка и сервисы. Пароль там не показывается — его восстанавливают на самом портале. - 🧾 Регистрационный номер программы — напечатан на регистрационной анкете из коробки или указан в лицензионном соглашении. Его спрашивают при регистрации продукта и обращении на линию консультаций.
- 👤 Табельный номер или код физлица в ЗУП — это реквизиты сотрудника, а не пользователя программы. Сотрудник может вообще не иметь входа в 1С.
Если вам нужно что-то из этого списка, GUID искать не нужно. Дальше речь только об идентификаторах внутри информационной базы.
Как найти код пользователя в интерфейсе 1С
В Конфигураторе
Откройте Конфигуратор и выберите Администрирование → Пользователи. Список покажет имя и полное имя каждой учётной записи, а в карточке — способы аутентификации, роли и язык.
GUID пользователя Конфигуратор не показывает. Отсюда удобно взять точное имя — дальше по нему найдёте идентификатор кодом или запросом.
В режиме «Предприятие» через навигационную ссылку
Это приём, который работает без прав на Конфигуратор и без внешних обработок:
- Откройте
Администрирование → Настройки пользователей и прав → Пользователи. - Двойным щелчком откройте карточку нужного сотрудника.
- Нажмите
Shift+F11(«Получить ссылку») и скопируйте строку.
Строка выглядит так:
e1cib/data/Справочник.Пользователи?ref=8a2b0050568b3f4211ee5c3d7e1f9a01
32 символа после ref= — это внутреннее представление ссылки. Это не GUID в привычном виде: группы байтов переставлены. Собрать GUID можно так (позиции считаются с первого символа):
символы 25–32 + "-" + 21–24 + "-" + 17–20 + "-" + 1–4 + "-" + 5–16
Для строки выше получится 7e1f9a01-5c3d-11ee-8a2b-0050568b3f42.
Навигационная ссылка даёт GUID элемента справочника, а не учётной записи платформы. Для входа, ролей и журнала регистрации нужен другой идентификатор — он лежит в реквизите ИдентификаторПользователяИБ.
Перед тем как отдавать пересчитанный GUID во внешнюю систему, проверьте его запросом из следующего раздела: ошибка в одной позиции даст «битую» ссылку, которую 1С покажет как <Объект не найден>.
Получение идентификатора пользователя запросом к базе
Запрос языка 1С сразу выдаёт и ссылку, и связанный GUID учётной записи. Выполнить его можно в консоли запросов (внешняя обработка для отладки) или во внешней обработке.
ВЫБРАТЬ
Пользователи.Ссылка КАК Ссылка,
Пользователи.Наименование КАК Наименование,
Пользователи.ИдентификаторПользователяИБ КАК ИдентификаторИБ,
Пользователи.Недействителен КАК Недействителен
ИЗ
Справочник.Пользователи КАК Пользователи
ГДЕ
НЕ Пользователи.ПометкаУдаления
УПОРЯДОЧИТЬ ПО
Наименование
Что вы увидите в результате:
- 📌 Ссылка — в консоли отображается как наименование. GUID ссылки получают в коде методом
Выборка.Ссылка.УникальныйИдентификатор(). - 📌 ИдентификаторИБ — GUID учётной записи платформы. Значение
00000000-0000-0000-0000-000000000000означает, что элемент справочника не связан с учётной записью: человек есть в списке, но войти в программу не может. - 📌 Недействителен — флаг из БСП для уволенных и отключённых сотрудников. Если в вашей конфигурации такого реквизита нет, удалите строку из запроса.
Чтобы найти конкретного сотрудника, добавьте в условие И Пользователи.Наименование ПОДОБНО "%Иванов%".
Запрос к справочнику не требует административных прав — достаточно права чтения справочника «Пользователи». Это удобно, когда доступа к списку пользователей ИБ у вас нет.
Системная таблица пользователей: v8users и журнал регистрации
Учётные записи платформы лежат не в справочнике, а в служебной таблице v8users. Языком запросов 1С до неё не добраться — только средствами СУБД.
Клиент-серверная база
В Microsoft SQL Server или PostgreSQL таблица так и называется — v8users. Посмотреть список можно запросом только на чтение:
SELECT ID, Name, Descr
FROM v8users
ORDER BY Name;
ID— идентификатор учётной записи в двоичном виде (16 байт);Name— имя для входа;Descr— полное имя.
Двоичное значение ID не всегда совпадает побайтно со строковым GUID, который возвращает платформа. Сверяйте записи по имени, а не по прямому сравнению байтов.
Никогда не изменяйте и не удаляйте строки в v8users напрямую. Платформа хранит в той же таблице служебные данные учётной записи. Ручная правка ломает вход, а иногда и всю базу. Сброс пароля и правка ролей делаются только через Конфигуратор или код.
Файловая база
В файловом варианте таблица находится внутри файла 1Cv8.1CD. Открыть её можно только сторонними утилитами для чтения формата 1CD — и только на копии файла, при закрытой базе. На практике проще и безопаснее получить GUID кодом из раздела ниже.
Журнал регистрации
Если нужно узнать идентификатор пользователя, который что-то сделал в прошлом, пригодится журнал регистрации. Интерактивно открывается через Администрирование → Обслуживание → Журнал регистрации, но в форме виден только логин.
GUID отдаёт программная выгрузка: метод ВыгрузитьЖурналРегистрации() возвращает таблицу, где в колонке Пользователь — уникальный идентификатор, а в ИмяПользователя — логин. Это единственный способ узнать GUID удалённой учётной записи: в списке пользователей её уже нет, а в журнале следы остались.
Консоль администрирования сервера 1С: кто работает в базе
Консоль кластера не показывает GUID пользователя. Зато она отвечает на вопрос, кто сейчас в базе, — и даёт точное имя для дальнейшего поиска.
Как посмотреть:
- Запустите оснастку «Администрирование серверов 1С Предприятия».
- Раскройте
Центральные серверы → <сервер> → Кластеры → <кластер> → Информационные базы → <база> → Сеансы. - В колонке «Пользователь» указано имя учётной записи, рядом — компьютер, приложение и время начала сеанса.
То же из командной строки через сервер администрирования ras и утилиту rac:
rac cluster list
rac session list --cluster=<uuid кластера>
В выводе session list поле user-name — имя пользователя, infobase — GUID базы. Остальные параметры смотрите в rac help session.
Из этой же консоли можно завершить сеанс. Пользователь потеряет несохранённые данные, а начатая операция прервётся. Если вам нужен только идентификатор, сеансы не трогайте.
Если оснастка не открывается с ошибкой о незарегистрированном компоненте, перерегистрируйте radmin.dll из каталога bin нужной версии платформы командой regsvr32 от имени администратора — разрядность платформы и оснастки должна совпадать.
Программное извлечение кода пользователя во внешней обработке
Когда идентификаторы нужны для всех сотрудников сразу или для выгрузки в другую систему, быстрее всего написать маленькую внешнюю обработку .
Создайте в Конфигураторе новую внешнюю обработку (Файл → Новый → Внешняя обработка), добавьте форму, на неё — команду «Показать коды», а в модуль формы вставьте код:
&НаКлиенте
Процедура ПоказатьКоды(Команда)
ПоказатьКодыНаСервере();
КонецПроцедуры
&НаСервере
Процедура ПоказатьКодыНаСервере()
// 1. Текущий пользователь — доступно любому
Текущий = ПользователиИнформационнойБазы.ТекущийПользователь();
Сообщить("Текущий: " + Текущий.Имя + " | " + Строка(Текущий.УникальныйИдентификатор));
// 2. Все учётные записи — нужны административные права
Для Каждого ПользовательИБ Из ПользователиИнформационнойБазы.ПолучитьПользователей() Цикл
Сообщить(ПользовательИБ.Имя + " | " + ПользовательИБ.ПолноеИмя + " | "
+ Строка(ПользовательИБ.УникальныйИдентификатор));
КонецЦикла;
// 3. Элементы справочника и связь с учётной записью
Запрос = Новый Запрос(
"ВЫБРАТЬ
| Пользователи.Ссылка КАК Ссылка,
| Пользователи.ИдентификаторПользователяИБ КАК ИдентификаторИБ
|ИЗ
| Справочник.Пользователи КАК Пользователи");
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить(Строка(Выборка.Ссылка) + " | ссылка: "
+ Строка(Выборка.Ссылка.УникальныйИдентификатор())
+ " | ИБ: " + Строка(Выборка.ИдентификаторИБ));
КонецЦикла;
КонецПроцедуры
Сохраните обработку в файл .epf и откройте её в режиме «Предприятие» через Файл → Открыть. Результат появится в окне сообщений.
Другие методы, которые пригодятся:
| Задача | Метод |
|---|---|
| Найти учётную запись по логину | ПользователиИнформационнойБазы.НайтиПоИмени("Иванов") |
| Найти учётную запись по GUID | ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(УИД) |
| Только имя текущего пользователя | ИмяПользователя() |
| Полное имя текущего пользователя | ПолноеИмяПользователя() |
| Ссылка на текущего в справочнике (БСП, сервер) | Пользователи.ТекущийПользователь() |
| То же на клиенте (БСП) | ПользователиКлиент.ТекущийПользователь() |
Перед НайтиПоУникальномуИдентификатору строку превращают в GUID: Новый УникальныйИдентификатор("7e1f9a01-5c3d-11ee-8a2b-0050568b3f42").
Если внешние обработки в базе запрещены настройками безопасности, тот же код можно выполнить из расширения конфигурации. Механизм расширений есть в платформе начиная с версии 8.3.6.
Ошибки при поиске идентификатора и как их обойти
Ещё одна частая путаница — сравнение двух GUID одного человека. Ссылка на элемент справочника и учётная запись платформы почти никогда не совпадают: это два разных объекта, созданных в разное время.