К статье
Практический материал

Администрирование · 10 мин

Как узнать текущего пользователя в 1С

Как узнать текущего пользователя в 1С: через интерфейс, командой ПользовательИнформационнойБазы, через сеансы и журнал регистрации. Примеры кода и частые ошибки.

Определить, под каким пользователем сейчас работает сеанс 1С, нужно в разных ситуациях: при разборе ошибок в документах, настройке прав доступа, поиске виновника блокировки базы или при написании кода, зависящего от роли пользователя. Способ зависит от того, кто вы — обычный пользователь, администратор или разработчик — и какой именно «текущий пользователь» вам нужен: интерактивный сеанс, системная учётная запись Windows или пользователь, указанный в документе.

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

Что именно считается «текущим пользователем» в 1С

Прежде чем искать, определите, какой из трёх вариантов вам нужен. Первый — пользователь информационной базы: учётная запись, созданная администратором в списке пользователей (Администрирование → Пользователи). Именно она определяет права, роли и отображается как автор документов.

Второй вариант — пользователь операционной системы, под которым запущен процесс 1cv8.exe или rphost. Он важен при проблемах с доступом к файлам, лицензиям и сетевым ресурсам, но к учётным записям 1С прямого отношения не имеет.

Третий — активный сеанс: фактическое подключение к базе прямо сейчас. Один и тот же пользователь может иметь несколько сеансов с разных компьютеров, и для администратора важно видеть их все.

Как узнать своё имя пользователя через интерфейс

Самый простой способ, не требующий никаких прав, — открыть сведения о программе. В тонком клиенте нажмите кнопку главного меню (круглая кнопка с логотипом в левом верхнем углу) и выберите «О программе». В открывшемся окне среди прочей информации указан пользователь, под которым выполнен вход в базу.

В типовых конфигурациях (Бухгалтерия предприятия, Управление торговлей, Зарплата и управление персоналом) имя текущего пользователя часто видно прямо в заголовке окна или в разделе «Администрирование» → «Обслуживание» → «Активные пользователи». Там же можно посмотреть дату и время входа.

Если интерфейс сильно переработан и стандартных пунктов нет, откройте любой документ, который вы создавали, — в поле «Ответственный» или «Автор» обычно подставляется текущий пользователь автоматически.

Как посмотреть текущего пользователя без программирования
  1. 1
    Откройте главное меню (кнопка с логотипом 1С в левом верхнем углу)
  2. 2
    Выберите пункт «О программе»
  3. 3
    Найдите строку с именем пользователя информационной базы
  4. 4
    Для списка всех активных пользователей откройте «Администрирование» → «Активные пользователи»
  5. 5
    Сверьте имя с ожидаемым — при совпадении задача решена

Как получить текущего пользователя в коде 1С

Для разработчиков и при настройке обработок используются встроенные функции. Базовый вариант — функция ИмяПользователя(), которая возвращает имя пользователя, под которым выполнен вход. Если вход выполнен без аутентификации 1С (например, через COM-соединение), функция вернёт пустую строку.

Более полный вариант — объект ПользователиИнформационнойБазы.ТекущийПользователь(). Он возвращает объект с полным набором свойств: имя, полное имя, роли, язык, признак аутентификации ОС.

ИмяТекущего = ИмяПользователя();

ПользовательИБ = ПользователиИнформационнойБазы.ТекущийПользователь();

ПолноеИмя = ПользовательИБ.ПолноеИмя;

Роли = ПользовательИБ.Роли;

В типовых конфигурациях на базе БСП (библиотека стандартных подсистем) правильнее использовать функцию Пользователи.ТекущийПользователь() — она возвращает ссылку на элемент справочника «Пользователи», а не учётную запись ИБ. Это важно, когда нужно сравнить пользователя с полем «Ответственный» в документах.

Как узнать пользователя операционной системы

Иногда нужно понять, под какой учётной записью Windows запущен клиент или сервер 1С — например, при проблемах с доступом к сетевым папкам, файловым базам или аппаратным лицензиям. На клиентском компьютере проще всего выполнить в командной строке команду whoami — она выведет домен и имя пользователя ОС.

cmd
whoami

Для сервера 1С учётную запись, под которой работает служба «Агент сервера 1С:Предприятия», видно в оснастке «Службы» Windows: откройте свойства службы, вкладка «Вход в систему». По умолчанию это часто локальная системная учётная запись или специально созданная USR1CV8.

В коде 1С имя пользователя ОС можно получить через объект WSHShell или через переменные окружения, но помните: на сервере такой код вернёт учётную запись сервера, а не пользователя клиента. Для клиентского контекста код должен выполняться с директивой &НаКлиенте.

Как посмотреть всех активных пользователей базы

Администратору часто нужен не свой сеанс, а полный список подключённых пользователей — перед обновлением конфигурации, резервным копированием или при поиске зависших сеансов. В файловой базе и в типовых конфигурациях это раздел «Администрирование» → «Активные пользователи». Таблица показывает имя пользователя, компьютер, время начала сеанса и режим работы.

В клиент-серверном варианте полную картину даёт консоль кластера серверов 1С: откройте ветку нужной базы, пункт «Сеансы». Здесь видны все подключения, включая фоновые задания и соединения веб-сервисов, которые в «Активных пользователях» могут не отображаться.

Программно список сеансов получают методом ПолучитьСеансыИнформационнойБазы(). Он возвращает массив объектов с номером сеанса, именем пользователя, приложением и временем начала. Учтите: для вызова метода нужны административные права.

Сеансы = ПолучитьСеансыИнформационнойБазы();

Для Каждого Сеанс Из Сеансы Цикл

Сообщить(Сеанс.ИмяПользователя + " — " + Сеанс.ИмяКомпьютера);

КонецЦикла;

Как узнать, кто создал или изменил документ

Если задача — выяснить автора конкретного документа, смотреть текущий сеанс бессмысленно. В типовых конфигурациях у документов есть реквизиты «Ответственный» или «Автор», которые заполняются автоматически при создании. Откройте документ и найдите это поле — чаще всего оно внизу формы или на закладке «Дополнительно».

Историю изменений показывает журнал регистрации: «Администрирование» → «Обслуживание» → «Журнал регистрации». Отфильтруйте события по типу «Данные. Изменение» и по нужному объекту — увидите, какой пользователь и когда вносил правки.

Для массового анализа удобнее отчёт «Анализ активности пользователей» или «История изменений объектов», если в конфигурации включено версионирование. Версионирование хранит снимки объекта на каждый момент изменения с указанием автора.

Маршрут решения

Как выбрать способ

Нужно узнать, под кем вы сами вошли в базуОткройте «О программе» или раздел «Активные пользователи»
Нужен пользователь в коде для логики или отчётаИспользуйте Пользователи.ТекущийПользователь() в типовых или ПользователиИнформационнойБазы.ТекущийПользователь() в самописных
Нужен список всех, кто сейчас в базеОткройте «Активные пользователи» или консоль кластера, ветка «Сеансы»
Нужно узнать, кто изменил конкретный документСмотрите журнал регистрации или механизм версионирования объектов

Частые ошибки и ограничения

Самая распространённая ошибка — путать пользователя ОС и пользователя 1С. Один человек может входить в Windows под своей учётной записью, а в 1С — под общей учётной записью «Менеджер», и наоборот. При аутентификации средствами ОС («галочка» в свойствах пользователя) эти имена связаны, но связь настраивается вручную и может отсутствовать.

Вторая ошибка — ожидать, что ИмяПользователя() всегда что-то вернёт. При внешнем соединении, через COM или в некоторых фоновых заданиях пользователь может быть не задан, и функция вернёт пустую строку. В коде всегда проверяйте этот случай, иначе получите ошибки в регламентных операциях.

Третья типичная ситуация: в файловой базе раздел «Активные пользователи» недоступен пользователю без административных прав. Обычный пользователь увидит только себя или не увидит раздел вовсе — это ограничение платформы, а не неисправность.

Типичные ошибки
01
Сравнение строки ИмяПользователя() со ссылкой справочника «Пользователи» — условие никогда не сработает
02
Отсутствие проверки на пустое имя пользователя в фоновых заданиях — код падает в регламентных операциях
03
Поиск автора документа через текущий сеанс вместо журнала регистрации — текущий сеанс показывает вас, а не автора
04
Завершение «лишних» сеансов в консоли кластера без проверки — можно оборвать фоновое задание обмена данными
Итог

Что важно запомнить

Своё имя пользователя проще всего посмотреть через «О программе», в коде используйте Пользователи.ТекущийПользователь() для типовых конфигураций и ПользователиИнформационнойБазы.ТекущийПользователь() для учётной записи ИБ. Список всех подключений — в разделе «Активные пользователи» или в консоли кластера, а автора документа ищите в журнале регистрации, а не в текущем сеансе.

Частые вопросы

Почему ИмяПользователя() возвращает пустую строку?

Это происходит, когда код выполняется в контексте без аутентификации 1С: внешнее соединение, COM-подключение, некоторые фоновые задания. Добавьте в код проверку на пустое значение и задайте поведение по умолчанию — например, используйте предопределённого служебного пользователя.

Можно ли узнать, кто сейчас в базе, без прав администратора?

Полный список — нет: раздел «Активные пользователи» и метод ПолучитьСеансыИнформационнойБазы() требуют административных прав. Без них доступно только собственное имя пользователя через «О программе».

Чем отличается справочник «Пользователи» от списка пользователей информационной базы?

Список пользователей ИБ — это учётные записи для входа с паролями и ролями, хранится на уровне платформы. Справочник «Пользователи» — прикладной объект конфигурации, который ссылается на учётную запись и дополняет её данными: подразделением, физлицом, настройками. Один может существовать без другого.

Как узнать, с какого компьютера работает пользователь?

В разделе «Активные пользователи» и в консоли кластера у каждого сеанса указано имя компьютера. Программно — свойство ИмяКомпьютера у объекта сеанса, полученного через ПолучитьСеансыИнформационнойБазы(). IP-адрес платформа напрямую не показывает.

Можно ли скрыть от пользователей, кто ещё работает в базе?

Да. Уберите у роли пользователя административные права и право «Администрирование» — раздел «Активные пользователи» станет недоступен. В типовых конфигурациях доступ к этому разделу регулируется профилем группы доступа.

Как узнать пользователя, который заблокировал базу?

Откройте консоль кластера серверов и посмотрите список соединений и сеансов — активные блокировки видны по сеансам, удерживающим соединения. В файловой базе проверьте, кто оставил открытым сеанс, через «Активные пользователи» на момент блокировки, а историю — в журнале регистрации.