Подскажите пожалуйста, не передаётся параметр в цикл
Здравствуйте, написал цикл по заполнению макета
Получил Номенклатуру, передал её параметр в запрос для получения последней закупочной цены для этой номенклатуры, но на выходе получаю "Неопределено".
В консоле запросов проверил, запрос отрабатывается
Что делаю не так? Заранее спасибо
Получил Номенклатуру, передал её параметр в запрос для получения последней закупочной цены для этой номенклатуры, но на выходе получаю "Неопределено".
В консоле запросов проверил, запрос отрабатывается
Что делаю не так? Заранее спасибо
Для Каждого СтрТЗ Из ТЗ Цикл
ОбластьМакета.Параметры.Номер = Номер;
ОбластьМакета.Параметры.Номенклатура = СтрТЗ.Номенклатура;
ОбластьМакета.Параметры.Объем = СтрТЗ.Объем * 10;
ОбластьМакета.Параметры.Кол_во = СтрТЗ.Количество;
ОбластьМакета.Параметры.СуммаПродажи = СтрТЗ.Цена;
Парам = СтрТЗ.Номенклатура;
А = ПолучитьСебестоимостьТовара(Парам);
ОбластьМакета.Параметры.Себестоимость = А;
ОбластьМакета.Параметры.СуммаПрод = Формат(СтрТЗ.Сумма,"ЧЦ=12; ЧДЦ=2");
Номер = Номер + 1;
ТабличныйДокумент.Вывести(ОбластьМакета);
КонецЦикла;
ПоказатьФункция ПолучитьСебестоимостьТовара(Парам);
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
| ПоступлениеТоваровТовары.Цена КАК Цена
|ИЗ
| Документ.ПоступлениеТоваров.Товары КАК ПоступлениеТоваровТовары
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваров КАК ПоступлениеТоваров
| ПО ПоступлениеТоваровТовары.Ссылка = ПоступлениеТоваров.Ссылка
|ГДЕ
| ПоступлениеТоваровТовары.Номенклатура = &Номенклатура
| И ПоступлениеТоваров.Проведен = &Истина
| И ПоступлениеТоваров.Дата <= &Дата
|
|УПОРЯДОЧИТЬ ПО
| ПоступлениеТоваров.Дата УБЫВ";
Запрос.УстановитьПараметр("Номенклатура",Парам);
Запрос.УстановитьПараметр("Истина",Истина);
Запрос.УстановитьПараметр("Дата",НачалоДня(Объект.Дата));
ТЗ = Запрос.Выполнить().Выгрузить();
Если ТЗ.Количество() > 0 Тогда
А = ТЗ.Итог("Цена");
КонецЕсли;
Возврат А;
КонецФункции;
ПоказатьНайденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Зачем делать выгрузку в ТЗ при ВЫБРАТЬ ПЕРВЫЕ 1 ?
Проще:
Проще:
Функция ПолучитьСебестоимостьТовара(Номенклатура);
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
| ПоступлениеТоваровТовары.Цена КАК Цена
|ИЗ
| Документ.ПоступлениеТоваров.Товары КАК ПоступлениеТоваровТовары
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваров КАК ПоступлениеТоваров
| ПО ПоступлениеТоваровТовары.Ссылка = ПоступлениеТоваров.Ссылка
|ГДЕ
| ПоступлениеТоваровТовары.Номенклатура = &Номенклатура
| И ПоступлениеТоваров.Проведен
| И ПоступлениеТоваров.Дата <= &Дата
|
|УПОРЯДОЧИТЬ ПО
| ПоступлениеТоваров.Дата УБЫВ";
Запрос.УстановитьПараметр("Номенклатура",Номенклатура);
Запрос.УстановитьПараметр("Дата",НачалоДня(Объект.Дата));
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Возврат 0;
Иначе
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
Возврат Выборка.Цена;
КонецЕсли;
КонецФункции;
Показать
Ну начнем с того что не стоит делать запрос в цикле, если заранее известна вся номенклатура то можно передать таблицу с ней в запрос до цикла и дополнить вашу таблицу ценами.
Второе если цена "Неопределенно" значит у вас запрос возвращает 0 значений. И Возврат А дает пустое.
А = ТЗ.Итог("Цена"); вот эта строчка не нужна достаточно будет А = ТЗ.Цена
Ну и нужно смотреть какие параметры идут в запрос тогда будет ясно почему он не выполняется.
| И ПоступлениеТоваров.Проведен = &Истина вот эту строчку лучше заменить на
| И ПоступлениеТоваров.Проведен
Будет тоже самое только красиво.
Второе если цена "Неопределенно" значит у вас запрос возвращает 0 значений. И Возврат А дает пустое.
А = ТЗ.Итог("Цена"); вот эта строчка не нужна достаточно будет А = ТЗ.Цена
Ну и нужно смотреть какие параметры идут в запрос тогда будет ясно почему он не выполняется.
| И ПоступлениеТоваров.Проведен = &Истина вот эту строчку лучше заменить на
| И ПоступлениеТоваров.Проведен
Будет тоже самое только красиво.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот