Имя: Пароль:
1C
1С v8
Оптимальный запрос
0 Sem0709
 
25.01.17
09:09
Всем здрасти!

ИМЯ - ДОКУМЕНТ - ДАТА
--------------------------
Паша - Паспорт - 23.12.2018
Паша - ВоенБилет - 23.04.2020
Паша - Патент - 01.02.2022
Маша - ИностПаспорт - 28.07.2023
Саша - Паспорт - 15.10.2028

Подскажите запрос чтобы по Паше показать документ с максимальной датой... в результате нужно ИМЯ и ДОКУМЕНТ


Я это вижу так, но может какие-то подводные камни или более читабельный вариант?

ВЫБРАТЬ
    Документы.Наименование,
    Документы.ДатаОкончанияДействия
ИЗ
    Справочник.Документы КАК Документы
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            Документы.Владелец КАК Владелец,
            МАКСИМУМ(Документы.ДатаОкончанияДействия) КАК ДатаОкончанияДействия
        ИЗ
            Справочник.Документы КАК Документы
        
        СГРУППИРОВАТЬ ПО
            Документы.Владелец) КАК ВложенныйЗапрос
        ПО Документы.Владелец = ВложенныйЗапрос.Владелец
            И Документы.ДатаОкончанияДействия = ВложенныйЗапрос.ДатаОкончанияДействия
ГДЕ
    Документы.Владелец = &Владелец
1 toypaul
 
гуру
25.01.17
09:11
Все правильно, только надо задуматься что будет если даты (максимальные) будут две или больше
2 Sem0709
 
25.01.17
09:14
(1) Да, как это решить мне так в голову и не пришло... видимо, придётся проверять результат на количество и если более одно, то подставлять первый...
3 PRO100 NigGaZ
 
25.01.17
09:19
Выбрать первые 1
Документ, Дата
Из Т
Упорядочить по Дата Убыв
не?
4 d546
 
25.01.17
09:20
(3) не
5 Широкий
 
25.01.17
09:23
Во вложенном запросе условие по владельцу поставь
6 d546
 
25.01.17
09:26
(0) 1. по мне не хватает поля "ИМЯ" в запросе, если учитывать что изначально было есть имя. или тогда во вложенном делать отбор сразу по владельцу.
2. если два документа с одинаковыми датами и нет приоритета по документу, то лучше группировку по дате и максимум по документу просто
7 d546
 
25.01.17
09:26
(5) :)
8 Sem0709
 
25.01.17
09:27
(5) Не могу... этот запрос дальше по владельцу будет соединяться...
9 Широкий
 
25.01.17
09:28
(0) Если запрос самомстоятельный - не в составе сложного то лучший вариант в (3)
10 Sem0709
 
25.01.17
09:28
(9) Не самостоятельный)
11 Широкий
 
25.01.17
09:28
(8) Я говорю вложенный запрос сразу по владельцу отсеки. Поле убирать не надо.
12 Sem0709
 
25.01.17
09:31
(11) Владелец - это поле соединения, а не параметр. Я просто не знал как ещё показать и не написал...
13 Sem0709
 
25.01.17
09:35
(6) 2. Прям в запросе, чтобы потом не перебирать ? Про это речь ?
14 2dolist
 
25.01.17
09:55
(3) так только одна запись будет, а ему нужен как бы срез последних
15 2dolist
 
25.01.17
09:56
(0) А если несколько документов на одну дату, нужно оба выводить или любой из них сойдёт?
16 Sem0709
 
25.01.17
10:34
(15) Однозначно один, только пока не знаю какой, пока случайный.
17 d546
 
25.01.17
10:38
(13) да в запросе
18 d546
 
25.01.17
10:42
(16) если не случайно, то надо признак приоритета во временной таблице организовывать (через ВЫБОР по типу документа), максимум по нему и связка по нему. если случайно, то лучше просто максимум(ДОКУМЕНТ) делай с группировкой по ИМЯ, ДАТА в запросе
19 d546
 
25.01.17
10:43
и в основной надо признак приоритета тоже для соединения
20 Sem0709
 
25.01.17
10:52
(19) Понял. Буду реализовывать. СпасибО!
21 d546
 
25.01.17
10:56
(20) попробуй, что-то вроде не домудрил :)