Имя: Пароль:
1C
1С v8
Группировка в запросе по неделям
,
0 Collector
 
20.12.11
13:29
Как в запросе сгруппировать данные регистра продаж по неделям?
Вот так он конечно группирует, но как-то не красиво тз выглядит потом - строка одна пустая с итогом(((

ВЫБРАТЬ
                  |    Продажи.ДоговорКонтрагента КАК Договор,
                  |    Продажи.Организация КАК Организация,
                  |    Продажи.Контрагент КАК Контрагент,
                  |    СУММА(Продажи.Стоимость) КАК СуммаПродаж,
                  |    Продажи.Период КАК Неделя
                  |ИЗ
                  |    РегистрНакопления.Продажи КАК Продажи
                  |ГДЕ
                  |    Продажи.Период МЕЖДУ &НачалоПериод И &КонецПериод
                  |    И ВЫБОР
                  |            КОГДА ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка) = &Организация
                  |                ТОГДА ИСТИНА
                  |            ИНАЧЕ Продажи.Организация = &Организация
                  |        КОНЕЦ
                  |    И ВЫБОР
                  |            КОГДА ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка) = &ДоговорКонтрагента
                  |                ТОГДА ИСТИНА
                  |            ИНАЧЕ Продажи.ДоговорКонтрагента = &ДоговорКонтрагента
                  |        КОНЕЦ
                  |    И Продажи.Контрагент В ИЕРАРХИИ(&Контрагент)
                  |
                  |СГРУППИРОВАТЬ ПО
                  |    Продажи.Контрагент,
                  |    Продажи.Организация,
                  |    Продажи.ДоговорКонтрагента,
                  |    Продажи.Период
                  |
                  |УПОРЯДОЧИТЬ ПО
                  |    Контрагент,
                  |    Договор
                  |ИТОГИ
                  |    СУММА(СуммаПродаж)
                  |ПО
                  |    Неделя ПЕРИОДАМИ(НЕДЕЛЯ, &НачалоПериод, &КонецПериод)

Заранее спасибо, Уважаемые!
1 rutony
 
20.12.11
13:33
(0) Можно еще НачалоПериода(Продажи.Период, НЕДЕЛЯ)
а потом по значению сгруппировать
2 Ненавижу 1С
 
гуру
20.12.11
13:34
а почему не виртуальная таблица?
3 Sandy_S
 
20.12.11
13:38
а так не проше?
ВЫБРАТЬ
   ПродажиОбороты.Период,
   ПродажиОбороты.Организация,
   ПродажиОбороты.Контрагент,
   ПродажиОбороты.СтоимостьОборот
ИЗ
   РегистрНакопления.Продажи.Обороты(, , Неделя, ) КАК ПродажиОбороты
4 Collector
 
20.12.11
14:17
(3) Так он все выводит((( или я что то не правильно опять делаю?

Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
                  |    ПродажиОбороты.ДоговорКонтрагента КАК Договор,
                  |    ПродажиОбороты.Организация КАК Организация,
                  |    ПродажиОбороты.Контрагент КАК Контрагент,
                  |    СУММА(ПродажиОбороты.СтоимостьОборот) КАК СтоимостьОборот,
                  |    ПродажиОбороты.ДокументПродажи
                  |ИЗ
                  |    РегистрНакопления.Продажи.Обороты(&НачалоПериод, &КонецПериод, Неделя, ) КАК ПродажиОбороты
                  |ГДЕ
                  |    ВЫБОР.....
5 Sandy_S
 
20.12.11
14:29
(4) а зачем тебе такой странный отбор? какие тебе нужны условия?
6 Collector
 
20.12.11
14:43
нужно чтобы в запросе давал по заданному периоду понедельный оборот с контрагентом.
все вроде разобрался. вот так получилось:

Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
                  |    ПродажиОбороты.ДоговорКонтрагента КАК Договор,
                  |    ПродажиОбороты.Организация КАК Организация,
                  |    ПродажиОбороты.Контрагент КАК Контрагент,
                  |    СУММА(ПродажиОбороты.СтоимостьОборот) КАК СтоимостьОборот,
                  |    ПродажиОбороты.Период КАК Период
                  |ИЗ
                  |    РегистрНакопления.Продажи.Обороты(, , Неделя, ) КАК ПродажиОбороты
                  |ГДЕ
                  |    ПродажиОбороты.Период МЕЖДУ &НачалоПериод И &КонецПериод
                  |    И ВЫБОР
                  |            КОГДА ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка) = &Организация
                  |                ТОГДА ИСТИНА
                  |            ИНАЧЕ ПродажиОбороты.Организация = &Организация
                  |        КОНЕЦ
                  |    И ВЫБОР
                  |            КОГДА ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка) = &ДоговорКонтрагента
                  |                ТОГДА ИСТИНА
                  |            ИНАЧЕ ПродажиОбороты.ДоговорКонтрагента = &ДоговорКонтрагента
                  |        КОНЕЦ
                  |    И ПродажиОбороты.Контрагент В ИЕРАРХИИ(&Контрагент)
                  |
                  |СГРУППИРОВАТЬ ПО
                  |    ПродажиОбороты.ДоговорКонтрагента,
                  |    ПродажиОбороты.Организация,
                  |    ПродажиОбороты.Контрагент,
                  |    ПродажиОбороты.Период
                  |
                  |УПОРЯДОЧИТЬ ПО
                  |    Контрагент,
                  |    Период,
                  |    Договор";

верно мыслю?
7 Sandy_S
 
20.12.11
14:49
Я этого не понимаю
 И ВЫБОР
                  |            КОГДА ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка) = &Организация
                  |                ТОГДА ИСТИНА
                  |            ИНАЧЕ ПродажиОбороты.Организация = &Организация
                  |        КОНЕЦ
                  |    И ВЫБОР
                  |            КОГДА ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка) = &ДоговорКонтрагента
                  |                ТОГДА ИСТИНА
                  |            ИНАЧЕ ПродажиОбороты.ДоговорКонтрагента = &ДоговорКонтрагента
                  |        КОНЕЦ
