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

1С:Предприятие ::

Метки: 

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

Я
   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) Ага, мой косяк.


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