|
СКД .Найти цену на период в Регистр сведений ЦеныНоменклатурыСрезПоследних |
☑ |
0
bogdan51
03.07.14
✎
13:53
|
Добрый день.
Не получается выбрать из регистра сведений ЦеныНоменклатурыСрезПоследних цены,которая действовала на дату Регистратора в Регистре накопления
Запрос.
ВЫБРАТЬ
ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход КАК Приход,
ВЫРАЗИТЬ(ЦеныНоменклатурыСрезПоследнихП.Цена * ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход КАК ЧИСЛО(11, 2)) КАК СуммаПрихода_в_ЗакупочныхЦенах
ИЗ
РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты({(&НачалоПериода)}, {(&КонецПериода)}, Регистратор, Движения, ) КАК ТоварыНаСкладахОстаткиИОбороты
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних({()}, ВидЦены = &ЦенаЗакупок) КАК ЦеныНоменклатурыСрезПоследнихП
ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = ЦеныНоменклатурыСрезПоследнихП.Номенклатура
И ТоварыНаСкладахОстаткиИОбороты.Регистратор.Дата >= ЦеныНоменклатурыСрезПоследнихП.Регистратор.Дата
Буду благодарен за подсказку. Как правильно построить такой запрос в отчете на СКД?
|
|
1
Бешеная Нога
03.07.14
✎
13:56
|
нужно обращаться не к ЦеныНоменклатурыСрезПоследних , а к ЦеныНоменклатуры.
Поиском по форуму найдешь кучу примеров решения "ресурс на каждую дату запроса", "цена на дату регистратора"
|
|
2
Mitriy
03.07.14
✎
14:24
|
Как-то так:
Запрос.
ВЫБРАТЬ
ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход КАК Приход,
ТоварыНаСкладахОстаткиИОбороты.Период
ПОМЕСТИТЬ ВТ_Номенклатура
ИЗ
РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(, , Регистратор, Движения, ) КАК ТоварыНаСкладахОстаткиИОбороты
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ_Номенклатура.Номенклатура,
МАКСИМУМ(ЦеныНоменклатуры.Период) КАК Период,
ЦеныНоменклатуры.ТипЦен
ПОМЕСТИТЬ ВТ_Периоды
ИЗ
ВТ_Номенклатура КАК ВТ_Номенклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
ПО ВТ_Номенклатура.Номенклатура = ЦеныНоменклатуры.Номенклатура
И ВТ_Номенклатура.Период >= ЦеныНоменклатуры.Период
И (ЦеныНоменклатуры.ВидЦены = &ЦенаЗакупок)
СГРУППИРОВАТЬ ПО
ВТ_Номенклатура.Номенклатура,
ЦеныНоменклатуры.ТипЦен
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ_Номенклатура.Номенклатура,
ВТ_Номенклатура.Приход,
ВЫРАЗИТЬ(ЕСТЬNULL(ЦеныНоменклатуры.Цена, 0) * ВТ_Номенклатура.Приход КАК ЧИСЛО(11, 2)) КАК СуммаПрихода_в_ЗакупочныхЦенах,
ВТ_Номенклатура.Период
ИЗ
ВТ_Номенклатура КАК ВТ_Номенклатура
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Периоды КАК ВТ_Периоды
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
ПО ВТ_Периоды.Период = ЦеныНоменклатуры.Период
И ВТ_Периоды.Номенклатура = ЦеныНоменклатуры.Номенклатура
И ВТ_Периоды.ТипЦен = ЦеныНоменклатуры.ТипЦен
ПО ВТ_Номенклатура.Номенклатура = ВТ_Периоды.Номенклатура
|
|
3
Mitriy
03.07.14
✎
14:25
|
ТипЦен на ВидЦены поменяй только...
|
|
4
bogdan51
03.07.14
✎
16:11
|
Спасибо.
|
|
5
floody
03.07.14
✎
16:24
|
в СКД можно еще через соединение наборов, а так (2)
|
|
6
echo77
04.07.14
✎
06:34
|
(5) можно, но это работает как запрос в цикле - не стоит учить людей плохому :)
|
|
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший