Генерация временного ряда запросом

Программирование - Универсальные функции

Способ генерации последовательности дат средствами языка запроса 1С.

Алгоритм:

1. Генерируем числовой ряд от 0 до n. Получаем так: [0,1,2,3,4,5,6,7,8,9] Х [0,1,2,3,4,5,6,7,8,9] X ..... Х [0,1,2,3,4,5,6,7,8,9]. Количество элементов последовательности = 10^n, где n - количество векторов. 

2. От конечной даты отнимаем число дней, равное каждому из членов последовательности из пункта 1.

Запрос:

ВЫБРАТЬ
    Подзапрос.Дата КАК Дата
ИЗ
    (ВЫБРАТЬ
        ДОБАВИТЬКДАТЕ(&КонДата, ДЕНЬ, -1 * (Единицы.a + 10 * Десятки.a + 100 * Сотни.a + 1000 * Тысячи.a)) КАК Дата
    ИЗ
       (ВЫБРАТЬ 0 КАК a ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВСЕ 
        ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 9) КАК Единицы,
       (ВЫБРАТЬ 0 КАК a ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВСЕ 
        ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 9) КАК Десятки,
       (ВЫБРАТЬ 0 КАК a ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВСЕ 
        ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 9) КАК Сотни,
       (ВЫБРАТЬ 0 КАК a ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВСЕ 
        ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 9) КАК Тысячи
     ) КАК Подзапрос
ГДЕ
    Подзапрос.Дата МЕЖДУ &НачДата И &КонДата

УПОРЯДОЧИТЬ ПО
    Дата УБЫВ

 

См. также

Комментарии
1. Игорь Макаренко (Kashemir) 344 07.05.18 12:43 Сейчас в теме
Дмитрий, в данном типа запроса соединения и условия соединений в подзапросе вообще не нужны.
2. Дмитрий Залунин (dim_zal) 83 08.05.18 09:01 Сейчас в теме
Добрый день. Платформа 1С не позволяет сделать соединение без условий.
Прикрепленные файлы:
3. Игорь Макаренко (Kashemir) 344 08.05.18 10:45 Сейчас в теме
(2) А вам не надо указывать никаких соединений. В этом запросе все со всеми соединяются и так.
4. Игорь Макаренко (Kashemir) 344 08.05.18 10:52 Сейчас в теме
Пример
Прикрепленные файлы:
5. Дмитрий Залунин (dim_zal) 83 08.05.18 11:37 Сейчас в теме
(4)Согласен, запрос поправил. Спасибо.
6. Андрей Калякин (kalyaka) 244 08.05.18 23:57 Сейчас в теме
Описанное решение явлется иллюстрацией принципа порождающего запроса: https://infostart.ru/public/90367/
vanoono; boln; +2 Ответить
Оставьте свое сообщение