Имя: Пароль:
1C
1С v8
Запросы. Как реализовать такое вот РегистрСведений.КакойТо.СрезПоследних()
,
0 sintez1234
 
03.09.14
15:35
Запрос что ниже работает, но нужно чтобы в срезе последних дата бралась не из параметра, а из Остатки.Период. Это без вложенного запроса как-то можно делать?

ВЫБРАТЬ
    НАЧАЛОПЕРИОДА(Остатки.Период, День) КАК Дата,
    Остатки.Склад,
    Остатки.Склад.Подразделение,
    Остатки.Склад.РозничныйВидЦены КАК ВидЦены,
    СУММА(Остатки.ВНаличииНачальныйОстаток * Цены.Цена) КАК СуммаНач,
    СУММА(Остатки.ВНаличииКонечныйОстаток * Цены.Цена) КАК СуммаКон

ИЗ
    РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&ДатаНач, &ДатаКон, День) КАК Остатки
        ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаНач) КАК Цены
        ПО Цены.Номенклатура = Остатки.Номенклатура
        И Цены.ВидЦены = Остатки.Склад.РозничныйВидЦены
ГДЕ
    Остатки.Склад.Подразделение = &Подразделение
СГРУППИРОВАТЬ ПО
    НАЧАЛОПЕРИОДА(Остатки.Период, День),
    Остатки.Склад,
    Остатки.Склад.Подразделение,
    Остатки.Склад.РозничныйВидЦены
УПОРЯДОЧИТЬ ПО
    НАЧАЛОПЕРИОДА(Остатки.Период, День)

Пробовал еще так, но это уже не работает, ругается

ВЫБРАТЬ
    НАЧАЛОПЕРИОДА(Остатки.Период, День) КАК Дата,
    Остатки.Склад,
    Остатки.Склад.Подразделение,
    Остатки.Склад.РозничныйВидЦены КАК ВидЦены,
    СУММА(Остатки.ВНаличииНачальныйОстаток * Цены.Цена) КАК СуммаНач,
    СУММА(Остатки.ВНаличииКонечныйОстаток * Цены.Цена) КАК СуммаКон

ИЗ
    РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&ДатаНач, &ДатаКон, День) КАК Остатки
        ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(НАЧАЛОПЕРИОДА(Остатки.Период, День)) КАК Цены
        ПО Цены.Номенклатура = Остатки.Номенклатура
        И Цены.ВидЦены = Остатки.Склад.РозничныйВидЦены
ГДЕ
    Остатки.Склад.Подразделение = &Подразделение
СГРУППИРОВАТЬ ПО
    НАЧАЛОПЕРИОДА(Остатки.Период, День),
    Остатки.Склад,
    Остатки.Склад.Подразделение,
    Остатки.Склад.РозничныйВидЦены
УПОРЯДОЧИТЬ ПО
    НАЧАЛОПЕРИОДА(Остатки.Период, День)
1 чувак
 
03.09.14
15:37
(0) СКД?
2 Wobland
 
03.09.14
15:37
кто первый скажет "срез последних на каждую дату в запросе"?
3 Ёпрст
 
03.09.14
15:37
поиск - срезпоследних на каждую дату
4 sintez1234
 
03.09.14
16:13
(1) Не, чувак, не СКД :) Та фроде пофиг СКД или нет тут.
5 sintez1234
 
03.09.14
16:14
(2)(3) :)
6 p-soft
 
03.09.14
16:39
это как без вложенного? СрезПоследних() разве не вложенный запрос? в стандартных есть отчет на тему ведомость по товарам в ценах номенклатуры. там через временные таблицы сделано.
7 Wobland
 
03.09.14
16:47
>СрезПоследних() разве не вложенный запрос?
вроде бы нет
да и (2) делается без него
8 SergTheGreat
 
03.09.14
17:51
А сделать все в одном запросе - это принципиальное условие?
Вот вариант запроса с временной таблицей, в котором ресурс периодического регистра подтягивается на дату каждого отдельного документа.

ВЫБРАТЬ
    АктХранения.Ссылка,
    МАКСИМУМ(СтавкиХранения.Период) КАК Период
ПОМЕСТИТЬ ВремТаб
ИЗ
    Документ.АктХранения КАК АктХранения
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СтавкиХранения КАК СтавкиХранения
        ПО АктХранения.Дата >= СтавкиХранения.Период
СГРУППИРОВАТЬ ПО
    АктХранения.Ссылка
;
ВЫБРАТЬ
    ВремТаб.Ссылка,
    СтавкиХранения.Ставка
ИЗ
    ВремТаб КАК ВремТаб
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СтавкиХранения КАК СтавкиХранения
        ПО ВремТаб.Период = СтавкиХранения.Период
9 sintez1234
 
03.09.14
18:47
(6) во-во! Я как раз смотрел "ведомость по товарам в ценах номенклатуры", и понял что вечерним мозгом там не разобраться. Но он то что надо делает и быстро. Мне как раз те же самые цифры надо взять, что и этот отчетик.
10 sintez1234
 
03.09.14
18:48
(8) в одном запрос не обязательно, просто скорость важна. Я сделал вложенным запросом - тормозит ацки, полчаса формируется. А типовой с теми же цифрами формируется менее чем за 30 сек. Но он на СКД типовой то.
11 sintez1234
 
03.09.14
18:49
(8) большое спасибо. Попробую разобраться с этим примером, вроде ничего сложного на первый взгляд.
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой