Имя: Пароль:
1C
1С v8
Как в запросе выбрать все даты в нужном интервале?
,
0 Гаврилин Игор
 
07.06.16
17:06
Доброго, коллеги!
Чет я в тупике - мне нужна была в запросе виртуальная табличка с датами на каждый день в выбранном периоде. Что-то вроде:
01.01.2016 //&НачалоПериода
02.01.2016
...
30.04.2016
01.05.2016 //&ОкончаниеПериода

Пробовал через РАЗНОСТЬДАТ() и ДОБАВИТЬКДАТЕ(), не смог. В итоге тупо в цикле загнал даты в табличку, а табличку подсовывал в запрос в качестве параметра. Все получилось и работает, но все еще вопрос можно ли обойтись только запросом?
1 kennetmccormick
 
07.06.16
17:09
курсы валют, производственный календарь. если заполняются конечно
2 mikecool
 
07.06.16
17:12
скд с дополнением периода
выборка из запроса с дополнением периода
3 lodger
 
07.06.16
17:25
лови методом лома. это даже работает, на пустом месте(без регистров интервальных).

ВЫБРАТЬ 0 КАК Цифра
ПОМЕСТИТЬ Цифры
ОБЪЕДИНИТЬ ВЫБРАТЬ 1
ОБЪЕДИНИТЬ ВЫБРАТЬ 2
ОБЪЕДИНИТЬ ВЫБРАТЬ 3
ОБЪЕДИНИТЬ ВЫБРАТЬ 4
ОБЪЕДИНИТЬ ВЫБРАТЬ 5
ОБЪЕДИНИТЬ ВЫБРАТЬ 6
ОБЪЕДИНИТЬ ВЫБРАТЬ 7
ОБЪЕДИНИТЬ ВЫБРАТЬ 8
ОБЪЕДИНИТЬ ВЫБРАТЬ 9;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, СписокДней.Дней) КАК Период
ИЗ
    (ВЫБРАТЬ
        СотниТысяч.Цифра * 100000 + ДесяткиТысяч.Цифра * 10000 + Тысячи.Цифра * 1000 + Сотни.Цифра * 100 + Десятки.Цифра * 10 + Единицы.Цифра КАК Дней
    ИЗ
        Цифры КАК СотниТысяч
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Цифры КАК ДесяткиТысяч
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Цифры КАК Тысячи
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Цифры КАК Сотни
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Цифры КАК Десятки
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Цифры КАК Единицы
        ПО (Десятки.Цифра * 10 <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ))
            И (Единицы.Цифра <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ))
        ПО (Сотни.Цифра * 100 <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ))
        ПО (Тысячи.Цифра * 1000 <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ))
        ПО (ДесяткиТысяч.Цифра * 10000 <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ))
        ПО (СотниТысяч.Цифра * 100000 <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ))
    ГДЕ
        СотниТысяч.Цифра * 100000 + ДесяткиТысяч.Цифра * 10000 + Тысячи.Цифра * 1000 + Сотни.Цифра * 100 + Десятки.Цифра * 10 + Единицы.Цифра <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ)) КАК СписокДней

УПОРЯДОЧИТЬ ПО
    Период
4 Волшебник
 
модератор
07.06.16
17:26
(3) Ипануться...
5 lodger
 
07.06.16
17:27
(4) сам похудел. нашел у гугла в закромах )
кстати, 300+ строк рожает за 15 мс.
6 lodger
 
07.06.16
17:31
+(5) 40000+ строк формирует за 200+мс, но как только этот шаг запроса выполнен - начинается перемещение чудотаблицы, которое начинает есть время.
из (3) для бытовых нужд надо убрать все что больше Сотни.
7 Asmody
 
07.06.16
17:33
Не благодари http://catalog.mista.ru/public/90367/
8 Гаврилин Игор
 
07.06.16
17:48
Огромное спасибо всем! В который раз убеждаюсь что миста лучший ресурс по 1С, после самой 1С -))
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.