Всем привет.
1с 8.3
Суть проблемы:
Имеется справочник Сотрудники, в котором находятся реквизиты Наименование (стандартный, тип Строка), а так же Должность (тип СправочникСсылка.Должность). Так же имеется документ НачисленияСотрудникам с табличной частью Начисления, в которой хранятся реквизиты Сотрудник (тип СправочникСсылка.Сотрудники) и Должность (тип Строка). В свою очередь, я хочу сделать автоматическую подстановку должности при выборе сотрудника.
---
```1c
    &НаСервереБезКонтекста
    Функция ПолучитьДолжность(Сотрудник)
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    | СпрСотрудники.Должность
    |ИЗ
    | Справочник.Сотрудники КАК СпрСотрудники
    |ГДЕ
    | СпрСотрудники.Ссылка = &Ссылка";
    Запрос.УстановитьПараметр("Ссылка", Сотрудник);
    Выборка = Запрос.Выполнить().Выбрать();
    Если Выборка.Следующий() Тогда
    Возврат Выборка.Должность;
    Иначе
    Возврат ";
    КонецЕсли;
    КонецФункции
```
---
Вот рабочий код события ПриИзменении() для колонки "Сотрудники":

```1c
    &НаСервере
    Функция ПолучитьДолжностьСотрудника(Сотрудник)
    Возврат Сотрудник.Должность;
    КонецФункции

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

а далее, в событии при изменении поля Сотрудник
делать
ТекущиеДанные.Должность = Процедура получитьДолжность(ТекущиеДанные.Сотрудник);

PS преобразование в тип строка тут неявное.
---
Не помогает.
Переменная не определена (Сотрудники)
 Возврат <<?>>Сотрудники.Должность;
---
```1c
    &НаСервереБезКонтекста
    Функция ПолучитьДолжность(Сотрудник)
    Возврат Сотрудник.Должность;
    КонецФункции
```

или есть БСП, то можно

```1c
    &НаСервереБезКонтекста
    Функция ПолучитьДолжность(Сотрудник)
    Возврат ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Сотрудник, "Должность");
    КонецФункции
```

Либо запросом
---
БСП, к сожалению, нет. Так понимаю, проще будет запросом вытащить? Если не сложно, то сможете мне помочь?
---
```1c
    &НаСервереБезКонтекста
    Функция ПолучитьДолжность(Сотрудник)
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    | СпрСотрудники.Должность
    |ИЗ
    | Справочник.Сотрудники КАК СпрСотрудники
    |ГДЕ
    | СпрСотрудники.Ссылка = &Ссылка";
    Запрос.УстановитьПараметр("Ссылка", Сотрудник);
    Выборка = Запрос.Выполнить().Выбрать();
    Если Выборка.Следующий() Тогда
    Возврат Выборка.Должность;
    Иначе
    Возврат ";
    КонецЕсли;
    КонецФункции
```
---
Спасибо большое. Отметил твой ответ
Правда, спасибо огромное.
---
```1c
    ТекущиеДанные = Элементы.Сотрудники.ТекущиеДанные;
```
---
Тоже нет.
Переменная не определена (Элементы)
ТекСтрока = <<?>>Элементы.Сотрудники.ТекущиеДанные;
---
Тоже нет.
Переменная не определена (Элементы) &НаСервере не определена. Забыл указать что &НаКлиенте

```1c
    &НаКлиенте
    Процедура СотрудникиСотрудникПриИзменении(Элемент)
    ТекущиеДанные = Элементы.Сотрудники.ТекущиеДанные;
```
---
Вот рабочий код события ПриИзменении() для колонки "Сотрудники":

```1c
    &НаСервере
    Функция ПолучитьДолжностьСотрудника(Сотрудник)
    Возврат Сотрудник.Должность;
    КонецФункции

    &НаКлиенте
    Процедура СотрудникиСотрудникПриИзменении(Элемент)
    ТекущиеДанные = Элементы.Сотрудники.ТекущиеДанные;
    ТекущиеДанные.Должность = ПолучитьДолжностьСотрудника(ТекущиеДанные.Сотрудник);
    КонецПроцедуры
```
---
Тоже работает, спасибо большое.