Имя: Пароль:
1C
1С v8
Как получить максимум в запросе
,
0 Два вопроса
 
25.03.14
07:24
Вроде всё просто, но.
Есть вложенный запрос, например:
(ВЫБРАТЬ
РеализацияТоваровУслугТовары.Номенклатура,
РеализацияТоваровУслугТовары.Дата,
РеализацияТоваровУслугТовары.Количество
ИЗ
Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары) КАК ВсеРеализации

Как теперь отобрать оттуда только те строки, в которых для каждой номенклатуры дата максимальная? Т.е. нужно отобрать последнее движение по каждой номенклатуре. Через МАКСИМУМ не идет никак. Вытаскивает все обороты за всё время.
1 break
 
25.03.14
07:31
сделать два запроса на временных таблицах (в первом оставить только дату и номенклатуру) соединить по номенклатуре
2 shuhard
 
25.03.14
07:35
(1) +1
и брать не по ТЧ РТиУ, а по Рг Продажи, если речь о торговых конфах
3 Два вопроса
 
25.03.14
07:37
Как брать пока не принципиально. Важно получить последнее.
4 shuhard
 
25.03.14
07:38
(3) какая  буква в  (1)  не понятна ?
5 Два вопроса
 
25.03.14
07:40
(4) как максимум прикрутить пока не ясно
6 Два вопроса
 
25.03.14
07:44
ВЫБРАТЬ
    МАКСИМУМ(Продажи.Регистратор) КАК Регистратор,
    Продажи.Номенклатура
ПОМЕСТИТЬ МаксимальнаяРеализация
ИЗ
    РегистрНакопления.Продажи КАК Продажи

СГРУППИРОВАТЬ ПО
    Продажи.Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Продажи.Регистратор,
    Продажи.Номенклатура,
    Продажи.Количество
ПОМЕСТИТЬ ВсеРеализации
ИЗ
    РегистрНакопления.Продажи КАК Продажи
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВсеРеализации.Регистратор,
    ВсеРеализации.Номенклатура,
    ВсеРеализации.Количество
ИЗ
    МаксимальнаяРеализация КАК МаксимальнаяРеализация
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВсеРеализации КАК ВсеРеализации
        ПО МаксимальнаяРеализация.Номенклатура = ВсеРеализации.Номенклатура
7 Два вопроса
 
25.03.14
07:55
Работает однако.



ВЫБРАТЬ
    МАКСИМУМ(Продажи.Регистратор) КАК Регистратор,
    Продажи.Номенклатура
ПОМЕСТИТЬ МаксимальнаяРеализация
ИЗ
    РегистрНакопления.Продажи КАК Продажи
ГДЕ
    Продажи.Контрагент = &Контрагент

СГРУППИРОВАТЬ ПО
    Продажи.Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Продажи.Регистратор,
    Продажи.Номенклатура,
    Продажи.Количество
ПОМЕСТИТЬ ВсеРеализации
ИЗ
    РегистрНакопления.Продажи КАК Продажи
ГДЕ
    Продажи.Контрагент = &Контрагент
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВсеРеализации.Регистратор,
    ВсеРеализации.Номенклатура,
    ВсеРеализации.Количество
ИЗ
    МаксимальнаяРеализация КАК МаксимальнаяРеализация
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВсеРеализации КАК ВсеРеализации
        ПО МаксимальнаяРеализация.Номенклатура = ВсеРеализации.Номенклатура
            И МаксимальнаяРеализация.Регистратор = ВсеРеализации.Регистратор
8 Два вопроса
 
25.03.14
07:59
Нет, не работает
9 Два вопроса
 
25.03.14
08:11
Нашел вариант, но если в одну секунду будет несколько реализаций, то будет затык.




ВЫБРАТЬ
    Продажи.Номенклатура,
    МАКСИМУМ(Продажи.Период) КАК Период
ПОМЕСТИТЬ МаксимальнаяРеализация
ИЗ
    РегистрНакопления.Продажи КАК Продажи
ГДЕ
    Продажи.Контрагент = &Контрагент

СГРУППИРОВАТЬ ПО
    Продажи.Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Продажи.Номенклатура,
    Продажи.Количество,
    Продажи.Период
ПОМЕСТИТЬ ВсеРеализации
ИЗ
    РегистрНакопления.Продажи КАК Продажи
ГДЕ
    Продажи.Контрагент = &Контрагент
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВсеРеализации.Номенклатура,
    ВсеРеализации.Количество,
    ВсеРеализации.Период КАК Регистратор
ИЗ
    МаксимальнаяРеализация КАК МаксимальнаяРеализация
        ЛЕВОЕ СОЕДИНЕНИЕ ВсеРеализации КАК ВсеРеализации
        ПО МаксимальнаяРеализация.Номенклатура = ВсеРеализации.Номенклатура
            И МаксимальнаяРеализация.Период = ВсеРеализации.Период
10 Два вопроса
 
25.03.14
08:24
Как-то криво местами в этом мире.
11 13_Mult
 
25.03.14
08:26
С чего затык то будет?
12 13_Mult
 
25.03.14
08:30
(11)+ Вариант из (9) и все ном будет
13 Два вопроса
 
25.03.14
08:46
(12) Надеюсь.
14 Два вопроса
 
25.03.14
08:49
(11) Он же их просуммирует, а надо получить количество именно последнего документа.
15 break
 
25.03.14
08:51
если периоды одинаковые то какой будет последним?
16 13_Mult
 
25.03.14
08:54
(14) ни чего там не суммируется (если сам в запросе не укажешь)
17 13_Mult
 
25.03.14
08:57
(14) Вы бы попробовали в консольке запросов все варианты, и убедились бы сами что и как.
18 Два вопроса
 
25.03.14
09:01
(16) Точно. Это я после Ровановских сказок в ступор впадаю.