Имя: Пароль:
1C
1С v8
Таблица периодов по неделям
0 r1000
 
01.03.15
14:59
Использую распространенный набор данных. Затем соединяю по параметру и вывожу данные периодами. Как сделать неделю ? РазностьДат() не может использовать НЕДЕЛЯ ?
ВЫБРАТЬ
    ВЫБОР
        КОГДА &Периодичность = ЗНАЧЕНИЕ(Перечисление.Периодичность.День)
            ТОГДА ДОБАВИТЬКДАТЕ(&Дата1, ДЕНЬ, aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d)
        ИНАЧЕ ВЫБОР
                КОГДА &Периодичность = ЗНАЧЕНИЕ(Перечисление.Периодичность.Неделя)
                    ТОГДА ДОБАВИТЬКДАТЕ(&Дата1, НЕДЕЛЯ, aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d)
                ИНАЧЕ ВЫБОР
                        КОГДА &Периодичность = ЗНАЧЕНИЕ(Перечисление.Периодичность.Декада)
                            ТОГДА ДОБАВИТЬКДАТЕ(&Дата1, ДЕКАДА, aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d)
                        ИНАЧЕ ВЫБОР
                                КОГДА &Периодичность = ЗНАЧЕНИЕ(Перечисление.Периодичность.Квартал)
                                    ТОГДА ДОБАВИТЬКДАТЕ(&Дата1, КВАРТАЛ, aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d)
                                ИНАЧЕ ВЫБОР
                                        КОГДА &Периодичность = ЗНАЧЕНИЕ(Перечисление.Периодичность.Год)
                                            ТОГДА ДОБАВИТЬКДАТЕ(&Дата1, ГОД, aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d)
                                        ИНАЧЕ ВЫБОР
                                                КОГДА &Периодичность = ЗНАЧЕНИЕ(Перечисление.Периодичность.Месяц)
                                                    ТОГДА ДОБАВИТЬКДАТЕ(&Дата1, МЕСЯЦ, aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d)
                                                ИНАЧЕ ВЫБОР
                                                        КОГДА &Периодичность = ЗНАЧЕНИЕ(Перечисление.Периодичность.Полугодие)
                                                            ТОГДА ДОБАВИТЬКДАТЕ(&Дата1, ПОЛУГОДИЕ, aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d)
                                                        ИНАЧЕ ДОБАВИТЬКДАТЕ(&Дата1, МЕСЯЦ, aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d)
                                                    КОНЕЦ
                                            КОНЕЦ
                                    КОНЕЦ
                            КОНЕЦ
                    КОНЕЦ
            КОНЕЦ
    КОНЕЦ КАК Период
{ВЫБРАТЬ
    Период}
ИЗ
    (ВЫБРАТЬ
        0 КАК a
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        1
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        2
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        3
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        4
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        5
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        6
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        7
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        8
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        9) КАК aa
        ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            0 КАК b
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            1
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            2
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            3
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            4
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            5
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            6
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            7
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            8
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            9) КАК bb
        ПО (ИСТИНА)
        ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            0 КАК c
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            1
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            2
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            3
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            4
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            5
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            6
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            7
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            8
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            9) КАК cc
        ПО (ИСТИНА)
        ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            0 КАК d
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            1
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            2
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            3
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            4
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            5
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            6
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            7
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            8
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            9) КАК dd
        ПО (ИСТИНА)
ГДЕ
    aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d <= ВЫБОР
            КОГДА &Периодичность = ЗНАЧЕНИЕ(Перечисление.Периодичность.День)
                ТОГДА РАЗНОСТЬДАТ(&Дата1, &Дата2, ДЕНЬ)
            ИНАЧЕ ВЫБОР
                    КОГДА &Периодичность = ЗНАЧЕНИЕ(Перечисление.Периодичность.Месяц)
                        ТОГДА РАЗНОСТЬДАТ(&Дата1, &Дата2, МЕСЯЦ)
                    ИНАЧЕ ВЫБОР
                            КОГДА &Периодичность = ЗНАЧЕНИЕ(Перечисление.Периодичность.Квартал)
                                ТОГДА РАЗНОСТЬДАТ(&Дата1, &Дата2, КВАРТАЛ)
                            ИНАЧЕ ВЫБОР
                                    КОГДА &Периодичность = ЗНАЧЕНИЕ(Перечисление.Периодичность.Год)
                                        ТОГДА РАЗНОСТЬДАТ(&Дата1, &Дата2, ГОД)
                                КОНЕЦ
                        КОНЕЦ
                КОНЕЦ
        КОНЕЦ
1 Wobland
 
01.03.15
15:26
ять.. а как выглядит желаемый результат?
2 r1000
 
01.03.15
15:32
Например, продажи номенклатуры по неделям.
3 Euroset1
 
01.03.15
15:47
создай таблицу соответствий интервалов дат периодам, программно процедурой. И джойни свои исходные данные с этой ВТ.

Например Периодичность, дата1, дата2, Представление - вот эти колонки сформируй в таблице программно. А в запросе будетшь делать соединение по условию &Периодичность = ВТ.Периодичность и дата между дата1 и дата2, берешь поле представление. По нему группируешь, вот тебе и счастье. И кстати работать должно быстрее
4 yavasya
 
01.03.15
19:15
(4) регламентированный производствеенный календарь может поможет?