Имя: Пароль:
1C
1С v8
Запрос к периодическому регистру сведений
0 slafor
 
25.08.19
09:25
Из периодического регистра сведений (измерения - Номенклатура, ТипЦены; ресурс - Цена) надо выбрать последнюю цену по каждой Номенклатуре независимо от ТипаЦен.

При простом запросе выдает все последние записи, даже если пишу ВЫБРАТЬ Номенклатура, Цена - все равно записи по всем типам цен. Что не так?
1 Консультант Баранов
 
25.08.19
09:34
Потому что это не регистр накопления в котором ресурсы суммируются.

Находи максимальный период для каждой номенклатуры и выбирай максималь/минимальную цену для этого периода
2 ДенисЧ
 
25.08.19
09:47
А если просто взять срез последних без условий?
3 hhhh
 
25.08.19
09:54
(0) пробуй непростой запрос тогда. Простой - это понятно, что не выдаст, ты нас не удивил.
4 Мимохожий Однако
 
25.08.19
10:57
(0) не так в постановке задачи. Пишешь:"Не зависимо от типа цен" и удивляешься, что все типы цен показывает. Пишешь:"..последнюю цену", СрезПоследних не используешь и удивляешься снова.))
5 slafor
 
25.08.19
19:55
Может быть, подскажете тогда, хотя бы приблизительно, как он должен выглядеть?

Сейчас есть текст:
ВЫБРАТЬ Период, Номенклатура, Цена
ИЗ РегистрСведений.Цены.СрезПоследних без параметров
и он выдает таблицу с последними записанными ценами, но без ТипаЦен (потому что он не нужен).

Что дальше можно сделать с этой таблицей в самом запросе?
6 RomanYS
 
25.08.19
20:02
(5) сгруппировать Максимум(Период) и соединить с исходной таблицей по номенклатуре и периоду.
Но есть нюанс - записи с одинаковыми датами останутся.

Вариант 2 (решает этот нюанс): кореллированный запрос
7 Консультант Баранов
 
25.08.19
22:10
(5) КАк то так

ВЫБРАТЬ
    ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
    ЦеныНоменклатурыСрезПоследних.Цена КАК Цена,
    ЦеныНоменклатурыСрезПоследних.Период КАК Период
ПОМЕСТИТЬ втДанные
ИЗ
    РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    втДанные.Номенклатура КАК Номенклатура,
    МАКСИМУМ(втДанные.Цена) КАК Цена
ИЗ
    (ВЫБРАТЬ
        втДанные.Номенклатура КАК Номенклатура,
        МАКСИМУМ(втДанные.Период) КАК МаксПериод
    ИЗ
        втДанные КАК втДанные
    
    СГРУППИРОВАТЬ ПО
        втДанные.Номенклатура) КАК взМаксПериод
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ втДанные КАК втДанные
        ПО взМаксПериод.Номенклатура = втДанные.Номенклатура
            И взМаксПериод.МаксПериод = втДанные.Период

СГРУППИРОВАТЬ ПО
    втДанные.Номенклатура
Независимо от того, куда вы едете — это в гору и против ветра!