Помогите с запросом

1. nikita1001 12.09.13 16:27 Сейчас в теме
День добрый. Помогите люди добрые. Есть две функции с запросом, требуется получить последнюю цену. Много перепробовал. Ну ни как
Функция ПолучитьСтаруюРозничнуюЦену(Номенклатура, ХарактеристикаНоменклатуры = Неопределено, Склад, ВалютаРегламентированногоУчета,
Дата = Неопределено, ЕдиницаИзмерения = Неопределено, Валюта = Неопределено, Курс = 0, Кратность = 1) Экспорт

ПолученнаяЦена = 0;

// Если дата не заполнена, возьмем рабочую дату
Если НЕ ЗначениеЗаполнено(Дата) Тогда
Дата = ОбщегоНазначения.ПолучитьРабочуюДату();
КонецЕсли;

Если Номенклатура.Услуга
Или Склад.ВидСклада <> Перечисления.ВидыСкладов.НТТ Тогда
ПолученнаяЦена = Ценообразование.ПолучитьЦенуНоменклатуры(Номенклатура, , Склад.ТипЦенРозничнойТорговли, Дата, ЕдиницаИзмерения, Валюта, Курс, Кратность);
ЕдиницаЦены = ЕдиницаИзмерения;
ВалютаЦены = Валюта;
Иначе

ТаблицаРозничныхЦен = ПолучитьОстаткиИЦеныВРознице(Номенклатура, ХарактеристикаНоменклатуры, Склад, Дата);

Если ТаблицаРозничныхЦен.Количество() = 0 Тогда // Нет розничных цен
ПолученнаяЦена = 0;
Иначе
ПолученнаяЦена = ТаблицаРозничныхЦен[0].ЦенаВРознице; // первая цена
КонецЕсли;

ЕдиницаЦены = Номенклатура.ЕдиницаХраненияОстатков;
ВалютаЦены = ВалютаРегламентированногоУчета;

КонецЕсли;

Возврат ПолученнаяЦена;

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

Функция ПолучитьОстаткиИЦеныВРознице(Номенклатура, ХарактеристикаНоменклатуры, Склад = Неопределено, Дата = Неопределено) Экспорт

// В качетве оперативных остатков берем текущие.
ДатаОстатков = Дата;
Если Дата <> Неопределено Тогда
ДатаОстатков = ?(НачалоДня(Дата) = НачалоДня(ТекущаяДата()), Неопределено, Дата)
КонецЕсли;

Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Дата", ДатаОстатков);
Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
Запрос.УстановитьПараметр("Склад", Склад);
Запрос.УстановитьПараметр("ХарактеристикаНоменклатуры", ?(ХарактеристикаНоменклатуры = Неопределено,
Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка(), ХарактеристикаНоменклатуры));
Запрос.Текст = "
|ВЫБРАТЬ
| ОстаткиТоваровКомпанииОстатки.КоличествоОстаток,
| ОстаткиТоваровКомпанииОстатки.ЦенаВРознице
|ИЗ
| РегистрНакопления.ТоварыВНТТ.Остатки(&Дата,
| Номенклатура = &Номенклатура " +
?(НЕ ЗначениеЗаполнено(Склад),"",
"И Склад = &Склад") + "
| И ХарактеристикаНоменклатуры = &ХарактеристикаНоменклатуры
| И (ЦенаВРознице > 0)) КАК ОстаткиТоваровКомпанииОстатки";



Возврат Запрос.Выполнить().Выгрузить();

КонецФункции // ПолучитьОстаткиИЦеныВРознице(
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. killitch 30 12.09.13 16:35 Сейчас в теме
ПоследняяЦенаВРознице = ТаблицаРозничныхЦен[ТаблицаРозничныхЦен.Количество()-1].ЦенаВРознице;
6. nikita1001 13.09.13 15:16 Сейчас в теме
(2) killitch, Если так сделать, выбирается наибольшая цена за период.
(3) Поправил свой запрос, получаю первую цену за весь период
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Дата", ДатаОстатков);

Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
Запрос.УстановитьПараметр("Склад", Склад);
Запрос.УстановитьПараметр("ХарактеристикаНоменклатуры", ?(ХарактеристикаНоменклатуры = Неопределено,
Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка(), ХарактеристикаНоменклатуры));
Запрос.Текст = "
|ВЫБРАТЬ ПЕРВЫЙ 1
| ОстаткиТоваровКомпанииОстатки.КоличествоОстаток,
| ОстаткиТоваровКомпанииОстатки.ЦенаВРознице
|ИЗ
| РегистрНакопления.ТоварыВНТТ.Остатки(&Дата,
| Номенклатура = &Номенклатура " +
?(НЕ ЗначениеЗаполнено(Склад),"",
"И Склад = &Склад") + "
| И ХарактеристикаНоменклатуры = &ХарактеристикаНоменклатуры
| И (ЦенаВРознице > 0)) КАК ОстаткиТоваровКомпанииОстатки
|
|УПОРЯДОЧИТЬ ПО
| &Дата убыв";
3. donyab 9 12.09.13 16:52 Сейчас в теме
В Запросе функции "ПолучитьОстаткиИЦеныВРознице", добавить поле дата и отсортировать по нему "По убыванию"
4. killitch 30 12.09.13 16:59 Сейчас в теме
Если делать по (3) то лучше в запросе кроме добавление даты и упорядочивания по убыванию в ВЫБРАТЬ добавить ПЕРВЫЕ 1
После выгрузки в ТЗ будет всего одна строка
Тогда ПоследняяЦенаВРознице = ТаблицаРозничныхЦен[0].ЦенаВРознице;
5. nikita1001 13.09.13 13:25 Сейчас в теме
Ок. Спасибо за помощь. Буду пробовать
Оставьте свое сообщение

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