Администрирование · 9 мин
Как поставить текущего пользователя в 1С
Как установить текущего пользователя в 1С: через параметры сеанса, в коде и в настройках. Пошаговые инструкции, проверка результата и типичные ошибки.
Фраза «поставить текущего пользователя» в контексте 1С обычно означает одну из трёх задач: определить, под каким пользователем выполняется сеанс, программно подставить пользователя в документ или справочник, либо заполнить параметр сеанса «ТекущийПользователь» при входе в базу. Во всех случаях логика опирается на объект ПользователиИнформационнойБазы и стандартные механизмы библиотеки стандартных подсистем (БСП).
В типовых конфигурациях (1С:Бухгалтерия, 1С:Управление торговлей, ЗУП) текущий пользователь определяется автоматически при входе и хранится в параметрах сеанса. Разработчику или администратору чаще всего нужно либо получить это значение в коде, либо разобраться, почему параметр пустой, либо подставить пользователя в реквизит документа. Ниже разобраны все сценарии с конкретным кодом и проверками.
Перед любыми изменениями кода или настроек ролей сделайте резервную копию базы или хотя бы выгрузку конфигурации. Ошибка в обработчике установки параметров сеанса способна заблокировать вход в базу для всех пользователей, включая администратора.
Как 1С определяет текущего пользователя
При запуске сеанса платформа сопоставляет имя, введённое в окне аутентификации, со списком пользователей информационной базы. Если вход выполнен через операционную систему (аутентификация ОС), платформа ищет пользователя, привязанного к учётной записи Windows. Результат доступен в коде через ПользователиИнформационнойБазы.ТекущийПользователь() — это объект с именем, полным именем, ролями и уникальным идентификатором.
В типовых конфигурациях поверх этого работает подсистема «Пользователи» из БСП. Она связывает запись справочника «Пользователи» с пользователем информационной базы через реквизит «ИдентификаторПользователяИБ». Именно элемент справочника используется в документах, ответственных лицах и настройках, а не системный объект платформы.
Как получить текущего пользователя в коде
В типовой конфигурации с БСП используйте функцию общего модуля: Пользователи.ТекущийПользователь(). Она возвращает ссылку на элемент справочника «Пользователи», который можно сразу подставлять в реквизиты документов и регистров. Для внешних пользователей (контрагентов в портальных решениях) существует отдельная функция Пользователи.ТекущийВнешнийПользователь().
В самописной конфигурации без БСП получите пользователя информационной базы напрямую:
ТекПользовательИБ = ПользователиИнформационнойБазы.ТекущийПользователь();
ИмяПользователя = ТекПользовательИБ.Имя;
Учтите: если вход выполнен без аутентификации (режим отладки без указания пользователя), имя может быть пустым. Проверяйте это условие перед записью данных, иначе получите документы с незаполненным ответственным.
// Типовая конфигурация (БСП)
ТекПользователь = Пользователи.ТекущийПользователь();
// Платформа без БСП
ТекПользовательИБ = ПользователиИнформационнойБазы.ТекущийПользователь();
Сообщить(ТекПользовательИБ.Имя);Как подставить текущего пользователя в документ
Самая частая прикладная задача — автоматически заполнять реквизит «Ответственный» или «Автор» при создании документа. В типовых конфигурациях это уже реализовано через подписки на события и процедуру ЗаполнениеДокументов.Заполнить(), поэтому вручную ничего делать не нужно: достаточно, чтобы у пользователя был корректно заполнен элемент справочника «Пользователи».
В собственной конфигурации добавьте заполнение в обработчик ОбработкаЗаполнения модуля объекта документа:
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
Ответственный = Пользователи.ТекущийПользователь();
КонецПроцедуры
Если нужно подставить пользователя в уже существующий документ программно, откройте объект, присвойте реквизит и запишите. Помните, что запись объекта требует прав на изменение и может вызвать конфликт блокировок, если документ открыт у другого пользователя.
- 1Откройте модуль объекта документа в конфигураторе
- 2Добавьте присвоение реквизита в обработчик ОбработкаЗаполнения
- 3Обновите конфигурацию базы данных (F7)
- 4Создайте новый документ и проверьте, что реквизит заполнен текущим пользователем
Как заполнить параметр сеанса «ТекущийПользователь»
В типовых конфигурациях заполнение выполняется автоматически в обработчике УстановкаПараметровСеанса модуля сеанса. Типовая реализация ищет пользователя ИБ по текущему имени, находит связанный элемент справочника и записывает ссылку в параметр. Если справочник пуст, создаётся первый пользователь-администратор.
Если вы пишете собственный обработчик, соблюдайте два правила. Первое: код должен отрабатывать быстро, потому что выполняется при каждом старте сеанса. Второе: обязательно обрабатывайте ситуацию, когда пользователь не найден, — иначе сеанс завершится с ошибкой и никто не войдёт в базу.
Настройка пользователя в режиме предприятия
Если задача — «поставить» пользователю нужные данные (подразделение, склад, организацию по умолчанию), используйте механизм персональных настроек. В типовых конфигурациях откройте раздел «Администрирование» → «Настройки пользователей и прав» → «Персональные настройки» или карточку пользователя в справочнике «Пользователи». Указанные значения подставляются в новые документы автоматически.
Для подстановки основной организации и подразделения проверьте также регистр сведений «Настройки пользователей» (название может отличаться в разных конфигурациях). Если реквизит документа не заполняется, чаще всего причина именно в пустых персональных настройках, а не в коде.
Проверка результата и типичные ошибки
После настройки проверьте результат тремя способами: создайте новый документ и убедитесь, что ответственный заполнен; откройте «Администрирование» → «Обслуживание» → «Активные пользователи» и убедитесь, что сеанс числится под нужным именем; выполните в консоли кода вызов Пользователи.ТекущийПользователь() и сравните с ожидаемым значением.
Как проверить результат
Заполнен текущим пользователем автоматически
Пустой или заполнен чужим пользователем
Сеанс числится под нужным именем
Имя пустое или не совпадает с ожидаемым
Элемент связан с пользователем ИБ
Дубли элементов или пустой идентификатор
Частые вопросы
Можно ли сменить текущего пользователя без перезапуска 1С?
Штатно нет. Пользователь и параметры сеанса фиксируются при входе. Для работы под другой учётной записью завершите сеанс и запустите базу заново с новыми учётными данными. Обходные программные приёмы с подменой параметров сеанса небезопасны и нарушают логику разграничения прав.
Почему Пользователи.ТекущийПользователь() возвращает пустую ссылку?
Наиболее вероятные причины: пользователь информационной базы не связан с элементом справочника «Пользователи», параметр сеанса не установился из-за ошибки в обработчике, либо вход выполнен без аутентификации. Проверьте карточку пользователя в справочнике и журнал регистрации на ошибки при входе.
Как узнать, под кем работает конкретный сеанс на сервере?
В клиент-серверном режиме откройте консоль кластера серверов 1С, раздел «Сеансы», — там видно имя пользователя каждого сеанса. В файловом режиме используйте «Администрирование» → «Активные пользователи» в самой базе.
Чем отличается пользователь информационной базы от элемента справочника «Пользователи»?
Пользователь ИБ — объект платформы, отвечающий за аутентификацию и роли. Элемент справочника — прикладной объект, который указывается в документах, настройках и отчётах. Они связаны через идентификатор, и в типовых решениях работать с документами нужно именно через элемент справочника.
Как подставить в документ не текущего, а конкретного пользователя?
Получите ссылку поиском по справочнику (по наименованию или идентификатору пользователя ИБ) и присвойте её реквизиту объекта перед записью. Убедитесь, что у найденного пользователя корректно заполнена связь с пользователем ИБ, иначе при его входе могут возникнуть дубли.
Что важно запомнить
В типовых конфигурациях текущего пользователя получают через Пользователи.ТекущийПользователь(), а подстановка в документы настраивается в обработчике заполнения и персональных настройках. Параметры сеанса меняются только при входе, а правку обработчика их установки выполняйте только на копии базы.