Кто есть в базе 1С: выгружаем пользователей, их роли и активные сеансы
Содержание
Быстрее всего вывести список
пользователей 1С в Конфигураторе: Администрирование → Пользователи. В пользовательском режиме БП 3.0 и ЗУП 3.1 тот же список лежит в Администрирование → Настройки пользователей и прав → Пользователи, а выгрузить его в Excel можно командой Ещё → Вывести список….
Если нужен не реестр учётных записей, а кто прямо сейчас работает в базе, — это другой список: «Активные пользователи» или сеансы в консоли кластера. Для аудита прав и выгрузки с ролями удобнее короткий код на встроенном языке. Все способы ниже работают в платформе 8.3 и не зависят от конфигурации, кроме путей пользовательского режима.
Что именно вы хотите получить: три разных списка
В 1С под «списком пользователей» обычно понимают одно из трёх. Путают их часто, поэтому сначала определитесь с задачей.
| Что нужно | Где хранится | Чем смотреть |
|---|---|---|
| 👤 Все учётные записи, под которыми можно войти | Пользователи информационной базы (платформа) | Конфигуратор, код, SQL-таблица v8users |
| 🗂 Сотрудники с ФИО, группами доступа, контактами | Справочник «Пользователи» (типовые конфигурации на БСП) | Раздел администрирования, запрос |
| 🟢 Кто в базе прямо сейчас | Сеансы | «Активные пользователи», консоль кластера, rac |
Справочник и пользователи базы связаны через идентификатор, но это два разных объекта. Элемент справочника может существовать без учётной записи: тогда в его карточке снят флажок «Вход в программу разрешён». И наоборот: учётную запись, созданную в Конфигураторе вручную, типовая конфигурация в справочнике может не показать.
Для отчёта «кто может зайти в базу» берите список из Конфигуратора или код. Для отчёта «кто у нас работает и с какими правами» — справочник и группы доступа.
Список пользователей в Конфигураторе и в режиме Предприятия
Через Конфигуратор
- Запустите базу в режиме Конфигуратора под пользователем с правом администрирования.
- Откройте
Администрирование → Пользователи. - В списке видно имя для входа и полное имя. Двойной щелчок открывает карточку.
- На вкладке «Основные» — способы аутентификации (1С, операционная система, OpenID) и пользователь Windows. На вкладке «Прочие» — роли, основной язык и режим запуска.
Если список пустой, в базе нет ни одной учётной записи. Такая база открывается без запроса логина и пароля, и любой вошедший получает полные права.
Через пользовательский режим
В типовых конфигурациях на «Такси» путь к справочнику такой:
| Конфигурация | Путь к списку пользователей |
|---|---|
| Бухгалтерия предприятия 3.0 | Администрирование → Настройки пользователей и прав → Пользователи |
| ЗУП 3.1 | Администрирование → Настройки пользователей и прав → Пользователи |
| Управление торговлей 11 | НСИ и администрирование → Настройки пользователей и прав → Пользователи |
Чтобы сохранить список в файл:
- Откройте форму списка и настройте колонки через
Ещё → Изменить форму…, если нужны дополнительные поля. - Выберите
Ещё → Вывести список…, отметьте нужные колонки и нажмите «ОК». - В открывшемся табличном документе сохраните результат в формате
.xlsxчерез меню сохранения.
Пользователи с признаком «Недействителен» в типовых конфигурациях по умолчанию скрыты из списка. Если нужны и уволенные сотрудники, включите их показ флажком над списком.
Кто работает в базе прямо сейчас: активные сеансы
Файловая база
Окно «Активные пользователи» есть и в Конфигураторе (Администрирование → Активные пользователи), и в пользовательском режиме: главное меню → Функции для технического специалиста → Стандартные → Активные пользователи. В старых релизах платформы этот пункт называется «Все функции» и включается в Сервис → Параметры.
В окне видно имя пользователя, приложение (тонкий клиент, Конфигуратор, фоновое задание), компьютер и время начала сеанса. Для файловой базы это единственный штатный способ: консоли кластера у неё нет.
Клиент-серверная база: консоль администрирования
- Откройте «Администрирование серверов 1С Предприятия».
- Разверните
Центральные серверы 1С:Предприятия → <сервер> → Кластеры → <кластер> → Информационные базы → <база>. - Выберите узел «Сеансы». В таблице — пользователь, компьютер, приложение, начало сеанса, номер сеанса и признак захваченной лицензии.
Узел «Соединения» показывает низкоуровневые подключения. Для вопроса «кто в базе» он менее удобен: у одного сеанса бывает несколько соединений.
Клиент-серверная база: утилита rac
Для скриптов и выгрузки в текстовый файл есть консольная утилита rac. Она работает через сервер администрирования RAS (по умолчанию порт 1545), поэтому служба RAS должна быть запущена.
rem 1. Узнать идентификатор кластера
rac localhost:1545 cluster list
rem 2. Узнать идентификатор информационной базы
rac localhost:1545 infobase summary list --cluster=<uuid-кластера>
rem 3. Сеансы конкретной базы
rac localhost:1545 session list --cluster=<uuid-кластера> --infobase=<uuid-базы>
rem То же с данными о лицензиях
rac localhost:1545 session list --cluster=<uuid-кластера> --licenses
Если на кластере задан администратор, добавьте --cluster-user=<имя> --cluster-pwd=<пароль>. Вывод можно перенаправить в файл: > sessions.txt. Остальные параметры смотрите в rac help session.
rac и консоль показывают только сеансы. Реестр учётных записей базы через них не получить: для этого нужен Конфигуратор, код или SQL.
Пользователи в SQL: таблица v8users
В клиент-серверной базе учётные записи хранятся в служебной таблице v8users. Это удобно, когда платформа не запускается или нужно быстро сверить десятки баз.
Запрос для MS SQL Server:
SELECT Name, Descr, OSName, Changed
FROM dbo.v8users
ORDER BY Name;
Для PostgreSQL имя таблицы пишется строчными буквами, поля тоже: SELECT name, descr, osname FROM v8users;.
Что в полях:
- 🔑
Name— имя для входа; - 📝
Descr— полное имя; - 🖥
OSName— привязанный пользователь Windows, если включена аутентификация ОС; - 🕒
Changed— дата последнего изменения записи.
Роли и настройки лежат в двоичном поле Data, разбирать его SQL-запросом бессмысленно. Список ролей получайте средствами платформы.
Только чтение. Любая правка v8users в обход платформы ломает учётные записи, а восстановить их потом можно лишь из резервной копии. Запросы выполняйте под учётной записью с правами только на чтение.
Справочник «Пользователи» в SQL хранится в таблице вида _Reference<номер>. Номер у каждой конфигурации свой. Узнать его можно функцией ПолучитьСтруктуруХраненияБазыДанных() или внешней обработкой, которая показывает структуру хранения. Проще и надёжнее сделать то же запросом на языке 1С:
ВЫБРАТЬ
Пользователи.Наименование КАК ФИО,
Пользователи.Недействителен КАК Недействителен,
Пользователи.ИдентификаторПользователяИБ КАК ИдентификаторИБ
ИЗ
Справочник.Пользователи КАК Пользователи
ГДЕ
НЕ Пользователи.ПометкаУдаления
УПОРЯДОЧИТЬ ПО
ФИО
Запрос выполняется в любой консоли запросов. Поле ИдентификаторПользователяИБ связывает строку справочника с учётной записью платформы.
Роли и права доступа пользователей
Роли в Конфигураторе
В карточке пользователя (Администрирование → Пользователи) откройте вкладку «Прочие». Отмеченные флажки — роли, выданные этой учётной записи. Чтобы понять, что даёт роль, найдите её в дереве конфигурации в ветке Общие → Роли и откройте: редактор покажет права на каждый объект.
Ручной осмотр карточек подходит для 5–10 пользователей. Для 50 удобнее код из следующего раздела.
Группы доступа в типовых конфигурациях
В БП 3.0, ЗУП 3.1 и УТ 11 роли напрямую не назначают. Пользователя включают в группы доступа, а у группы есть профиль — набор ролей. Поэтому права смотрят так:
- Откройте карточку пользователя в справочнике.
- Перейдите по ссылке «Права доступа » на панели навигации карточки.
- Здесь видно, в каких группах состоит пользователь и какие профили к ним привязаны.
Если роль добавили через Конфигуратор в обход групп доступа, типовая конфигурация может снять её при следующей записи пользователя. Права меняйте там же, где их смотрите: через группы и профили.
Выгрузка списка кодом: внешняя обработка
Для полной картины — имя, ФИО, пользователь Windows и все роли в одной строке — создайте внешнюю обработку.
- В Конфигураторе выберите
Файл → Новый… → Внешняя обработка. - Добавьте форму, на форме — команду «ВывестиПользователей» и кнопку для неё.
- В модуль формы вставьте код:
&НаСервере
Процедура ВывестиПользователейНаСервере()
Для Каждого ПользовательИБ Из ПользователиИнформационнойБазы.ПолучитьПользователей() Цикл
СписокРолей = Новый Массив;
Для Каждого Роль Из ПользовательИБ.Роли Цикл
СписокРолей.Добавить(Роль.Имя);
КонецЦикла;
Сообщить(СтрШаблон("%1 | %2 | ОС: %3 | роли: %4",
ПользовательИБ.Имя,
ПользовательИБ.ПолноеИмя,
ПользовательИБ.ПользовательОС,
СтрСоединить(СписокРолей, ", ")));
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ВывестиПользователей(Команда)
ВывестиПользователейНаСервере();
КонецПроцедуры
- Сохраните обработку и откройте её в пользовательском режиме через
Файл → Открыть.
Результат появится в окне сообщений, откуда его можно скопировать. СтрСоединить доступна с платформы 8.3.6, для более ранних релизов собирайте строку в цикле.
Полезные вариации того же кода:
- 🛡 только администраторы: внутри цикла проверьте
ПользовательИБ.Роли.Содержит(Метаданные.Роли.ПолныеПрава). Имя ролиПолныеПраваесть в типовых конфигурациях на БСП, в самописной проверьте его в дереве ролей; - 🔐 кто входит по Windows: условие
ПользовательИБ.АутентификацияОС; - 🙈 скрытые из списка выбора при входе:
НЕ ПользовательИБ.ПоказыватьВСпискеВыбора.
Для активных сеансов есть функция ПолучитьСеансыИнформационнойБазы(). У каждого сеанса есть свойства Пользователь, ИмяКомпьютера, ИмяПриложения, НачалоСеанса. Это аналог окна «Активные пользователи», но в виде, удобном для логирования.
Если обработка нужна регулярно, сделайте вывод не в сообщения, а в табличный документ. Его сразу можно сохранить в Excel.
Что проверить при аудите учётных записей
Выгрузка ролей нужна обычно не сама по себе, а для проверки безопасности. Тем же циклом удобно отловить четыре вида проблемных записей:
- Без пароля. Условие
ПользовательИБ.АутентификацияСтандартная И НЕ ПользовательИБ.ПарольУстановлен. Под такой записью войдёт любой, кто знает имя. - С полными правами. Проверка роли
ПолныеПрава, описанная выше. В рабочей базе таких записей обычно две-три: администратор 1С, резервная служебная запись, иногда главный бухгалтер. - Уволенные сотрудники. Сравните выгрузку со списком работающих. Учётную запись уволенного лучше не удалять, а запретить ей вход: история документов при этом сохранится.
- Общие записи вроде «Бухгалтер» или «Склад». По журналу регистрации потом не понять, кто именно провёл документ. Заведите каждому сотруднику свою учётную запись.
Результат проверки сохраните вместе с датой: при следующем аудите будет с чем сравнить.
Почему список не выводится или выводится не тот
Ещё одна частая путаница — разное число пользователей в разных списках. В «Активных пользователях» сеанс фонового задания или Конфигуратора тоже считается строкой. В консоли кластера — сеансы всех приложений, в том числе служебных. Сравнивать с числом лицензий нужно по признаку захваченной лицензии, а не по числу строк.