Как программно определить текущего пользователя в 1С 8.3

Иван Корнев·16 июля 2026·4 мин

Для программного получения текущего пользователя в 1С 8.3 наиболее эффективным и универсальным способом является использование объекта ПараметрыСеанса или общих модулей Библиотеки стандартных подсистем (БСП). Эти методы работают быстро, не требуют прав на чтение метаданных информационной базы и корректно функционируют как на сервере, так и на клиенте (включая веб-клиент и мобильные приложения). Прямое обращение к ПользователиИнформационнойБазы считается устаревшим подходом для типовых задач из-за ограничений безопасности и производительности.

Оглавление

Быстрый способ: ПараметрыСеанса

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

В современных конфигурациях (ERP, КА, УТ, ЗУП) в параметрах сеанса обычно уже хранится прямая ссылка на элемент справочника «Пользователи». Это избавляет от необходимости выполнять дополнительные поиски по UUID.

Пример получения ссылки на справочник

// Получаем ссылку на элемент справочника "Пользователи"
СсылкаНаПользователя = ПараметрыСеанса.ТекущийПользователь;

Если СсылкаНаПользователя.Пустая() Тогда
    Сообщить("Соответствие пользователя ИБ и элемента справочника не установлено");
Иначе
    // Можно сразу обращаться к реквизитам справочника
    ФИО = СсылкаНаПользователя.Наименование;
    Сообщить("Добро пожаловать, " + ФИО);
КонецЕсли;

Этот метод идеален для серверных процедур, где требуется минимальная задержка выполнения кода. Он работает во всех режимах совместимости и не зависит от прав доступа пользователя к объектам метаданных.

Стандартный подход в БСП

Если ваша конфигурация построена на базе Библиотеки стандартных подсистем (БСП), рекомендуется использовать её общие модули. Это гарантирует корректную работу логики при обновлении платформы, переходе на веб-клиент или использовании мобильных устройств. Функции БСП инкапсулируют сложную логику определения контекста.

Основные функции для работы с пользователем

ФункцияНазначениеКонтекст вызова
Пользователи.ТекущийПользователь()Возвращает ссылку на справочник «Пользователи»Клиент, Сервер
ПользователиКлиентСервер.ТекущийПользователь()Универсальный метод получения данныхКлиент, Сервер
ПользователиКлиентСервер.ПолучитьПользователяИБ()Возвращает объект ПользовательИнформационнойБазы по ссылкеКлиент, Сервер

Пример использования в управляемой форме

&НаКлиенте
Процедура ПоказатьДанныеПользователя(Команда)
    
    // Получаем ссылку через общий модуль БСП
    ТекПользователь = Пользователи.ТекущийПользователь();
    
    Если НЕ ТекПользователь.Пустая() Тогда
        // Пример получения дополнительных данных через серверный вызов
        ЗаполнитьРеквизитыПользователя(ТекПользователь);
    КонецЕсли;
    
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьРеквизитыПользователя(Ссылка)
    // Работа с данными на сервере
    ОбъектПользователяИБ = ПользователиКлиентСервер.ПолучитьПользователяИБ(Ссылка);
    Сообщить("Логин в системе: " + ОбъектПользователяИБ.Имя);
КонецПроцедуры

Устаревший метод: ПользователиИнформационнойБазы

Глобальный контекст ПользователиИнформационнойБазы предоставляет доступ к техническим пользователям платформы. Метод ТекущийПользователь() возвращает объект, содержащий имя входа (логин), уникальный идентификатор (UUID) и список ролей.

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

Пример кода

// Получаем объект технического пользователя
ОбъектПользователяИБ = ПользователиИнформационнойБазы.ТекущийПользователь();

// Системное имя (логин)
ИмяВхода = ОбъектПользователяИБ.Имя; 

// Уникальный идентификатор для поиска соответствий
UUID = ОбъектПользователяИБ.УникальныйИдентификатор;

Главный недостаток этого подхода — разрыв между техническим пользователем платформы и физическим лицом в справочнике. Чтобы получить ФИО сотрудника, разработчику приходится выполнять дополнительный поиск по регистру сведений или реквизиту ИдПользователяБазы, что замедляет работу программы.

Сравнение методов и совместимость

Выбор инструмента зависит от того, где выполняется код и какая архитектура используется в вашей базе.

Таблица совместимости методов

МетодТонкий клиентВеб-клиентМобильное приложениеСервер 1СТребует прав на метаданные
ПараметрыСеансаНет
Пользователи.ТекущийПользователь() (БСП)Нет
ПользователиИнформационнойБазыДа

Для максимальной переносимости кода между различными клиентскими приложениями всегда отдавайте предпочтение ПараметрамСеанса или функциям БСП.

Практический пример: автозаполнение ответственного

Распространенная задача — автоматически подставлять текущего менеджера в документ при его создании. Ниже приведен оптимизированный алгоритм, который учитывает возможность отсутствия привязки к сотруднику.

&НаСервере
Процедура ЗаполнитьОтветственного(Команда)
    
    // 1. Безопасно получаем ссылку на пользователя
    ТекПользователь = ПараметрыСеанса.ТекущийПользователь;
    
    Если ТекПользователь.Пустая() Тогда
        Возврат;
    КонецЕсли;
    
    // 2. Проверяем наличие реквизита "ОсновнойСотрудник" 
    // (актуально для многих типовых конфигураций)
    Если Метаданные.Справочники.Пользователи.Реквизиты.Найти("ОсновнойСотрудник") <> Неопределено Тогда
        
        Сотрудник = ТекПользователь.ОсновнойСотрудник;
        
        Если НЕ Сотрудник.Пустая() Тогда
            Объект.Ответственный = Сотрудник;
        КонецЕсли;
        
    КонецЕсли;
    
КонецПроцедуры

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

Частые ошибки разработчиков

  1. Путаница понятий. Имя пользователя информационной базы — это логин для входа (например, admin или ivanov), а Наименование элемента справочника — это ФИО для отчетов и печатных форм.
  2. Отсутствие проверок на пустоту. Администратор мог создать пользователя в платформе, но не добавить его в справочник «Пользователи». В этом случае ПараметрыСеанса.ТекущийПользователь вернет пустую ссылку, и попытка обратиться к её реквизитам вызовет ошибку.
  3. Использование функции ИмяПользователя(). Этот метод остался из версии 1С 7.7. В современной платформе он часто возвращает имя пользователя операционной системы Windows, что не имеет отношения к учетной записи в 1С.

FAQ

Что делать, если ПараметрыСеанса.ТекущийПользователь возвращает пустую ссылку? Это означает, что в системе не настроено соответствие между техническим пользователем платформы и элементом справочника «Пользователи». Необходимо зайти в конфигуратор или режим предприятия с правами администратора и создать элемент справочника, указав в нем правильного пользователя ИБ.

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

Какой метод быстрее: БСП или ПараметрыСеанса? Функции БСП внутри себя часто используют те же ПараметрыСеанса, добавляя лишь небольшую обертку для проверки контекста. Разница в производительности ничтожна, поэтому при наличии БСП лучше использовать её стандартные функции для соблюдения архитектуры конфигурации.