Имя: Пароль:
1C
 
Объединить все документы, взяв только ранний из каждого типа. Как?
0 bolobol
 
13.02.18
08:00
Доброе утро!

Как объединить все документы, взяв только ранний из каждого типа?

Как видно из примера ниже - ПЕРВЫЕ 1 и ГДЕ присутствует в каждом запросе, а УПОРЯДОЧИТЬ - только в конце общего. Из чего следует полагать, что именно так объединить по одному самому раннему документу каждого типа не получится, упорядочивание пойдёт на итог объединения таблиц. Что-то возможно или только временные таблицы, подзапросы?

Пример:
ВЫБРАТЬ ПЕРВЫЕ 1
    АккредитивПереданный.Ссылка,
    АккредитивПереданный.Дата,
    АккредитивПереданный.МоментВремени
ИЗ
    Документ.АккредитивПереданный КАК АккредитивПереданный
ГДЕ ИСТИНА

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

ВЫБРАТЬ ПЕРВЫЕ 1
    АктуализацияБюджетов.Ссылка,
    АктуализацияБюджетов.Дата,
    АктуализацияБюджетов.МоментВремени
ИЗ
    Документ.АктуализацияБюджетов КАК АктуализацияБюджетов
ГДЕ ИСТИНА

УПОРЯДОЧИТЬ ПО
    Дата,
    МоментВремени
1 1Сергей
 
13.02.18
08:07
Вижу пока два варианта решения:
1. Подзапросы
2. Временные таблицы
2 catena
 
13.02.18
08:08
А конструкция ГДЕ ИСТИНА какую смысловую нагрузку несет?
3 bolobol
 
13.02.18
08:18
(2) Показывает, что ГДЕ - во всех отдельных запросах.
4 bolobol
 
13.02.18
08:23
Ах, да, совсем забыл: Что выполняется ранее УПОРЯДОЧИТЬ или ВЫБРАТЬ ПЕРВЫЕ 1 в одном запросе без ТВ и подзапросов?
5 echo77
 
13.02.18
08:23
(1) Подзапросы - да, вместе с конструкцией Выбрать Первые упорядочивание будет работать, а почему второй вариант Временные таблицы - чем они помогут?
6 echo77
 
13.02.18
08:24
(4) Упорядочивание выполняется первым
7 bolobol
 
13.02.18
08:25
(5) Хм... не подумал об этом)
8 Малыш Джон
 
13.02.18
08:36
(5) во временных таблицах УПОРЯДОЧИТЬ с конструкцией ВЫБРАТЬ ПЕРВЫЕ также работает
9 1Сергей
 
13.02.18
08:38
(5)


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

УПОРЯДОЧИТЬ ПО
    Дата,
    МоментВремени

;

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

УПОРЯДОЧИТЬ ПО
    Дата,
    МоментВремени
;
ВЫБРАТЬ
    Ссылка,
    Дата,
    МоментВремени
ИЗ
    АккредитивПереданный КАК АккредитивПереданный

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

ВЫБРАТЬ
    Ссылка,
    Дата,
    МоментВремени
ИЗ
    АктуализацияБюджетов КАК АктуализацияБюджетов
10 bolobol
 
13.02.18
08:44
Про ВТ, судя по всему, получается, что сначала скопипастится весь список документов в ВТ, отберётся один, затем ВТ будет удалена. Т.е. - вопрос лишь в том, на кой её было создавать, отчего подзапрос выглядит перспективнее.
11 Гипервизор
 
13.02.18
08:47
(9) И давно сортировка в ВТ реализована?
12 Amfiaray
 
13.02.18
08:47
Может так?

ТекстЗапроса = "";
    Для Каждого Документ Из Метаданные.Документы Цикл
        ТекстЗапроса = ТекстЗапроса+"
                   |ВЫБРАТЬ ПЕРВЫЕ 1
                   |"+Документ.Имя+".Ссылка    
                   |ПОМЕСТИТЬ ВТ_"+Документ.Имя+"
                   |ИЗ
                   |    Документ."+Документ.Имя+" КАК "+Документ.Имя+"
                   |
                   |УПОРЯДОЧИТЬ ПО
                   |    "+Документ.Имя+".Дата
                   |;
                   |
                   |////////////////////////////////////////////////////////////////////////////////";
    КонецЦикла;
    Первый = Истина;          
    Для Каждого Документ Из Метаданные.Документы Цикл
        Если Первый Тогда
            ТекстЗапроса = ТекстЗапроса+"
                   |ВЫБРАТЬ
                   |    ВТ_"+Документ.Имя+".Ссылка КАК Документ
                   |ИЗ
                   |    ВТ_"+Документ.Имя+" КАК ВТ_"+Документ.Имя+"
                   |";
            Первый = Ложь;
        Иначе
            ТекстЗапроса = ТекстЗапроса+"
                   |ОБЪЕДИНИТЬ ВСЕ
                   |
                   |ВЫБРАТЬ
                   |    ВТ_"+Документ.Имя+".Ссылка
                   |ИЗ
                   |    ВТ_"+Документ.Имя+" КАК ВТ_"+Документ.Имя+"
                   |";
        КонецЕсли;          
    КонецЦикла;
13 bolobol
 
13.02.18
08:50
(11) Скорее - конструктор запросов её стал поддерживать сравнительно не сразу, а чтоб не было сортировки вовсе...
14 bolobol
 
13.02.18
08:55
(12) Может. При всей ненависти к подзапросам, почему-то кажется, что в данной задаче им самое прямое назначение. Если правильно понимаю - первый индекс возьмётся... Вот только - работает ли индекс, когда упорядочивание по ДАТА, МОМЕНТВРЕМЕНИ ?
15 1Сергей
 
13.02.18
08:57
(11) вроде, с самого начала
16 catena
 
13.02.18
09:59
(11)Вы путаете с итогами
17 Гипервизор
 
13.02.18
10:04
(15)(16) Ага, мой косяк.