Имя: Пароль:
1C
1С v8
Получить даты из заданного интервала
0 eldvong1941
 
19.12.13
13:49
Здравствуйте. Появился следующий вопрос: Как получить все даты из заданного интервала с помощью запроса, не используя при этом Регламентированный производственный календарь? Возможно ли это?
1 Wobland
 
19.12.13
13:52
да
2 Wobland
 
19.12.13
13:52
циклом
3 МихаилМ
 
19.12.13
14:00
4 KishMish
 
19.12.13
14:03
генерация последовательности дат от Дата1 до Дата2. Решается аналогично, можно как выполнить в 3 шага (первый и второй как в приведённом примере, но результат не выбрать а поместить во временную таблицу) или в 2 шага изменив второй запрос пакета на вот такой:

ВЫБРАТЬ  ДОБАВИТЬКДАТЕ(&Дата1, ДЕНЬ, (Цифры.Цифра-1) + (Цифры1.Цифра -1)*10+ (Цифры2.Цифра -1)*100) КАК Дата

ИЗ  Цифры КАК Цифры,   Цифры КАК Цифры1,   Цифры КАК Цифры2

ГДЕ   ДОБАВИТЬКДАТЕ(&Дата1, ДЕНЬ, (Цифры.Цифра-1) + (Цифры1.Цифра -1)*10+ (Цифры2.Цифра -1)*100)

УПОРЯДОЧИТЬ ПО  Дата
5 KishMish
 
19.12.13
14:04
+(4) описание таблицы Цифры
ВЫБРАТЬ Цифры.Поле1 КАК Цифра

ПОМЕСТИТЬ Цифры

ИЗ  (ВЫБРАТЬ 1 КАК Поле1

ОБЪЕДИНИТЬ  ВЫБРАТЬ 2

ОБЪЕДИНИТЬ  ВЫБРАТЬ 3  

ОБЪЕДИНИТЬ  ВЫБРАТЬ 4

ОБЪЕДИНИТЬ  ВЫБРАТЬ 5

ОБЪЕДИНИТЬ  ВЫБРАТЬ 6

ОБЪЕДИНИТЬ  ВЫБРАТЬ 7

ОБЪЕДИНИТЬ  ВЫБРАТЬ 8

ОБЪЕДИНИТЬ  ВЫБРАТЬ 9

ОБЪЕДИНИТЬ  ВЫБРАТЬ 10) КАК Цифры

;
6 eldvong1941
 
19.12.13
14:23
Спасибо, щас в запросе прогоню...
7 eldvong1941
 
19.12.13
14:57
ВЫБРАТЬ
    Даты.Дата КАК Месяц
ИЗ
    (ВЫБРАТЬ
        ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&НачалоПериода, МЕСЯЦ), МЕСЯЦ, t.n) КАК Дата
    ИЗ
        (ВЫБРАТЬ
            6 * (t1.a - 1) + t2.b - 1 КАК n
        ИЗ
            (ВЫБРАТЬ
                1 КАК a
            
            ОБЪЕДИНИТЬ
            
            ВЫБРАТЬ
                2
            
            ОБЪЕДИНИТЬ
            
            ВЫБРАТЬ
                3
            
            ОБЪЕДИНИТЬ
            
            ВЫБРАТЬ
                4
            
            ОБЪЕДИНИТЬ
            
            ВЫБРАТЬ
                5
            
            ОБЪЕДИНИТЬ
            
            ВЫБРАТЬ
                6) КАК t1
                ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                    1 КАК b
                
                ОБЪЕДИНИТЬ
                
                ВЫБРАТЬ
                    2
                
                ОБЪЕДИНИТЬ
                
                ВЫБРАТЬ
                    3
                
                ОБЪЕДИНИТЬ
                
                ВЫБРАТЬ
                    4
                
                ОБЪЕДИНИТЬ
                
                ВЫБРАТЬ
                    5
                
                ОБЪЕДИНИТЬ
                
                ВЫБРАТЬ
                    6) КАК t2
                ПО (ИСТИНА)) КАК t
    ГДЕ
        t.n <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, МЕСЯЦ)) КАК Даты

СГРУППИРОВАТЬ ПО
    Даты.Дата
8 eldvong1941
 
19.12.13
15:04
Получил список первых дат месяцев в заданном периоде.
Только не пойму почему: 6 * (t1.a - 1) + t2.b - 1, можно же и другое выражение?
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.