Юзаю УТ11.2 наверняка в общих модулях есть функция которая возвращает ссылку на текущего пользователя.
Подскажите пожалуйста, сам не смог найти.
---
Это все устарело правильно использовать:
Клиент - ПользователиКлиент.ТекущийПользователь()
Сервер - Пользователи.ТекущийПользователь()
---
baracuda,
```1c
    ПользователиКлиентСервер.ТекущийПользователь()
```
---
а как искали-то )
почти в каждом документе в обработке заполнения есть код по начальному заполнению поля Ответственный или Автор
---
sommid, открыл конфигуратор, полез в общие модуля)
---
baracuda, Так правильно
```1c
    ПользовательИнформационнойБазы.ТекущийПользователь()
```
, в параметрах сеанса, может быть кто угодно!
---
ПараметрыСеанса.ТекущийПользователь
---
Пользователь ИБ и ТекущийПльзователь не всегда одно и тоже.
---
smaharbA, какая разница между ними? В типовых конфигурациях это на 99% одно и то же.
---
baracuda, ярко выраженный пример в РМК. При кратковременной замене на пользователя с расширенными правами, к примеру, для возврата чека.
---
spacecraft, и в самом деле. Спасибо за пояснение. Но в принципе при инциализиции РМК я могу смело заполнять продавца текущим пользователем.
---
Параметры сеанса предназначены для хранения значений определенных типов для каждого клиентского сеанса на время работы этого сеанса. Инициализацию параметров сеанса следует выполнять в модуле сеанса, а их значения рекомендуется использовать в запросах и условиях ограничения доступа к данным для текущего сеанса.
Примеры параметров сеанса:
ТекущийПользователь – тип СправочникСсылка.Пользователи
ОбменДаннымиВключен – тип Булево
РабочееМестоКлиента – тип СправочникСсылка.РабочиеМеста
Параметры сеанса доступны из встроенного языка 1С:Предприятия, например:

```1c
    ЗначениеТекущегоПользователя = ПараметрыСеанса.ТекущийПользователь;
```
---
nni93, разницу я имел ввиду в контексте утверждения
Пользователь ИБ и ТекущийПльзователь не всегда одно и тоже.
---
Можно так:
ПользователиКлиентСервер.ТекущийПользователь();
---
На клиенте правильно будет
```1c
    ПользователиКлиентСервер.ТекущийПользователь()
```
---
Это все устарело правильно использовать:
Клиент - ПользователиКлиент.ТекущийПользователь()
Сервер - Пользователи.ТекущийПользователь()
---
Здравствуйте, а есть ли обработка которая вызывается не перед записью, а при заполнении какого-либо поля в документе. Например при выборе клиента в реализации перезаполняется менеджер. В принципе все можно сделать перед записью, но я хочу чтоб пользователи сразу видели, что все заполненно корректно
---
А что вам мешает самому в обработчик ПриИзменении() у поля контрагента - вызвать изменение поля Ответственный?
---
через свое расширение? Я может не до конца разобрался
---
(17) ок, сорри, я не к тому посту сообщение написал:) это должен был комментарий к обработке
---
Если получить Ответственного для документов современных типовых конфигураций на Управляемых формах, где тип данных реквизита "Ответственный" является справочником "Сотрудники", то так:

ТекущийПользовательСправочникаПользователи = Пользователи.ТекущийПользователь(); //Это взято из БСП
ДокументНазвание.Ответственный = Справочники.Сотрудники.НайтиПоНаименованию(ТекущийПользовательСправочникаПользователи.Наименование);
---
```1c
    &НаСервереБезКонтекста
    Функция ПолучитьСотрудникаПоТекущемуПользователю()

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
    | Сотрудники.Ссылка КАК Ссылка
    |ИЗ
    | Справочник.Пользователи КАК Пользователи
    | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Сотрудники КАК Сотрудники
    | ПО Пользователи.Наименование = Сотрудники.Наименование
    |ГДЕ
    | Пользователи.Ссылка = &Пользователь
    | И Сотрудники.ПометкаУдаления = ЛОЖЬ";

    Запрос.УстановитьПараметр("Пользователь", Пользователи.ТекущийПользователь());

    Выборка = Запрос.Выполнить().Выбрать();

    Выборка.Следующий();

    Возврат Выборка.Ссылка;

    КонецФункции
```
---
А если Следующий() не сработает - угадай, какая будет ошибка?
---
Никакой ошибки не будет, с чего бы, на ИТС давно написано что при вызове метода Следующий() не требуется проверка на РезультатЗапроса.Пустой() т.к. метод не падает в исключение, а просто возвращает Ложь, правильнее конечно будет написать:

```1c
    Сотрудник = ?(Выборка.Следующий(), Выборка.Ссылка, Справочники.Сотрудники.ПустаяСсылка());

    Возврат Сотрудник;
```
---
Молодец, угадал.
---
Есть еще проще вариант, через регистр сведения СотрудникиПользователя

```1c
    &НаСервереБезКонтекста
    Функция ПолучитьСотрудникаПоТекущемуПользователю()

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ РАЗРЕШЕННЫЕ
    | СотрудникиПользователя.Сотрудник КАК Сотрудник
    |ИЗ
    | РегистрСведений.СотрудникиПользователя КАК СотрудникиПользователя
    |ГДЕ
    | СотрудникиПользователя.Пользователь = &Пользователь";

    Запрос.УстановитьПараметр("Пользователь", Пользователи.ТекущийПользователь());

    Выборка = Запрос.Выполнить().Выбрать();

    Сотрудник = ?(Выборка.Следующий(), Выборка.Сотрудник, Справочники.Сотрудники.ПустаяСсылка());

    Возврат Сотрудник;

    КонецФункции
```

Если запрос пустой то вернется Неопределено