Вход | Регистрация


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

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

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

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

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

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

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

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

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

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

;

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

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

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

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

ТекстЗапроса = "";
    Для Каждого Документ Из Метаданные.Документы Цикл
        ТекстЗапроса = ТекстЗапроса+"
                   |ВЫБРАТЬ ПЕРВЫЕ 1
                   |"+Документ.Имя+".Ссылка    
                   |ПОМЕСТИТЬ ВТ_"+Документ.Имя+"
                   |ИЗ
                   |    Документ."+Документ.Имя+" КАК "+Документ.Имя+"
                   |
                   |УПОРЯДОЧИТЬ ПО
                   |    "+Документ.Имя+".Дата
                   |;
                   |
                   ////////////////////////////////////////////////////////////////////////////////";

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

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует