Администрирование · 10 мин
Как узнать текущего пользователя в 1С
Как узнать текущего пользователя в 1С: через интерфейс, командой ПользовательИнформационнойБазы, через сеансы и журнал регистрации. Примеры кода и частые ошибки.
Определить, под каким пользователем сейчас работает сеанс 1С, нужно в разных ситуациях: при разборе ошибок в документах, настройке прав доступа, поиске виновника блокировки базы или при написании кода, зависящего от роли пользователя. Способ зависит от того, кто вы — обычный пользователь, администратор или разработчик — и какой именно «текущий пользователь» вам нужен: интерактивный сеанс, системная учётная запись Windows или пользователь, указанный в документе.
В 1С есть несколько разных понятий, которые часто путают: пользователь информационной базы (учётная запись в списке пользователей), пользователь операционной системы, под которым запущен клиент или сервер, и сеанс — активное подключение к базе. Ниже разобраны рабочие способы для каждого случая: от просмотра в интерфейсе до встроенного языка и консоли кластера.
Что именно считается «текущим пользователем» в 1С
Прежде чем искать, определите, какой из трёх вариантов вам нужен. Первый — пользователь информационной базы: учётная запись, созданная администратором в списке пользователей (Администрирование → Пользователи). Именно она определяет права, роли и отображается как автор документов.
Второй вариант — пользователь операционной системы, под которым запущен процесс 1cv8.exe или rphost. Он важен при проблемах с доступом к файлам, лицензиям и сетевым ресурсам, но к учётным записям 1С прямого отношения не имеет.
Третий — активный сеанс: фактическое подключение к базе прямо сейчас. Один и тот же пользователь может иметь несколько сеансов с разных компьютеров, и для администратора важно видеть их все.
Как узнать своё имя пользователя через интерфейс
Самый простой способ, не требующий никаких прав, — открыть сведения о программе. В тонком клиенте нажмите кнопку главного меню (круглая кнопка с логотипом в левом верхнем углу) и выберите «О программе». В открывшемся окне среди прочей информации указан пользователь, под которым выполнен вход в базу.
В типовых конфигурациях (Бухгалтерия предприятия, Управление торговлей, Зарплата и управление персоналом) имя текущего пользователя часто видно прямо в заголовке окна или в разделе «Администрирование» → «Обслуживание» → «Активные пользователи». Там же можно посмотреть дату и время входа.
Если интерфейс сильно переработан и стандартных пунктов нет, откройте любой документ, который вы создавали, — в поле «Ответственный» или «Автор» обычно подставляется текущий пользователь автоматически.
- 1Откройте главное меню (кнопка с логотипом 1С в левом верхнем углу)
- 2Выберите пункт «О программе»
- 3Найдите строку с именем пользователя информационной базы
- 4Для списка всех активных пользователей откройте «Администрирование» → «Активные пользователи»
- 5Сверьте имя с ожидаемым — при совпадении задача решена
Как получить текущего пользователя в коде 1С
Для разработчиков и при настройке обработок используются встроенные функции. Базовый вариант — функция ИмяПользователя(), которая возвращает имя пользователя, под которым выполнен вход. Если вход выполнен без аутентификации 1С (например, через COM-соединение), функция вернёт пустую строку.
Более полный вариант — объект ПользователиИнформационнойБазы.ТекущийПользователь(). Он возвращает объект с полным набором свойств: имя, полное имя, роли, язык, признак аутентификации ОС.
ИмяТекущего = ИмяПользователя();
ПользовательИБ = ПользователиИнформационнойБазы.ТекущийПользователь();
ПолноеИмя = ПользовательИБ.ПолноеИмя;
Роли = ПользовательИБ.Роли;
В типовых конфигурациях на базе БСП (библиотека стандартных подсистем) правильнее использовать функцию Пользователи.ТекущийПользователь() — она возвращает ссылку на элемент справочника «Пользователи», а не учётную запись ИБ. Это важно, когда нужно сравнить пользователя с полем «Ответственный» в документах.
Как узнать пользователя операционной системы
Иногда нужно понять, под какой учётной записью Windows запущен клиент или сервер 1С — например, при проблемах с доступом к сетевым папкам, файловым базам или аппаратным лицензиям. На клиентском компьютере проще всего выполнить в командной строке команду whoami — она выведет домен и имя пользователя ОС.
whoamiДля сервера 1С учётную запись, под которой работает служба «Агент сервера 1С:Предприятия», видно в оснастке «Службы» Windows: откройте свойства службы, вкладка «Вход в систему». По умолчанию это часто локальная системная учётная запись или специально созданная USR1CV8.
В коде 1С имя пользователя ОС можно получить через объект WSHShell или через переменные окружения, но помните: на сервере такой код вернёт учётную запись сервера, а не пользователя клиента. Для клиентского контекста код должен выполняться с директивой &НаКлиенте.
Как посмотреть всех активных пользователей базы
Администратору часто нужен не свой сеанс, а полный список подключённых пользователей — перед обновлением конфигурации, резервным копированием или при поиске зависших сеансов. В файловой базе и в типовых конфигурациях это раздел «Администрирование» → «Активные пользователи». Таблица показывает имя пользователя, компьютер, время начала сеанса и режим работы.
В клиент-серверном варианте полную картину даёт консоль кластера серверов 1С: откройте ветку нужной базы, пункт «Сеансы». Здесь видны все подключения, включая фоновые задания и соединения веб-сервисов, которые в «Активных пользователях» могут не отображаться.
Программно список сеансов получают методом ПолучитьСеансыИнформационнойБазы(). Он возвращает массив объектов с номером сеанса, именем пользователя, приложением и временем начала. Учтите: для вызова метода нужны административные права.
Сеансы = ПолучитьСеансыИнформационнойБазы();
Для Каждого Сеанс Из Сеансы Цикл
Сообщить(Сеанс.ИмяПользователя + " — " + Сеанс.ИмяКомпьютера);
КонецЦикла;
Как узнать, кто создал или изменил документ
Если задача — выяснить автора конкретного документа, смотреть текущий сеанс бессмысленно. В типовых конфигурациях у документов есть реквизиты «Ответственный» или «Автор», которые заполняются автоматически при создании. Откройте документ и найдите это поле — чаще всего оно внизу формы или на закладке «Дополнительно».
Историю изменений показывает журнал регистрации: «Администрирование» → «Обслуживание» → «Журнал регистрации». Отфильтруйте события по типу «Данные. Изменение» и по нужному объекту — увидите, какой пользователь и когда вносил правки.
Для массового анализа удобнее отчёт «Анализ активности пользователей» или «История изменений объектов», если в конфигурации включено версионирование. Версионирование хранит снимки объекта на каждый момент изменения с указанием автора.
Как выбрать способ
Частые ошибки и ограничения
Самая распространённая ошибка — путать пользователя ОС и пользователя 1С. Один человек может входить в Windows под своей учётной записью, а в 1С — под общей учётной записью «Менеджер», и наоборот. При аутентификации средствами ОС («галочка» в свойствах пользователя) эти имена связаны, но связь настраивается вручную и может отсутствовать.
Вторая ошибка — ожидать, что ИмяПользователя() всегда что-то вернёт. При внешнем соединении, через COM или в некоторых фоновых заданиях пользователь может быть не задан, и функция вернёт пустую строку. В коде всегда проверяйте этот случай, иначе получите ошибки в регламентных операциях.
Третья типичная ситуация: в файловой базе раздел «Активные пользователи» недоступен пользователю без административных прав. Обычный пользователь увидит только себя или не увидит раздел вовсе — это ограничение платформы, а не неисправность.
Что важно запомнить
Своё имя пользователя проще всего посмотреть через «О программе», в коде используйте Пользователи.ТекущийПользователь() для типовых конфигураций и ПользователиИнформационнойБазы.ТекущийПользователь() для учётной записи ИБ. Список всех подключений — в разделе «Активные пользователи» или в консоли кластера, а автора документа ищите в журнале регистрации, а не в текущем сеансе.
Частые вопросы
Почему ИмяПользователя() возвращает пустую строку?
Это происходит, когда код выполняется в контексте без аутентификации 1С: внешнее соединение, COM-подключение, некоторые фоновые задания. Добавьте в код проверку на пустое значение и задайте поведение по умолчанию — например, используйте предопределённого служебного пользователя.
Можно ли узнать, кто сейчас в базе, без прав администратора?
Полный список — нет: раздел «Активные пользователи» и метод ПолучитьСеансыИнформационнойБазы() требуют административных прав. Без них доступно только собственное имя пользователя через «О программе».
Чем отличается справочник «Пользователи» от списка пользователей информационной базы?
Список пользователей ИБ — это учётные записи для входа с паролями и ролями, хранится на уровне платформы. Справочник «Пользователи» — прикладной объект конфигурации, который ссылается на учётную запись и дополняет её данными: подразделением, физлицом, настройками. Один может существовать без другого.
Как узнать, с какого компьютера работает пользователь?
В разделе «Активные пользователи» и в консоли кластера у каждого сеанса указано имя компьютера. Программно — свойство ИмяКомпьютера у объекта сеанса, полученного через ПолучитьСеансыИнформационнойБазы(). IP-адрес платформа напрямую не показывает.
Можно ли скрыть от пользователей, кто ещё работает в базе?
Да. Уберите у роли пользователя административные права и право «Администрирование» — раздел «Активные пользователи» станет недоступен. В типовых конфигурациях доступ к этому разделу регулируется профилем группы доступа.
Как узнать пользователя, который заблокировал базу?
Откройте консоль кластера серверов и посмотрите список соединений и сеансов — активные блокировки видны по сеансам, удерживающим соединения. В файловой базе проверьте, кто оставил открытым сеанс, через «Активные пользователи» на момент блокировки, а историю — в журнале регистрации.