что ты этим ограничиваешь?
8 Sandy_S
 
20.12.11
14:51
и группировки тут не нужны
9 Sandy_S
 
20.12.11
14:56
ВЫБРАТЬ
   ПродажиОбороты.ДоговорКонтрагента КАК Договор,
   ПродажиОбороты.Организация КАК Организация,
   ПродажиОбороты.Контрагент КАК Контрагент,
   ПродажиОбороты.СтоимостьОборот КАК СтоимостьОборот,
   ПродажиОбороты.Период КАК Период
ИЗ
   РегистрНакопления.Продажи.Обороты(
           &НачалоПериода,
           &КонецПериода,
           Неделя,
           Контрагент В ИЕРАРХИИ (&Контрагент)
               И Организация = &Организация) КАК ПродажиОбороты
ГДЕ
   ВЫБОР
           КОГДА ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка) = &Организация
               ТОГДА ИСТИНА
           ИНАЧЕ ПродажиОбороты.Организация = &Организация
       КОНЕЦ

УПОРЯДОЧИТЬ ПО
   Контрагент,
   Период,
   Договор
10 Sandy_S
 
20.12.11
14:57
блин

ВЫБРАТЬ
   ПродажиОбороты.ДоговорКонтрагента КАК Договор,
   ПродажиОбороты.Организация КАК Организация,
   ПродажиОбороты.Контрагент КАК Контрагент,
   ПродажиОбороты.СтоимостьОборот КАК СтоимостьОборот,
   ПродажиОбороты.Период КАК Период
ИЗ
   РегистрНакопления.Продажи.Обороты(
           &НачалоПериода,
           &КонецПериода,
           Неделя,
           Контрагент В ИЕРАРХИИ (&Контрагент)
               И Организация = &Организация) КАК ПродажиОбороты

УПОРЯДОЧИТЬ ПО
   Контрагент,
   Период,
   Договор
11 Collector
 
20.12.11
15:08
(7) чтобы если не был задан параметр, нашел по всем. Но может и не стоит так делать ? а за (10) Спасибо большое! Буду в курсе!
12 Sandy_S
 
20.12.11
15:12
(11) так нельзя делать ты проверяешь если параметр пустая ссылка то истина, это бред.
13 Helg
 
20.12.11
15:15
Я делал так. ВНЕ запроса проверял выбран ли контрагент. И если выбран, то текст запроса будет
ИЗ
   РегистрНакопления.Продажи.Обороты(
           &НачалоПериода,
           &КонецПериода,
           Неделя,
           Контрагент В ИЕРАРХИИ (&Контрагент)
               И Организация = &Организация) КАК ПродажиОбороты
А если не выбран, то
ИЗ
   РегистрНакопления.Продажи.Обороты(
           &НачалоПериода,
           &КонецПериода,
           Неделя,
           ) КАК ПродажиОбороты

Может кто-то знает способ лучше?
14 Collector
 
20.12.11
15:18
(12) Работало ведь)))
15 Sandy_S
 
20.12.11
15:22
(14) Где ты этот запрос используешь?
16 Collector
 
20.12.11
15:22
в обработке
17 Sandy_S
 
20.12.11
15:26
(16) И у обработки есть отборы? Используй ПостроительЗапроса.
18 Sandy_S
 
20.12.11
15:27
(13)
РегистрНакопления.Продажи.Обороты(
           &НачалоПериода,
           &КонецПериода,
           Неделя,"
           +?(ЗначениеЗапонено(ОтборКонтагент),"Контрагент В ИЕРАРХИИ (&Контрагент)","")+"
               И Организация = &Организация) КАК ПродажиОбороты

Например  так
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший