В администрировании системы 1С:Предприятие 8 часто возникает необходимость точно идентифицировать, под какой учетной записью выполняется та или иная операция. Это может потребоваться при аудите безопасности, отладке кода или выяснении причин блокировки данных. Пользователь 1С — это не просто строка в логе, это ключевой объект системы безопасности, определяющий права доступа к функционалу.

Существует несколько уровней идентификации: от текущего имени в интерфейсе до уникального идентификатора в базе данных SQL. Важно понимать разницу между именем входа, полным именем и уникальным кодом (UUID). В этой статье мы разберем, как получить уникальный код пользователя через консоль запросов, что является самым надежным способом для глубокого анализа.

Независимо от того, являетесь ли вы разработчиком, пишущим код на встроенном языке, или администратором, проверяющим журнал регистрации, вам понадобятся разные инструменты. Мы рассмотрим методы для разных режимов работы, включая тонкий клиент и веб-клиент.

Использование встроенных переменных и функций

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

Однако для программного анализа часто требуется больше информации, чем просто имя. В этом случае на помощь приходит объект СистемнаяИнформация. С его помощью можно получить не только имя, но и домен пользователя, если система работает в режиме аутентификации Windows. Это критически важно для настройки ролевой модели.

Рассмотрим пример кода, который выводит полную информацию о текущем контексте безопасности:

СистемнаяИнформация = Новый СистемнаяИнформация;

Сообщить("Имя пользователя: " + ИмяПользователя);

Сообщить("Домен: " + СистемнаяИнформация.ИмяДомена);

Сообщить("Имя компьютера: " + СистемнаяИнформация.ИмяКомпьютера);

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

💡

Если вы разрабатываете обработку для сбора статистики, используйте УникальныйИдентификатор() вместо имени, так как имена пользователей могут меняться, а UUID остается неизменным.

💡

Переменная ИмяПользователя возвращает имя, указанное при входе, но для надежной связи с записями в БД всегда используйте UUID.

Анализ журнала регистрации событий

Журнал регистрации — это главный инструмент администратора для ретроспективного анализа действий. Здесь хранится история всех событий, привязанных к конкретным учетным записям. Чтобы найти информацию о пользователе, необходимо открыть журнал через консоль администрирования или непосредственно из базы данных.

В журнале каждое событие содержит поле, идентифицирующее субъекта действия. Это поле может содержать как имя пользователя, так и его уникальный идентификатор. Фильтрация по этим полям позволяет быстро отследить, кто именно выполнял конкретную операцию, например, проведение документа или изменение настроек.

Для эффективной работы с журналом используйте следующие критерии отбора:

  • 🔍 Имя пользователя: позволяет найти все действия конкретного сотрудника по логину.
  • 🆔 Представление: отображает полное ФИО, если оно заполнено в карточке пользователя.
  • 🖥️ Сеанс: показывает уникальный номер сеанса, что полезно при анализе параллельной работы.
  • ⏱️ Время события: критично для восстановления хронологии инцидентов.

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

📊 Как вы чаще всего идентифицируете пользователя в 1С?
По имени в журнале
По UUID в запросе
Через панель задач
Мне это не нужно

Получение данных через запросы к базе данных

Для глубокого анализа и построения сложных отчетов администраторам и разработчикам часто приходится обращаться напрямую к таблицам конфигурации. Основная таблица, хранящая сведения о пользователях, называется Users (или Пользователи в зависимости от платформы и версии). Работа с ней осуществляется через консоль запросов или внешние обработки.

Важно различать таблицы виртуальной файловой системы 1С и физические таблицы в СУБД. В запросе на языке 1С мы обращаемся к виртуальной таблице Справочник.Пользователи (если пользователи заведены как справочник) или системной таблице прав доступа. Однако в типовых конфигурациях пользователи часто хранятся в отдельном регистре сведений или системной таблице.

Ниже приведен пример запроса, который позволяет получить список всех пользователей и их статус:

ВЫБРАТЬ

Пользователи.Ссылка КАК Ссылка,

Пользователи.Наименование КАК Имя,

Пользователи.УникальныйИдентификатор КАК UUID,

Пользователи.ЭтоГруппа КАК ЭтоГруппа

ИЗ

Справочник.Пользователи КАК Пользователи

Результат такого запроса даст вам полную картину структуры пользователей. Особое внимание стоит уделить полю УникальныйИдентификатор. Именно этот 16-байтовый код используется системой для связывания прав доступа, настроек персонализации и истории действий.

Почему UUID важнее имени?

Имя пользователя — это строка, которую можно изменить. Уникальный идентификатор (UUID) генерируется один раз при создании записи и никогда не меняется. Все внутренние ссылки в базе данных (права, настройки, история) ссылаются именно на UUID. Если вы переименуете пользователя, связи не потеряются, но если вы попытаетесь связать данные по имени, а имя изменится, связь разорвется.

Таблица соответствия пользователей и прав доступа

Понимание того, как пользователи соотносятся с профилями групп доступа, является ключом к решению проблем с правами. Часто возникает вопрос: "Почему этот пользователь не видит эту кнопку?". Ответ кроется в таблице соответствия, где каждому UUID сопоставлен набор ролей.

