Имя: Пароль:
1C
1С v8
Помогите с запросом.
,
0 FOI1977
 
23.10.14
15:50
Нужно получить последний по "Дата" документ по контрагентам
делаю так:

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

ОБЪЕДИНИТЬ ВСЕ

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

УПОРЯДОЧИТЬ ПО
    Контрагент


Естественно выходит по 2 документа 1 заказ и 1 реализация, а мне надо ссылку на последний документ каждого контрагента.
1 Euguln
 
23.10.14
15:52
Может просто ОБЪЕДИНИТЬ
2 Ёпрст
 
23.10.14
16:06
(0)
ВЫБРАТЬ
    Реализация.Ссылка КАК Документ,
    Реализация.Дата КАК Дата,
    Реализация.Контрагент КАК Контрагент
ПОМЕСТИТЬ ТабличкаДоков
ИЗ
    Документ.РеализацияТоваровУслуг КАК Реализация

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    Заказ.Ссылка,
    Заказ.Дата,
    Заказ.Контрагент
ИЗ
    Документ.ЗаказПокупателя КАК Заказ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    МАКСИМУМ(Табличка.Дата) КАК Дата,
    Табличка.Контрагент КАК Контрагент
ПОМЕСТИТЬ ТабличкаМаксимумПоДата
ИЗ
    ТабличкаДоков КАК Табличка

СГРУППИРОВАТЬ ПО
    Табличка.Контрагент
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ТабличкаДоков.Документ,
    ТабличкаДоков.Контрагент
ИЗ
    ТабличкаДоков КАК ТабличкаДоков
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТабличкаМаксимумПоДата КАК ТабличкаМаксимумПоДата
        ПО (ТабличкаМаксимумПоДата.Контрагент = ТабличкаДоков.Контрагент)
            И (ТабличкаМаксимумПоДата.Дата = ТабличкаДоков.Дата)
3 FOI1977
 
24.10.14
10:49
(2) двоит, троит, четверит...
если поставить в запросе упорядочивание по контрагенту это видно
4 FOI1977
 
24.10.14
10:50
Вот другой неверноработающий вариант. Как бы убрать группировку по ссылке...

ВЫБРАТЬ различные
    Реализация.Ссылка КАК Документ,
    Реализация.Дата КАК Дата,
    Реализация.Контрагент КАК Контрагент
ПОМЕСТИТЬ ТабличкаДоков
ИЗ
    Документ.РеализацияТоваровУслуг КАК Реализация

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    Заказ.Ссылка,
    Заказ.Дата,
    Заказ.Контрагент
ИЗ
    Документ.ЗаказПокупателя КАК Заказ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    МАКСИМУМ(Табличка.Дата) КАК Дата,
    Табличка.Контрагент КАК Контрагент
ПОМЕСТИТЬ ТабличкаМаксимумПоДата
ИЗ
    ТабличкаДоков КАК Табличка

СГРУППИРОВАТЬ ПО
    Табличка.Контрагент
;

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

УПОРЯДОЧИТЬ ПО
    Контрагент
5 FOI1977
 
24.10.14
10:50
Ошибся...
6 FOI1977
 
24.10.14
10:51
Вот вот этот запрос хотел запостить:
ВЫБРАТЬ
    ПоследниеДокументы.Контрагент КАК Контрагент,
    МАКСИМУМ(ПоследниеДокументы.Дата) КАК Дата,
    Документы.Ссылка
ИЗ
    (ВЫБРАТЬ
        МАКСИМУМ(ЗаказПокупателя.Дата) КАК Дата,
        ЗаказПокупателя.Контрагент КАК Контрагент
    ИЗ
        Документ.ЗаказПокупателя КАК ЗаказПокупателя
    
    СГРУППИРОВАТЬ ПО
        ЗаказПокупателя.Контрагент
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
        МАКСИМУМ(РеализацияТоваровУслуг.Дата),
        РеализацияТоваровУслуг.Контрагент
    ИЗ
        Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
    
    СГРУППИРОВАТЬ ПО
        РеализацияТоваровУслуг.Контрагент) КАК ПоследниеДокументы
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ЗаказПокупателя.Ссылка КАК Ссылка,
            ЗаказПокупателя.Дата КАК Дата,
            ЗаказПокупателя.Контрагент КАК Контрагент
        ИЗ
            Документ.ЗаказПокупателя КАК ЗаказПокупателя
        
        ОБЪЕДИНИТЬ ВСЕ
        
        ВЫБРАТЬ
            РеализацияТоваровУслуг.Ссылка,
            РеализацияТоваровУслуг.Дата,
            РеализацияТоваровУслуг.Контрагент
        ИЗ
            Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг) КАК Документы
        ПО ПоследниеДокументы.Контрагент = Документы.Контрагент
            И ПоследниеДокументы.Дата = Документы.Дата

