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

1. user1416248 30.05.20 20:05 Сейчас в теме
Здравия всем!

1С 8.2.

Имеем:
Справочник "Номенклатура"
с реквизитами "Наименование" (стандартный) и "ЕдиницаИзмерения".

Документ "Заявка" с табличной частью "СодержаниеЗаявки"
и реквизитами в таблице "Наименование", "ЕдиницаИзмерения".
Тип элемента "Наименование" - СправочникСсылка.Номенклатура

Создал общий модуль "РаботаСДокументами", в котором прописал функцию:
Функция ПодстановкаЕдиницИзмерения (ЭлемНоменклатуры) Экспорт
	ЭлемОтбора = Новый Структура("Наименование", ЭлемНоменклатуры);
	ЗначЭлемента = Справочники.Номенклатура.ПолучитьДанныеВыбора(ЭлемОтбора);
	Возврат ЗначЭлемента.ЕдиницаИзмерения;
КонецФункции


В документе в событии ПриИзменении() элемента "СодержаниеЗаявкиНаименование" вписал так:
Строка = Элементы.СодержаниеЗаявки.ТекущиеДанные;
Строка.ЕдиницаИзмерения = РаботаСДокументами.ПодстановкаЕдиницИзмерения(Строка.Наименование);


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

А выходит вот такая ошибка:
{ОбщийМодуль.РаботаСДокументами.Модуль(4)}: Поле объекта не обнаружено (ЕдиницаИзмерения)
Возврат ЗначЭлемента.ЕдиницаИзмерения;


Что нужно исправить, или может быть как-то по другому можно решить вопрос?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. olegarch 6 30.05.20 21:28 Сейчас в теме
ПолучитьДанныеВыбора() возвращает список значений, у которого, понятное дело, нет реквизита "ЕдиницаИзмерения". Это непосредственная причина ошибки.
Стандартный реквизит "Наименование" - это строка. Ссылку там искать - занятие безблагодатное.

Если нужен реквизит элемента справочника, он получается запросом с условием по ссылке.
3. user633533_encantado 11 30.05.20 21:36 Сейчас в теме
Зачем вообще что-то искать, раз номенклатура уже найдена, просто получить через точку единицу измерения ?
ivan1703; +1 Ответить
4. ivan1703 78 31.05.20 09:25 Сейчас в теме
user1416248

(3)

Строка.ЕдиницаИзмерения = Строка.Наименование.ЕдиницаИзмерения;

)))))
5. user1416248 31.05.20 10:57 Сейчас в теме
(4)
Строка.ЕдиницаИзмерения = Строка.Наименование.ЕдиницаИзмерения;
У наименования нет же параметра "Единица измерения"? Откуда он там возьмется?

&НаКлиенте
Процедура СодержаниеЗаявкиНаименованиеПриИзменении(Элемент)
	// Объявляю переменную, которой присваиваю текущие данные всех элементов
	Строка = Элементы.СодержаниеЗаявки.ТекущиеДанные;
	// Параметру ЕдиницаИзмерения присваиваю результат вычисления функции,
	// где в функцию отправляю значение столбца "Наименование"
	Строка.ЕдиницаИзмерения = РаботаСДокументами.ПодстановкаЕдиницИзмерения(Строка.Наименование);	
КонецПроцедуры


Внутри документа любые манипуляции проходят, без проблем, например вот:
&НаКлиенте
Процедура СодержаниеЗаявкиСтоимостьПриИзменении(Элемент)
	Строка = Элементы.СодержаниеЗаявки.ТекущиеДанные;
	Строка.Цена = Строка.Стоимость / Строка.Количество;
КонецПроцедуры

- это если известно количество, общая стоимость, за которую готовы отдать это количество, и осталось определиться с ценой за штуку.
А вот с выходом на другие объекты - беда получается.

Каким-то чудом удалось реализовать получение актуальных цен из РегистрыСведений, используя общий модуль. Но, пытаясь по тому же принципу получить данные из справочника, постоянно натыкаюсь на какие-то ошибки.
6. ivan1703 78 31.05.20 13:30 Сейчас в теме
(5) параметра может и нет, а реквизит должен быть!

Тип элемента "Наименование" - СправочникСсылка.Номенклатура - Вы написали
7. user633533_encantado 11 31.05.20 14:33 Сейчас в теме
(5) "Тип элемента "Наименование" - СправочникСсылка.Номенклатура"
Оставьте свое сообщение

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