Администраторам полезно иметь под рукой сводную таблицу, показывающую основные атрибуты. Это помогает быстро проводить аудит безопасности и выявлять избыточные права.

Тип данных Где используется Пример значения Изменяемость
Имя входа (Login) Форма авторизации ivanov_ii Да (редко)
Полное имя Отчеты, печатные формы Иванов Иван Иванович Да
UUID Внутренние ссылки, БД 8e4a2b1c-3d4e-5f6a-7b8c-9d0e1f2a3b4c Нет
Роль Профили групп доступа ПолныеПрава Да

При миграции баз данных или выгрузке в XML/DT именно UUID является тем якорем, который позволяет сохранить целостность связей между пользователями и их настройками. Потеря или подмена UUID может привести к тому, что пользователь потеряет все свои персональные настройки.

☑️ Аудит пользователей

Выполнено: 0 / 4

Определение пользователя в SQL (для администраторов СУБД)

В случаях, когда платформа 1С недоступна или требуется анализ на уровне базы данных (например, в Microsoft SQL Server или PostgreSQL), администраторы обращаются к системным таблицам напрямую. Структура таблиц зависит от версии платформы 1С, но логика остается общей.

В современных версиях платформы информация о пользователях хранится в таблице _Users (или подобной, в зависимости от префикса именования). Для получения данных можно выполнить SQL-запрос, который извлечет необходимые поля. Это особенно актуально при блокировке сессий на уровне СУБД.

⚠️ Внимание: Прямое изменение таблиц базы данных 1С через SQL запрещено технической поддержкой. Это может привести к нарушению целостности данных и потере гарантии. Используйте SQL только для чтения (SELECT) в аварийных ситуациях.

Пример запроса для SQL Server для получения списка пользователей:

SELECT _Fld1022 AS Name, _Fld1023 AS UUID FROM _Users WHERE _Fld1022 IS NOT NULL;

Здесь имена полей (_Fld1022 и т.д.) являются физическими именами колонок, которые могут отличаться в разных конфигурациях. Для точного определения имен полей используйте утилиту chdbfl или документацию по структуре вашей конкретной конфигурации.

💡

Прямой доступ к SQL-таблицам 1С возможен только в режиме чтения. Любые попытки UPDATE или DELETE без понимания внутренней структуры гарантированно приведут к ошибке базы данных.

Частые проблемы и способы их решения

При работе с идентификацией пользователей администраторы часто сталкиваются с ситуацией, когда имя в журнале не совпадает с ожидаемым, или пользователь отображается как "Анонимный". Это часто связано с настройками аутентификации.

Если используется аутентификация 1С:Предприятия, то имя берется из списка пользователей базы. Если же настроена аутентификация Windows, то система пытается сопоставить доменного пользователя с записью в базе 1С. Если сопоставление не найдено, доступ может быть ограничен или пользователь будет записан под техническим именем.

⚠️ Внимание: При переходе на веб-сервер (IIS/Apache) убедитесь, что пул приложений запущен от имени пользователя, имеющего права на чтение каталога базы, иначе все пользователи могут определяться как системная учетная запись.

Еще одной распространенной проблемой является дублирование имен. Хотя система позволяет создать двух пользователей с именем "Admin", это создает путаницу в журналах. Всегда используйте уникальные логины или добавляйте инициалы к именам.

Что делать, если пользователь "потерялся"?

Если вы не можете найти пользователя в списке, проверьте фильтр "Только активные". Возможно, учетная запись была помечена на удаление или заблокирована. Также проверьте, не является ли пользователь членом группы, которая скрыта из общего списка.

FAQ: Часто задаваемые вопросы

Как узнать, кто сейчас работает в базе 1С?

Откройте меню Администрирование -> Активные пользователи. В открывшемся окне отобразится список всех подключенных сеансов с указанием имени пользователя, компьютера и времени начала сеанса. Вы можете завершить сеанс принудительно из этого же окна.

Можно ли изменить UUID пользователя?

Нет, уникальный идентификатор (UUID) присваивается при создании записи и не подлежит изменению стандартными средствами. Это фундаментальное свойство, обеспечивающее целостность ссылок в базе данных. Попытка изменить его через SQL приведет к потере доступа и настроек для этого пользователя.

Где хранится пароль пользователя в 1С?

Пароли пользователей 1С:Предприятия не хранятся в открытом виде. Они хешируются и сохраняются в системных таблицах базы данных. Восстановить забытый пароль невозможно, его можно только сбросить, задав новый (требуется право на администрирование).

Почему в журнале регистрации вместо имени отображается код?

Это может происходить, если запись о пользователе была удалена из справочника, но события в журнале остались. Журнал хранит ссылку на UUID. Если объект по этому UUID не найден, система может отображать технический код или пустое значение. Также это возможно при ошибках чтения справочника.

⚠️ Внимание: Интерфейсы и названия меню могут отличаться в зависимости от версии платформы 1С (8.2, 8.3) и конкретной конфигурации (Бухгалтерия, УТ, ERP). Всегда сверяйтесь с официальной документацией к вашей версии продукта, так как функционал администрирования регулярно обновляется.