СГРУППИРОВАТЬ ПО
    ПоследниеДокументы.Контрагент
    , Документы.Ссылка

УПОРЯДОЧИТЬ ПО
    Контрагент
7 FOI1977
 
24.10.14
10:52
Эта группировка

по Документы.Ссылка

всю малину портит!
8 Ёпрст
 
24.10.14
12:33
(3) гонишь, гонишь, гонишь...
9 salvator
 
24.10.14
12:39
(2) Можно же просто из временной таблицы сделать выборку

ВЫБРАТЬ ПЕРВЫЕ 1
  ТабличкаДоков.Документ
ИЗ ТабличкаДоков КАК ТабличкаДоков
УПОРЯДОЧИТЬ ПО ТабличкаДоков.Дата УБЫВ
10 Ёпрст
 
24.10.14
12:41
(9) еще подумай.
11 salvator
 
24.10.14
12:41
Сорри не увидел про контрагентов. Пятница такая пятница.
12 Ёпрст
 
24.10.14
12:45
как в (2) может не работать только в одном случае - есть куева туча документов одного клиентоса с одинаковой датой, тогда придётся брать.. ну по максимум ссылки дока хотя бы.
13 palpetrovich
 
24.10.14
12:51
(3) кинь скриншот сюда где " двоит, троит, четверит...", интересно
14 Serginio1
 
24.10.14
12:58
15 Serginio1
 
24.10.14
13:01
16 Крошка Ру
 
24.10.14
13:09
(0)ВЫБРАТЬ
    РеализацияТоваровУслуг.Контрагент КАК Контрагент,
    МАКСИМУМ(РеализацияТоваровУслуг.Дата) КАК Дата,
    "РТУ" КАК ТипДокумента
ПОМЕСТИТЬ ВТ_Документы
ИЗ
    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг

СГРУППИРОВАТЬ ПО
    РеализацияТоваровУслуг.Контрагент

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ЗаказПокупателя.Контрагент,
    МАКСИМУМ(ЗаказПокупателя.Дата),
    "ЗП"
ИЗ
    Документ.ЗаказПокупателя КАК ЗаказПокупателя

СГРУППИРОВАТЬ ПО
    ЗаказПокупателя.Контрагент

ИНДЕКСИРОВАТЬ ПО
    Контрагент,
    Дата
;

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

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ВТ_Документы.Дата,
    ВТ_Документы.Контрагент,
    ЗаказПокупателя.Ссылка
ИЗ
    ВТ_Документы КАК ВТ_Документы
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя КАК ЗаказПокупателя
        ПО ВТ_Документы.Контрагент = ЗаказПокупателя.Контрагент
            И ВТ_Документы.Дата = ЗаказПокупателя.Дата
            И (ВТ_Документы.ТипДокумента = "ЗП")
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ ПЕРВЫЕ 1
    ВТ_ПоследниеДокументы.Контрагент,
    ВТ_ПоследниеДокументы.Документ
ИЗ
    ВТ_ПоследниеДокументы КАК ВТ_ПоследниеДокументы

УПОРЯДОЧИТЬ ПО
    ВТ_ПоследниеДокументы.Дата УБЫВ
17 palpetrovich
 
24.10.14
13:25
(16) в результате один контрагент, не?
пока не будет доказательств "неработоспособности" от ТС, (2) - рулит!
18 Крошка Ру
 
24.10.14
13:29
(17) Оу, пардон, неверно понял условия задачи
19 Крошка Ру
 
24.10.14
13:31
(0) Тогда вопрос к ТСу: если на последнюю дату будет несколько документов, что выводить?
20 Chameleon1980
 
24.10.14
13:35
И (ТабличкаМаксимумПоДата.Дата = ТабличкаДоков.Дата)
накуя?
21 Chameleon1980
 
24.10.14
13:36
из двух типов доков поконтру получить последний и такие констры?
Ошибка? Это не ошибка, это системная функция.