Автоматическая подставновка значений из справочника

1. YA_1312004013 28.09.21 13:18 Сейчас в теме
Всем привет.
1с 8.3
Суть проблемы:
Имеется справочник Сотрудники, в котором находятся реквизиты Наименование (стандартный, тип Строка), а так же Должность (тип СправочникСсылка.Должность). Так же имеется документ НачисленияСотрудникам с табличной частью Начисления, в которой хранятся реквизиты Сотрудник (тип СправочникСсылка.Сотрудники) и Должность (тип Строка). В свою очередь, я хочу сделать автоматическую подстановку должности при выборе сотрудника.
Найденные решения
8. DBV 28.09.21 14:02 Сейчас в теме
(7)
&НаСервереБезКонтекста
Функция ПолучитьДолжность(Сотрудник)
 	Запрос = Новый Запрос;
	Запрос.Текст = "ВЫБРАТЬ
					|	СпрСотрудники.Должность
					|ИЗ
					|	Справочник.Сотрудники КАК СпрСотрудники
					|ГДЕ
					|	СпрСотрудники.Ссылка = &Ссылка";
	Запрос.УстановитьПараметр("Ссылка", Сотрудник);
	Выборка = Запрос.Выполнить().Выбрать();
	Если Выборка.Следующий() Тогда
		Возврат Выборка.Должность;
	Иначе
		Возврат "";
	КонецЕсли;
КонецФункции
Показать
YA_1312004013; +1 Ответить
11. provadyuga 99 28.09.21 14:57 Сейчас в теме
Вот рабочий код события ПриИзменении() для колонки "Сотрудники":
&НаСервере
Функция ПолучитьДолжностьСотрудника(Сотрудник)
	Возврат Сотрудник.Должность;
КонецФункции

&НаКлиенте
Процедура СотрудникиСотрудникПриИзменении(Элемент)
	ТекущиеДанные = Элементы.Сотрудники.ТекущиеДанные;
	ТекущиеДанные.Должность = ПолучитьДолжностьСотрудника(ТекущиеДанные.Сотрудник);
КонецПроцедуры
Показать
YA_1312004013; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. -AI- 28.09.21 13:30 Сейчас в теме
&НаСервереБезКонтекста
Процедура получитьДолжность(Сотрудник)
 возврат Сотрудники.Должность
конецеПроцедуры

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

PS преобразование в тип строка тут неявное.
3. YA_1312004013 28.09.21 13:35 Сейчас в теме
Не помогает.
Переменная не определена (Сотрудники)
Возврат <<?>>Сотрудники.Должность;
6. DBV 28.09.21 13:55 Сейчас в теме
(3)
&НаСервереБезКонтекста
Функция ПолучитьДолжность(Сотрудник)
 Возврат Сотрудник.Должность;
КонецФункции


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

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


Либо запросом
7. YA_1312004013 28.09.21 13:57 Сейчас в теме
БСП, к сожалению, нет. Так понимаю, проще будет запросом вытащить? Если не сложно, то сможете мне помочь?
8. DBV 28.09.21 14:02 Сейчас в теме
(7)
&НаСервереБезКонтекста
Функция ПолучитьДолжность(Сотрудник)
 	Запрос = Новый Запрос;
	Запрос.Текст = "ВЫБРАТЬ
					|	СпрСотрудники.Должность
					|ИЗ
					|	Справочник.Сотрудники КАК СпрСотрудники
					|ГДЕ
					|	СпрСотрудники.Ссылка = &Ссылка";
	Запрос.УстановитьПараметр("Ссылка", Сотрудник);
	Выборка = Запрос.Выполнить().Выбрать();
	Если Выборка.Следующий() Тогда
		Возврат Выборка.Должность;
	Иначе
		Возврат "";
	КонецЕсли;
КонецФункции
Показать
YA_1312004013; +1 Ответить
9. YA_1312004013 28.09.21 14:07 Сейчас в теме
Спасибо большое. Отметил твой ответ
Правда, спасибо огромное.
4. provadyuga 99 28.09.21 13:49 Сейчас в теме
ТекущиеДанные = Элементы.Сотрудники.ТекущиеДанные;
5. YA_1312004013 28.09.21 13:53 Сейчас в теме
Тоже нет.
Переменная не определена (Элементы)
ТекСтрока = <<?>>Элементы.Сотрудники.ТекущиеДанные;
10. provadyuga 99 28.09.21 14:36 Сейчас в теме
(5)
Тоже нет.
Переменная не определена (Элементы)
&НаСервере не определена. Забыл указать что &НаКлиенте
&НаКлиенте
Процедура СотрудникиСотрудникПриИзменении(Элемент)
ТекущиеДанные = Элементы.Сотрудники.ТекущиеДанные;
11. provadyuga 99 28.09.21 14:57 Сейчас в теме
Вот рабочий код события ПриИзменении() для колонки "Сотрудники":
&НаСервере
Функция ПолучитьДолжностьСотрудника(Сотрудник)
	Возврат Сотрудник.Должность;
КонецФункции

&НаКлиенте
Процедура СотрудникиСотрудникПриИзменении(Элемент)
	ТекущиеДанные = Элементы.Сотрудники.ТекущиеДанные;
	ТекущиеДанные.Должность = ПолучитьДолжностьСотрудника(ТекущиеДанные.Сотрудник);
КонецПроцедуры
Показать
YA_1312004013; +1 Ответить
12. YA_1312004013 28.09.21 15:48 Сейчас в теме
(11) Тоже работает, спасибо большое.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот