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

Способ генерации последовательности дат средствами языка запроса 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#k8SjZc9Dxkn, где 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) КАК Тысячи
) КАК Подзапрос
ГДЕ
Подзапрос.Дата МЕЖДУ &НачДата И &КонДата

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

 

6 Comments

  1. Kashemir

    Дмитрий, в данном типа запроса соединения и условия соединений в подзапросе вообще не нужны.

    Reply
  2. dim_zal

    Добрый день. Платформа 1С не позволяет сделать соединение без условий.

    Reply
  3. Kashemir

    (2) А вам не надо указывать никаких соединений. В этом запросе все со всеми соединяются и так.

    Reply
  4. Kashemir

    Пример

    Reply
  5. dim_zal

    (4)Согласен, запрос поправил. Спасибо.

    Reply
  6. kalyaka

    Описанное решение явлется иллюстрацией принципа порождающего запроса: https://infostart.ru/public/90367/

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *