![]() |
|
Запрос. Временная таблица. Сделать "срез последних без среза последних" | ☑ | ||
---|---|---|---|---|
0
ErrorEd88
15.01.13
✎
12:23
|
Из регистра сведений ЦеныНоменклатуры пытаюсь выбрать одну "крайнюю" запись за период (срез последних не применяю не просто так).
Упорядочить запрос по дате с убыванием и выбрать первую запись во временной таблице нельзя. Как оптимальней решить проблему? Набросал вот это, но сомневаюсь, что работает как нужно: ВЫБРАТЬ ЦеныНоменклатуры.Период КАК Период, ЦеныНоменклатуры.Номенклатура, ЦеныНоменклатуры.ТипЦен, ЦеныНоменклатуры.Валюта КАК Валюта, ЦеныНоменклатуры.Цена КАК Цена ПОМЕСТИТЬ ВТ ИЗ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры ГДЕ ЦеныНоменклатуры.Период <= &Период И ЦеныНоменклатуры.ТипЦен = &ТипЦен ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ЦеныНоменклатуры.Период, ЦеныНоменклатуры.Номенклатура, ЦеныНоменклатуры.ТипЦен, ЦеныНоменклатуры.Валюта, ЦеныНоменклатуры.Цена, МАКСИМУМ(ВТ.Период) КАК Период1 ПОМЕСТИТЬ ВТСрезПоследних ИЗ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ КАК ВТ ПО ЦеныНоменклатуры.Номенклатура = ВТ.Номенклатура И ЦеныНоменклатуры.Валюта = ВТ.Валюта ГДЕ ЦеныНоменклатуры.Номенклатура = ВТ.Номенклатура И ЦеныНоменклатуры.ТипЦен = &ТипЦен И ЦеныНоменклатуры.Валюта = ВТ.Валюта СГРУППИРОВАТЬ ПО ЦеныНоменклатуры.Период, ЦеныНоменклатуры.Номенклатура, ЦеныНоменклатуры.ТипЦен, ЦеныНоменклатуры.Валюта, ЦеныНоменклатуры.Цена ИМЕЮЩИЕ ЦеныНоменклатуры.Период = МАКСИМУМ(ВТ.Период) |
|||
1
mikecool
15.01.13
✎
12:25
|
"Упорядочить запрос по дате с убыванием и выбрать первую запись во временной таблице нельзя. " а если в подзапросе?
|
|||
2
х86
15.01.13
✎
12:28
|
делай по аналогии срез последних на дату
|
|||
3
DrShad
15.01.13
✎
12:32
|
[(срез последних не применяю не просто так). ] а подробней
|
|||
4
Reset
15.01.13
✎
12:36
|
(0) Запрос не смотрел, но срез последних это просто Поля,максимум(период) из РС
Сгруппировать(список выбираемых полей кроме периода) где (условия отбора) |
|||
5
Reset
15.01.13
✎
12:56
|
Вот вариант по мотивам (0)
|
|||
6
ErrorEd88
15.01.13
✎
17:33
|
Всем спасибо за ранние ответы.
Мозги кипят, не могу понять в чем ошибка, кому не лень: КОНЕЦПЕРИОДА(РегламентированныйПроизводственныйКалендарь.ДатаКалендаря, МЕСЯЦ) КАК КонецМесяца ПОМЕСТИТЬ Календарь ИЗ РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь ГДЕ РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ &НачалоПериода И &КонецПериода ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ УсловияПоставокПоДоговорамКонтрагентовПоНоменклатуре.ДоговорКонтрагента, УсловияПоставокПоДоговорамКонтрагентовПоНоменклатуре.Номенклатура, УсловияПоставокПоДоговорамКонтрагентовПоНоменклатуре.Цена КАК ЦенаПоДоговору, УсловияПоставокПоДоговорамКонтрагентовПоНоменклатуре.ВалютаЦены КАК ВалютаПрайсаПоДоговору, Календарь.КонецМесяца, МАКСИМУМ(УсловияПоставокПоДоговорамКонтрагентовПоНоменклатуре.Период) КАК Период ПОМЕСТИТЬ Условия ИЗ РегистрСведений.УсловияПоставокПоДоговорамКонтрагентовПоНоменклатуре КАК УсловияПоставокПоДоговорамКонтрагентовПоНоменклатуре, Календарь КАК Календарь ГДЕ УсловияПоставокПоДоговорамКонтрагентовПоНоменклатуре.Период <= Календарь.КонецМесяца СГРУППИРОВАТЬ ПО УсловияПоставокПоДоговорамКонтрагентовПоНоменклатуре.ВалютаЦены, УсловияПоставокПоДоговорамКонтрагентовПоНоменклатуре.ДоговорКонтрагента, УсловияПоставокПоДоговорамКонтрагентовПоНоменклатуре.Номенклатура, Календарь.КонецМесяца, УсловияПоставокПоДоговорамКонтрагентовПоНоменклатуре.Цена ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ЦеныНоменклатуры.Номенклатура, ЦеныНоменклатуры.Валюта КАК ВалютаПрайсаПоПредприятию, ЦеныНоменклатуры.Цена КАК ЦенаПоПредприятию, Календарь.КонецМесяца, МАКСИМУМ(ЦеныНоменклатуры.Период) КАК Период, ЦеныНоменклатуры.ТипЦен ПОМЕСТИТЬ ЦеныНом ИЗ Календарь КАК Календарь, РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры ГДЕ ЦеныНоменклатуры.Период <= Календарь.КонецМесяца И ЦеныНоменклатуры.ТипЦен = &ТипЦен СГРУППИРОВАТЬ ПО Календарь.КонецМесяца, ЦеныНоменклатуры.Валюта, ЦеныНоменклатуры.Номенклатура, ЦеныНоменклатуры.Цена, ЦеныНоменклатуры.ТипЦен ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПродажиОбороты.Организация, ПродажиОбороты.Контрагент, ПродажиОбороты.ДоговорКонтрагента, ПродажиОбороты.ДоговорКонтрагента.ВалютаВзаиморасчетов КАК ВалютаДоговора, ПродажиОбороты.Номенклатура.Артикул КАК АртикулНоменклатура, ПродажиОбороты.Номенклатура КАК Номенклатура, ПродажиОбороты.КоличествоОборот, Календарь.КонецМесяца КАК КонецМесяца, ПродажиОбороты.СтоимостьОборот ПОМЕСТИТЬ Продажи ИЗ (ВЫБРАТЬ РАЗЛИЧНЫЕ КОНЕЦПЕРИОДА(РегламентированныйПроизводственныйКалендарь.ДатаКалендаря, МЕСЯЦ) КАК КонецМесяца ИЗ РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь ГДЕ РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ &НачалоПериода И &КонецПериода) КАК Календарь, РегистрНакопления.Продажи.Обороты(, , Авто, ) КАК ПродажиОбороты ГДЕ МЕСЯЦ(ПродажиОбороты.ПериодМесяц) = МЕСЯЦ(Календарь.КонецМесяца) И ГОД(ПродажиОбороты.ПериодМесяц) = ГОД(Календарь.КонецМесяца) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВЫБОР КОГДА НЕ Условия.ВалютаПрайсаПоДоговору ЕСТЬ NULL И НЕ Условия.ЦенаПоДоговору = 0 ТОГДА "Прайс по договору" КОГДА НЕ ЦеныНом.ВалютаПрайсаПоПредприятию ЕСТЬ NULL ТОГДА "Прайс по предприятию" ИНАЧЕ "Прайс не задан" КОНЕЦ КАК СпособУказанияПрайса, Продажи.КонецМесяца КАК КонецМесяца, Продажи.Организация, Продажи.Контрагент, Продажи.ДоговорКонтрагента, Продажи.ВалютаДоговора, Продажи.АртикулНоменклатура, Продажи.Номенклатура, Продажи.КоличествоОборот КАК КоличествоОборот, Условия.ВалютаПрайсаПоДоговору, Условия.ЦенаПоДоговору КАК ЦенаПоДоговору, ЦеныНом.ЦенаПоПредприятию КАК ЦенаПоПредприятию, ЦеныНом.ВалютаПрайсаПоПредприятию, Продажи.СтоимостьОборот КАК СтоимостьОборот ИЗ Продажи КАК Продажи ЛЕВОЕ СОЕДИНЕНИЕ Условия КАК Условия ПО Продажи.ДоговорКонтрагента = Условия.ДоговорКонтрагента И Продажи.Номенклатура = Условия.Номенклатура И Продажи.КонецМесяца = Условия.КонецМесяца ЛЕВОЕ СОЕДИНЕНИЕ ЦеныНом КАК ЦеныНом ПО Продажи.Номенклатура = ЦеныНом.Номенклатура И Продажи.КонецМесяца = ЦеныНом.КонецМесяца ИТОГИ СУММА(КоличествоОборот), СУММА(ЦенаПоДоговору), СУММА(ЦенаПоПредприятию), СУММА(СтоимостьОборот) ПО ОБЩИЕ, СпособУказанияПрайса, КонецМесяца |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |