Табличные части

1. G_104675376381940917085 11.05.24 23:20 Сейчас в теме
Я создал функцию которая вытягивает данные из справочника номенклатура цену Товара. И при вызове функции цена не записывается в Табличную часть а остаётся пустой. Если использую метод Сообщить, то цена появляется.

&НаКлиенте
Процедура ТоварыТоварПриИзменении(Элемент) 
	ТекущиеДанныеТовары = Элементы.Товары.ТекущиеДанные;
	ЦенаТовара = ПолучитьЦену(ТекущиеДанныеТовары.Товар);
	ТекущиеДанныеТовары.Цена = ЦенаТовара; 
КонецПроцедуры 

Функция ПолучитьЦену(Товар) 
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	Номенклатура.РозничнаяЦена КАК РозничнаяЦена,
	|	Номенклатура.Ссылка КАК Ссылка
	|ИЗ
	|	Справочник.Номенклатура КАК Номенклатура
	|ГДЕ
	|	Номенклатура.Ссылка = &Товар";
	
	Запрос.УстановитьПараметр("Товар",Товар);
	РезультатЗапроса = Запрос.Выполнить();
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		Цена = РезультатЗапроса.Выгрузить().ВыгрузитьКолонку("РозничнаяЦена");
		Возврат Цена;
	КонецЦикла;
	
	
КонецФункции
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Bukaska 140 12.05.24 00:38 Сейчас в теме
Розничная цена - конкретный реквизит справочника?
Ну если побаловаться, то можно так

&НаСервере
Функция ПолучитьЦену(Номенклатура) 
Возврат  Номенклатура.РозничнаяЦена;

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

&НаКлиенте
Процедура ТоварыТоварПриИзменении(Элемент) 
    ТекущиеДанныеТовары = Элементы.Товары.ТекущиеДанные;
    ЦенаТовара = ПолучитьЦену(ТекущиеДанныеТовары.Номенклатура);
  
КонецПроцедуры 
Показать


Хотя логичнее получать цену из регистра, а не из справочника. В справочнике это так... Пример побаловаться, чтоб вы понимали, что есть Серверный и клиентский контекст.



Метод запрос.Выгрузить() я бы рекомендовала использовать его чисто в процессе отладки.
На малых объемах данных оно не имеет значения, но в крупной базе - вы просто повесите компьютер и базу.
3. FUXEARA 12.05.24 07:51 Сейчас в теме
А розничная цена , это число или ...? В отладчике надо проверить, что запрос выдает.
Если розничная цена это число, то ошибка в цикле. Зачем городить выгрузить колонку?!
Перед циклом
Цена = 0
Цена = выборка.РозничнаяЦена

И уже вне цикла

Возврат Цена;
5. FUXEARA 12.05.24 08:23 Сейчас в теме
(3) в продолжение. Если розничная цена это число, зачем запрос городить? Если цена уже в самом товаре есть??? Для этого запрос к товару как к самому себе не нужен.
4. starjevschik 12.05.24 08:05 Сейчас в теме
Для учебы существует специальное приспособление, называется "преподаватель". Они разработаны и существуют ровно для того, чтобы объяснять, показывать, растолковывать, в общем - учить.
Почему бы не воспользоваться такой замечательной возможностью? Это намного эффективнее, чем выкладывать свои страдания на форумы...
Оставьте свое сообщение

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