Имя: Пароль:
1C
 
Отбор в запросе через построитель
,
0 kalisto
 
02.12.16
11:02
Добрый день, всем.
Не могу понять в чем проблема. Есть отчет, который использует построитель и универсальный отчет. Есть большой запрос, в нем есть виртуальные таблицы, где прописан отбор по полям. Эти поля явно в регистре ПродажиСебестоимость не содержаться. По ним и надо отбор делать, но он не работает. Дальше эта таблица используется в общем запросе. Может отбор по таким полям сделать нельзя? Кусок текста с таблицей по продажам.  Очень жду помощи.
|ВЫБРАТЬ
    |    ПродажиСебестоимостьОбороты.Номенклатура КАК Номенклатура,
    |    ВЫБОР
    |        КОГДА ПродажиСебестоимостьОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
    |            ТОГДА ПродажиСебестоимостьОбороты.Регистратор.Склад
    |        ИНАЧЕ ВЫБОР
    |                КОГДА ПродажиСебестоимостьОбороты.Регистратор ССЫЛКА Документ.ВозвратТоваровОтПокупателя
    |                    ТОГДА ПродажиСебестоимостьОбороты.Регистратор.СкладОрдер
    |                ИНАЧЕ ВЫБОР
    |                        КОГДА ПродажиСебестоимостьОбороты.Регистратор ССЫЛКА Документ.КорректировкаРеализации
    |                            ТОГДА ПродажиСебестоимостьОбороты.Регистратор.Склад
    |                    КОНЕЦ
    |            КОНЕЦ
    |    КОНЕЦ КАК СкладПродаж,
    |    ВЫБОР
    |        КОГДА ПродажиСебестоимостьОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
    |            ТОГДА ПродажиСебестоимостьОбороты.Регистратор.Контрагент
    |        ИНАЧЕ ВЫБОР
    |                КОГДА ПродажиСебестоимостьОбороты.Регистратор ССЫЛКА Документ.КорректировкаРеализации
    |                    ТОГДА ПродажиСебестоимостьОбороты.Регистратор.Контрагент
    |            КОНЕЦ
    |    КОНЕЦ КАК Контрагент,
    |    ПродажиСебестоимостьОбороты.Регистратор КАК Регистратор,
    |    ПродажиСебестоимостьОбороты.КоличествоОборот КАК КоличествоОборот,
    |    ПродажиСебестоимостьОбороты.СтоимостьОборот КАК СтоимостьОборот,
    |    НАЧАЛОПЕРИОДА(ПродажиСебестоимостьОбороты.Период, ДЕНЬ) КАК ПериодДень,
    |    НАЧАЛОПЕРИОДА(ПродажиСебестоимостьОбороты.Период, НЕДЕЛЯ) КАК ПериодНеделя,
    |    НАЧАЛОПЕРИОДА(ПродажиСебестоимостьОбороты.Период, ДЕКАДА) КАК ПериодДекада,
    |    ВЫБОР
    |        КОГДА &Интервал > 0
    |            ТОГДА ВЫБОР
    |                    КОГДА (ВЫРАЗИТЬ(РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&НачальнаяДата, ДЕНЬ), НАЧАЛОПЕРИОДА(ПродажиСебестоимостьОбороты.Период, ДЕНЬ), ДЕНЬ) КАК ЧИСЛО(5, 0))) / &Интервал < 1
    |                        ТОГДА НАЧАЛОПЕРИОДА(&ДатаНачала, ДЕНЬ)
    |                    ИНАЧЕ ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&НачальнаяДата, ДЕНЬ), ДЕНЬ, &Интервал * (ВЫРАЗИТЬ((ВЫРАЗИТЬ(РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&НачальнаяДата, ДЕНЬ), КОНЕЦПЕРИОДА(ПродажиСебестоимостьОбороты.Период, ДЕНЬ), ДЕНЬ) КАК ЧИСЛО(5, 0))) / &Интервал - 0.5 КАК ЧИСЛО(2, 0))))
    |                КОНЕЦ
    |        ИНАЧЕ ПродажиСебестоимостьОбороты.Период
    |    КОНЕЦ КАК Период,
    |    НАЧАЛОПЕРИОДА(ПродажиСебестоимостьОбороты.Период, МЕСЯЦ) КАК ПериодМесяц,
    |    НАЧАЛОПЕРИОДА(ПродажиСебестоимостьОбороты.Период, КВАРТАЛ) КАК ПериодКвартал,
    |    НАЧАЛОПЕРИОДА(ПродажиСебестоимостьОбороты.Период, ПОЛУГОДИЕ) КАК ПериодПолугодие,
    |    НАЧАЛОПЕРИОДА(ПродажиСебестоимостьОбороты.Период, ГОД) КАК ПериодГод
    |ПОМЕСТИТЬ ТаблПродажи
    |{ВЫБРАТЬ
    |    Номенклатура.*,
    |    СкладПродаж.*,
    |    Контрагент.*,
    |    Регистратор,
    |    КоличествоОборот,
    |    СтоимостьОборот}
    |ИЗ
    |    РегистрНакопления.ПродажиСебестоимость.Обороты(&ДатаНач, &ДатаКон, Регистратор {(&Периодичность)}, {(Номенклатура).* КАК Номенклатура}) КАК ПродажиСебестоимостьОбороты
    |{ГДЕ
    |    ПродажиСебестоимостьОбороты.Номенклатура.*,
    |    (ВЫБОР
    |            КОГДА ПродажиСебестоимостьОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
    |                ТОГДА ПродажиСебестоимостьОбороты.Регистратор.Склад
    |            ИНАЧЕ ВЫБОР
    |                    КОГДА ПродажиСебестоимостьОбороты.Регистратор ССЫЛКА Документ.ВозвратТоваровОтПокупателя
    |                        ТОГДА ПродажиСебестоимостьОбороты.Регистратор.СкладОрдер
    |                    ИНАЧЕ ВЫБОР
    |                            КОГДА ПродажиСебестоимостьОбороты.Регистратор ССЫЛКА Документ.КорректировкаРеализации
    |                                ТОГДА ПродажиСебестоимостьОбороты.Регистратор.Склад
    |                        КОНЕЦ
    |                КОНЕЦ
    |        КОНЕЦ).* КАК СкладПродаж,
    |    (ВЫБОР
    |            КОГДА ПродажиСебестоимостьОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
    |                ТОГДА ПродажиСебестоимостьОбороты.Регистратор.Контрагент
    |            ИНАЧЕ ВЫБОР
    |                    КОГДА ПродажиСебестоимостьОбороты.Регистратор ССЫЛКА Документ.КорректировкаРеализации
    |                        ТОГДА ПродажиСебестоимостьОбороты.Регистратор.Контрагент
    |                КОНЕЦ
    |        КОНЕЦ).* КАК Контрагент,
    |    ПродажиСебестоимостьОбороты.Регистратор,
    |    ПродажиСебестоимостьОбороты.КоличествоОборот,
    |    ПродажиСебестоимостьОбороты.СтоимостьОборот,
    |    (НАЧАЛОПЕРИОДА(ПродажиСебестоимостьОбороты.Период, ДЕНЬ)) КАК ПериодДень,
    |    (НАЧАЛОПЕРИОДА(ПродажиСебестоимостьОбороты.Период, НЕДЕЛЯ)) КАК ПериодНеделя,
    |    (НАЧАЛОПЕРИОДА(ПродажиСебестоимостьОбороты.Период, ДЕКАДА)) КАК ПериодДекада,
    |    (НАЧАЛОПЕРИОДА(ПродажиСебестоимостьОбороты.Период, МЕСЯЦ)) КАК ПериодМесяц,
    |    (ВЫБОР
    |            КОГДА &Интервал > 0
    |                ТОГДА ВЫБОР
    |                        КОГДА (ВЫРАЗИТЬ(РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&НачальнаяДата, ДЕНЬ), НАЧАЛОПЕРИОДА(ПродажиСебестоимостьОбороты.Период, ДЕНЬ), ДЕНЬ) КАК ЧИСЛО(5, 0))) / &Интервал < 1
    |                            ТОГДА НАЧАЛОПЕРИОДА(&ДатаНачала, ДЕНЬ)
    |                        ИНАЧЕ ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&НачальнаяДата, ДЕНЬ), ДЕНЬ, &Интервал * (ВЫРАЗИТЬ((ВЫРАЗИТЬ(РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&НачальнаяДата, ДЕНЬ), КОНЕЦПЕРИОДА(ПродажиСебестоимостьОбороты.Период, ДЕНЬ), ДЕНЬ) КАК ЧИСЛО(2, 0))) / &Интервал - 0.5 КАК ЧИСЛО(2, 0))))
    |                    КОНЕЦ
    |            ИНАЧЕ ПродажиСебестоимостьОбороты.Период
    |        КОНЕЦ) КАК Период,
    |    (НАЧАЛОПЕРИОДА(ПродажиСебестоимостьОбороты.Период, КВАРТАЛ)) КАК ПериодКвартал,
    |    (НАЧАЛОПЕРИОДА(ПродажиСебестоимостьОбороты.Период, ПОЛУГОДИЕ)) КАК ПериодПолугодие,
    |    (НАЧАЛОПЕРИОДА(ПродажиСебестоимостьОбороты.Период, ГОД)) КАК ПериодГод}
    |;
1 kalisto
 
02.12.16
12:13
Люди добрые, очень нужна помощь.
2 aleks_default
 
02.12.16
12:31
ЯННП
3 Ёпрст
 
02.12.16
12:37
(2) А че не понятного ?
4 Ёпрст
 
02.12.16
12:38
(0) как узнал, что твой отбор не работает ?
5 Ёпрст
 
02.12.16
12:38
ты его хоть в настройках отчета выбрал 7
6 Ёпрст
 
02.12.16
12:38
?
7 craxx
 
02.12.16
12:40
(0) используй СКД.. вообще построитель выкинул лет так 7 назад
8 kalisto
 
02.12.16
12:52
(4)Выбирала разных контрагентов, цифры по продажам не меняются.
9 kalisto
 
02.12.16
12:53
(7) СКД не могу. Пользователь хочет стандартный вид отчета, как в УТ.
10 Ёпрст
 
02.12.16
13:02
(8) дык case неверно написан
11 Ёпрст
 
02.12.16
13:03
у тебя же не только 2 вида документа в регистраторе
12 Ёпрст
 
02.12.16
13:03
нет ветки Иначе
13 kalisto
 
02.12.16
13:11
В регистре кроме реализаций никаких других видов документов больше нет.
14 kalisto
 
02.12.16
13:11
Менеджеры даже документом Возврат товаров не пользуются.
15 craxx
 
02.12.16
13:12
(14) это не важно что не пользуются... предусмотрено- надо описать. плюс еще значение Неопределено
16 kalisto
 
02.12.16
13:16
(15)Это из-за этого отбор не работает? Или все-таки должен работать даже в таком варианте?
17 Ёпрст
 
02.12.16
13:18
(16) выведи группировку по клиентосу, кажет ?
18 Ёпрст
 
02.12.16
13:18
хз, че у тебя там дальше за запрос и как ты то, что в (0) вообще используешь
19 kalisto
 
02.12.16
13:19
Мне в итогах контрагент не нужен (не будет по нему группировки). Дальше в запросе таблица сворачивается по номенклатуре и периодам. Т.е. в части ИТОГО ПО поле Контрагент не прописано. Это влияет на отбор?
20 Ёпрст
 
02.12.16
13:21
(19) телепаты в отпуске. Без полного текста запроса, всёё это - гадание на кофейной гуще
21 kalisto
 
02.12.16
13:22
Сейчас выложу запрос.
22 kalisto
 
02.12.16
13:31
ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ИсточникДанных.Номенклатура КАК Номенклатура,
    ПРЕДСТАВЛЕНИЕ(ИсточникДанных.Номенклатура),
    ИсточникДанных.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток,
    ИсточникДанных.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток,
    ИсточникДанных.СтоимостьНачальныйОстаток КАК СтоимостьНачальныйОстаток,
    ИсточникДанных.СтоимостьКонечныйОстаток КАК СтоимостьКонечныйОстаток,
    ВложОбщиеОстатки.КоличествоНачальныйОстаток КАК ОбщееКоличествоНачальныйОстаток,
    ВложОбщиеОстатки.СтоимостьНачальныйОстаток КАК ОбщееСтоимостьНачальныйОстаток,
    ВложОбщиеОстатки.КоличествоКонечныйОстаток КАК ОбщееКоличествоКонечныйОстаток,
    ВложОбщиеОстатки.СтоимостьКонечныйОстаток КАК ОбщееСтоимостьКонечныйОстаток,
    ВложПродажи.КоличествоОборот КАК КоличествоОборот,
    ВложПродажи.СтоимостьОборот КАК СтоимостьОборот,
    ВложЦены.ЦенаПоТипу КАК ЦенаПоТипу,
    ВЫБОР
        КОГДА ИсточникДанных.КоличествоКонечныйОстаток <= 0
            ТОГДА 0
        ИНАЧЕ ИсточникДанных.СтоимостьКонечныйОстаток / ИсточникДанных.КоличествоКонечныйОстаток
    КОНЕЦ КАК ЦенаЗаРулон,
    ВЫБОР
        КОГДА ИсточникДанных.СтоимостьКонечныйОстаток > 0
                И ИсточникДанных.КоличествоКонечныйОстаток > 0
                И ВложПродажи.КоличествоОборот > 0
            ТОГДА ИсточникДанных.КоличествоКонечныйОстаток / ВложПродажи.КоличествоОборот
        КОГДА ИсточникДанных.СтоимостьКонечныйОстаток > 0
                И ИсточникДанных.КоличествоКонечныйОстаток > 0
            ТОГДА 10000
        ИНАЧЕ 0
    КОНЕЦ КАК КО,
    ВЫБОР
        КОГДА ИсточникДанных.СтоимостьКонечныйОстаток > 0
                И ИсточникДанных.КоличествоКонечныйОстаток > 0
                И ВложПродажи.СтоимостьОборот > 0
            ТОГДА ИсточникДанных.СтоимостьКонечныйОстаток / ВложПродажи.СтоимостьОборот
        КОГДА ИсточникДанных.СтоимостьКонечныйОстаток > 0
                И ИсточникДанных.КоличествоКонечныйОстаток > 0
            ТОГДА 10000
        ИНАЧЕ 0
    КОНЕЦ КАК КОсумма,
    ВЫБОР
        КОГДА ВложПродажи.КоличествоОборот > 0
            ТОГДА ВложПродажи.КоличествоОборот
        ИНАЧЕ 0
    КОНЕЦ КАК КоличествоОборотСреднее,
    ВЫБОР
        КОГДА ВложПродажи.СтоимостьОборот > 0
            ТОГДА ВложПродажи.СтоимостьОборот
        ИНАЧЕ 0
    КОНЕЦ КАК СтоимостьОборотСреднее,
    ИсточникДанных.ПериодДень КАК ПериодДень,
    ИсточникДанных.ПериодНеделя КАК ПериодНеделя,
    ИсточникДанных.ПериодДекада КАК ПериодДекада,
    ИсточникДанных.Период КАК Период,
    ИсточникДанных.ПериодМесяц КАК ПериодМесяц,
    ИсточникДанных.ПериодКвартал КАК ПериодКвартал,
    ИсточникДанных.ПериодПолугодие КАК ПериодПолугодие,
    ИсточникДанных.ПериодГод КАК ПериодГод
{ВЫБРАТЬ
    Номенклатура.*,
    КоличествоНачальныйОстаток,
    КоличествоКонечныйОстаток,
    СтоимостьНачальныйОстаток,
    СтоимостьКонечныйОстаток,
    КоличествоОборот,
    СтоимостьОборот,
    ОбщееКоличествоКонечныйОстаток,
    ОбщееСтоимостьКонечныйОстаток,
    ОбщееКоличествоНачальныйОстаток,
    ОбщееСтоимостьНачальныйОстаток,
    ЦенаЗаРулон,
    ЦенаПоТипу,
    КО,
    КОсумма,
    КоличествоОборотСреднее,
    СтоимостьОборотСреднее,
    Период,
    ПериодДень,
    ПериодНеделя,
    ПериодДекада,
    ПериодМесяц,
    ПериодКвартал,
    ПериодПолугодие,
    ПериодГод}
ИЗ
    ТаблОстатков КАК ИсточникДанных
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            Продажи.Номенклатура КАК Номенклатура,
            НАЧАЛОПЕРИОДА(Продажи.Период, ДЕНЬ) КАК ПериодДень,
            НАЧАЛОПЕРИОДА(Продажи.Период, НЕДЕЛЯ) КАК ПериодНеделя,
            НАЧАЛОПЕРИОДА(Продажи.Период, ДЕКАДА) КАК ПериодДекада,
            НАЧАЛОПЕРИОДА(Продажи.Период, МЕСЯЦ) КАК ПериодМесяц,
            ВЫБОР
                КОГДА &Интервал > 0
                    ТОГДА ВЫБОР
                            КОГДА (ВЫРАЗИТЬ(РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&НачальнаяДата, ДЕНЬ), НАЧАЛОПЕРИОДА(Продажи.Период, ДЕНЬ), ДЕНЬ) КАК ЧИСЛО(5, 0))) / &Интервал < 1
                                ТОГДА НАЧАЛОПЕРИОДА(&ДатаНачала, ДЕНЬ)
                            ИНАЧЕ ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&НачальнаяДата, ДЕНЬ), ДЕНЬ, &Интервал * (ВЫРАЗИТЬ((ВЫРАЗИТЬ(РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&НачальнаяДата, ДЕНЬ), КОНЕЦПЕРИОДА(Продажи.Период, ДЕНЬ), ДЕНЬ) КАК ЧИСЛО(2, 0))) / &Интервал - 0.5 КАК ЧИСЛО(2, 0))))
                        КОНЕЦ
                ИНАЧЕ Продажи.Период
            КОНЕЦ КАК Период,
            НАЧАЛОПЕРИОДА(Продажи.Период, КВАРТАЛ) КАК ПериодКвартал,
            НАЧАЛОПЕРИОДА(Продажи.Период, ПОЛУГОДИЕ) КАК ПериодПолугодие,
            НАЧАЛОПЕРИОДА(Продажи.Период, ГОД) КАК ПериодГод,
            СУММА(Продажи.КоличествоОборот) КАК КоличествоОборот,
            СУММА(Продажи.СтоимостьОборот) КАК СтоимостьОборот
        {ВЫБРАТЬ
            Номенклатура.*,
            Период,
            ПериодДень,
            ПериодНеделя,
            ПериодДекада,
            ПериодМесяц,
            ПериодКвартал,
            ПериодПолугодие,
            ПериодГод,
            КоличествоОборот,
            СтоимостьОборот}
        ИЗ
            (ВЫБРАТЬ
                ПродажиСебестоимостьОбороты.Номенклатура КАК Номенклатура,
                ПродажиСебестоимостьОбороты.СкладПродаж КАК СкладПродаж,
                ПродажиСебестоимостьОбороты.Контрагент КАК Контрагент,
                ПродажиСебестоимостьОбороты.КоличествоОборот КАК КоличествоОборот,
                ПродажиСебестоимостьОбороты.СтоимостьОборот КАК СтоимостьОборот,
                НАЧАЛОПЕРИОДА(ПродажиСебестоимостьОбороты.Период, ДЕНЬ) КАК ПериодДень,
                НАЧАЛОПЕРИОДА(ПродажиСебестоимостьОбороты.Период, НЕДЕЛЯ) КАК ПериодНеделя,
                НАЧАЛОПЕРИОДА(ПродажиСебестоимостьОбороты.Период, ДЕКАДА) КАК ПериодДекада,
                ВЫБОР
                    КОГДА &Интервал > 0
                        ТОГДА ВЫБОР
                                КОГДА (ВЫРАЗИТЬ(РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&НачальнаяДата, ДЕНЬ), НАЧАЛОПЕРИОДА(ПродажиСебестоимостьОбороты.Период, ДЕНЬ), ДЕНЬ) КАК ЧИСЛО(5, 0))) / &Интервал < 1
                                    ТОГДА НАЧАЛОПЕРИОДА(&ДатаНачала, ДЕНЬ)
                                ИНАЧЕ ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&НачальнаяДата, ДЕНЬ), ДЕНЬ, &Интервал * (ВЫРАЗИТЬ((ВЫРАЗИТЬ(РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&НачальнаяДата, ДЕНЬ), КОНЕЦПЕРИОДА(ПродажиСебестоимостьОбороты.Период, ДЕНЬ), ДЕНЬ) КАК ЧИСЛО(5, 0))) / &Интервал - 0.5 КАК ЧИСЛО(2, 0))))
                            КОНЕЦ
                    ИНАЧЕ ПродажиСебестоимостьОбороты.Период
                КОНЕЦ КАК Период,
                НАЧАЛОПЕРИОДА(ПродажиСебестоимостьОбороты.Период, МЕСЯЦ) КАК ПериодМесяц,
                НАЧАЛОПЕРИОДА(ПродажиСебестоимостьОбороты.Период, КВАРТАЛ) КАК ПериодКвартал,
                НАЧАЛОПЕРИОДА(ПродажиСебестоимостьОбороты.Период, ПОЛУГОДИЕ) КАК ПериодПолугодие,
                НАЧАЛОПЕРИОДА(ПродажиСебестоимостьОбороты.Период, ГОД) КАК ПериодГод
            ИЗ
                ТаблПродажи КАК ПродажиСебестоимостьОбороты
            {ГДЕ
                ПродажиСебестоимостьОбороты.Номенклатура КАК Номенклатура,
                ПродажиСебестоимостьОбороты.СкладПродаж КАК СкладПродаж,
                ПродажиСебестоимостьОбороты.Контрагент КАК Контрагент,
                ПродажиСебестоимостьОбороты.КоличествоОборот КАК КоличествоОборот,
                ПродажиСебестоимостьОбороты.СтоимостьОборот КАК СтоимостьОборот,
                (НАЧАЛОПЕРИОДА(ПродажиСебестоимостьОбороты.Период, ДЕНЬ)) КАК ПериодДень,
                (НАЧАЛОПЕРИОДА(ПродажиСебестоимостьОбороты.Период, НЕДЕЛЯ)) КАК ПериодНеделя,
                (НАЧАЛОПЕРИОДА(ПродажиСебестоимостьОбороты.Период, ДЕКАДА)) КАК ПериодДекада,
                (ВЫБОР
                        КОГДА &Интервал > 0
                            ТОГДА ВЫБОР
                                    КОГДА (ВЫРАЗИТЬ(РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&НачальнаяДата, ДЕНЬ), НАЧАЛОПЕРИОДА(ПродажиСебестоимостьОбороты.Период, ДЕНЬ), ДЕНЬ) КАК ЧИСЛО(5, 0))) / &Интервал < 1
                                        ТОГДА НАЧАЛОПЕРИОДА(&ДатаНачала, ДЕНЬ)
                                    ИНАЧЕ ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&НачальнаяДата, ДЕНЬ), ДЕНЬ, &Интервал * (ВЫРАЗИТЬ((ВЫРАЗИТЬ(РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&НачальнаяДата, ДЕНЬ), КОНЕЦПЕРИОДА(ПродажиСебестоимостьОбороты.Период, ДЕНЬ), ДЕНЬ) КАК ЧИСЛО(5, 0))) / &Интервал - 0.5 КАК ЧИСЛО(2, 0))))
                                КОНЕЦ
                        ИНАЧЕ ПродажиСебестоимостьОбороты.Период
                    КОНЕЦ) КАК Период,
                (НАЧАЛОПЕРИОДА(ПродажиСебестоимостьОбороты.Период, МЕСЯЦ)) КАК ПериодМесяц,
                (НАЧАЛОПЕРИОДА(ПродажиСебестоимостьОбороты.Период, КВАРТАЛ)) КАК ПериодКвартал,
                (НАЧАЛОПЕРИОДА(ПродажиСебестоимостьОбороты.Период, ПОЛУГОДИЕ)) КАК ПериодПолугодие,
                (НАЧАЛОПЕРИОДА(ПродажиСебестоимостьОбороты.Период, ГОД)) КАК ПериодГод}) КАК Продажи
        {ГДЕ
            Продажи.Номенклатура.*,
            Продажи.СкладПродаж.*,
            Продажи.Контрагент.*}
        
        СГРУППИРОВАТЬ ПО
            Продажи.Номенклатура,
            НАЧАЛОПЕРИОДА(Продажи.Период, ДЕНЬ),
            НАЧАЛОПЕРИОДА(Продажи.Период, НЕДЕЛЯ),
            НАЧАЛОПЕРИОДА(Продажи.Период, ДЕКАДА),
            НАЧАЛОПЕРИОДА(Продажи.Период, МЕСЯЦ),
            ВЫБОР
                КОГДА &Интервал > 0
                    ТОГДА ВЫБОР
                            КОГДА (ВЫРАЗИТЬ(РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&НачальнаяДата, ДЕНЬ), НАЧАЛОПЕРИОДА(Продажи.Период, ДЕНЬ), ДЕНЬ) КАК ЧИСЛО(5, 0))) / &Интервал < 1
                                ТОГДА НАЧАЛОПЕРИОДА(&ДатаНачала, ДЕНЬ)
                            ИНАЧЕ ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&НачальнаяДата, ДЕНЬ), ДЕНЬ, &Интервал * (ВЫРАЗИТЬ((ВЫРАЗИТЬ(РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&НачальнаяДата, ДЕНЬ), КОНЕЦПЕРИОДА(Продажи.Период, ДЕНЬ), ДЕНЬ) КАК ЧИСЛО(2, 0))) / &Интервал - 0.5 КАК ЧИСЛО(2, 0))))
                        КОНЕЦ
                ИНАЧЕ Продажи.Период
            КОНЕЦ,
            НАЧАЛОПЕРИОДА(Продажи.Период, КВАРТАЛ),
            НАЧАЛОПЕРИОДА(Продажи.Период, ПОЛУГОДИЕ),
            НАЧАЛОПЕРИОДА(Продажи.Период, ГОД)) КАК ВложПродажи
        ПО ИсточникДанных.Номенклатура = ВложПродажи.Номенклатура
            И ИсточникДанных.Период = ВложПродажи.Период
            И (НАЧАЛОПЕРИОДА(ИсточникДанных.Период, ДЕНЬ) = ВложПродажи.ПериодДень)
            И (НАЧАЛОПЕРИОДА(ИсточникДанных.Период, НЕДЕЛЯ) = ВложПродажи.ПериодНеделя)
            И (НАЧАЛОПЕРИОДА(ИсточникДанных.Период, ДЕКАДА) = ВложПродажи.ПериодДекада)
            И (НАЧАЛОПЕРИОДА(ИсточникДанных.Период, МЕСЯЦ) = ВложПродажи.ПериодМесяц)
            И (НАЧАЛОПЕРИОДА(ИсточникДанных.Период, КВАРТАЛ) = ВложПродажи.ПериодКвартал)
            И (НАЧАЛОПЕРИОДА(ИсточникДанных.Период, ПОЛУГОДИЕ) = ВложПродажи.ПериодПолугодие)
            И (НАЧАЛОПЕРИОДА(ИсточникДанных.Период, ГОД) = ВложПродажи.ПериодГод)
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
            ЦеныНоменклатурыСрезПоследних.ТипЦен КАК ТипЦен,
            ЦеныНоменклатурыСрезПоследних.Цена КАК ЦенаПоТипу
        {ВЫБРАТЬ
            Номенклатура.*,
            ТипЦен.*,
            ЦенаПоТипу}
        ИЗ
            РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаКон, ) КАК ЦеныНоменклатурыСрезПоследних
        {ГДЕ
            ЦеныНоменклатурыСрезПоследних.Номенклатура.* КАК Номенклатура,
            ЦеныНоменклатурыСрезПоследних.ТипЦен.* КАК ТипЦен,
            ЦеныНоменклатурыСрезПоследних.Цена КАК ЦенаПоТипу}
        
        СГРУППИРОВАТЬ ПО
            ЦеныНоменклатурыСрезПоследних.Номенклатура,
            ЦеныНоменклатурыСрезПоследних.ТипЦен,
            ЦеныНоменклатурыСрезПоследних.Цена) КАК ВложЦены
        ПО ИсточникДанных.Номенклатура = ВложЦены.Номенклатура
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ТаблОстатковОбщие.Номенклатура КАК Номенклатура,
            ТаблОстатковОбщие.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток,
            ТаблОстатковОбщие.СтоимостьКонечныйОстаток КАК СтоимостьКонечныйОстаток,
            ТаблОстатковОбщие.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток,
            ТаблОстатковОбщие.СтоимостьНачальныйОстаток КАК СтоимостьНачальныйОстаток
        {ВЫБРАТЬ
            Номенклатура,
            КоличествоКонечныйОстаток,
            СтоимостьКонечныйОстаток,
            КоличествоНачальныйОстаток,
            СтоимостьНачальныйОстаток}
        ИЗ
            ТаблОстатковОбщие КАК ТаблОстатковОбщие
        {ГДЕ
            ТаблОстатковОбщие.Номенклатура КАК Номенклатура,
            ТаблОстатковОбщие.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток,
            ТаблОстатковОбщие.СтоимостьКонечныйОстаток КАК СтоимостьКонечныйОстаток,
            ТаблОстатковОбщие.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток,
            ТаблОстатковОбщие.СтоимостьНачальныйОстаток КАК СтоимостьНачальныйОстаток}) КАК ВложОбщиеОстатки
        ПО ИсточникДанных.Номенклатура = ВложОбщиеОстатки.Номенклатура
{ГДЕ
    ИсточникДанных.Номенклатура.*,
    ИсточникДанных.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток,
    ИсточникДанных.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток,
    ИсточникДанных.СтоимостьНачальныйОстаток КАК СтоимостьНачальныйОстаток,
    ИсточникДанных.СтоимостьКонечныйОстаток КАК СтоимостьКонечныйОстаток,
    ВложОбщиеОстатки.КоличествоКонечныйОстаток КАК ОбщееКоличествоКонечныйОстаток,
    ВложОбщиеОстатки.СтоимостьКонечныйОстаток КАК ОбщееСтоимостьКонечныйОстаток,
    ВложОбщиеОстатки.КоличествоНачальныйОстаток КАК ОбщееКоличествоНачальныйОстаток,
    ВложОбщиеОстатки.СтоимостьНачальныйОстаток КАК ОбщееСтоимостьНачальныйОстаток,
    ВложПродажи.КоличествоОборот КАК КоличествоОборот,
    ВложПродажи.СтоимостьОборот КАК СтоимостьОборот,
    ВложЦены.ЦенаПоТипу КАК ЦенаПоТипу,
    (ВЫБОР
            КОГДА ВложПродажи.КоличествоОборот > 0
                ТОГДА ВложПродажи.КоличествоОборот
            ИНАЧЕ 0
        КОНЕЦ) КАК КоличествоОборотСреднее,
    (ВЫБОР
            КОГДА ВложПродажи.СтоимостьОборот > 0
                ТОГДА ВложПродажи.СтоимостьОборот
            ИНАЧЕ 0
        КОНЕЦ) КАК СтоимостьОборотСреднее,
    (ВЫБОР
            КОГДА ИсточникДанных.СтоимостьКонечныйОстаток > 0
                    И ИсточникДанных.КоличествоКонечныйОстаток > 0
                    И ВложПродажи.КоличествоОборот > 0
                ТОГДА ИсточникДанных.КоличествоКонечныйОстаток / ВложПродажи.КоличествоОборот
            КОГДА ИсточникДанных.СтоимостьКонечныйОстаток > 0
                    И ИсточникДанных.КоличествоКонечныйОстаток > 0
                ТОГДА 10000
            ИНАЧЕ 0
        КОНЕЦ) КАК КО,
    (ВЫБОР
            КОГДА ИсточникДанных.СтоимостьКонечныйОстаток > 0
                    И ИсточникДанных.КоличествоКонечныйОстаток > 0
                    И ВложПродажи.СтоимостьОборот > 0
                ТОГДА ИсточникДанных.СтоимостьКонечныйОстаток / ВложПродажи.СтоимостьОборот
            КОГДА ИсточникДанных.СтоимостьКонечныйОстаток > 0
                    И ИсточникДанных.КоличествоКонечныйОстаток > 0
                ТОГДА 10000
            ИНАЧЕ 0
        КОНЕЦ) КАК КОсумма,
    (ВЫБОР
            КОГДА ИсточникДанных.КоличествоКонечныйОстаток <= 0
                ТОГДА 0
            ИНАЧЕ ИсточникДанных.СтоимостьКонечныйОстаток / ИсточникДанных.КоличествоКонечныйОстаток
        КОНЕЦ) КАК ЦенаЗаРулон,
    (НАЧАЛОПЕРИОДА(ИсточникДанных.Период, ДЕНЬ)) КАК ПериодДень,
    (НАЧАЛОПЕРИОДА(ИсточникДанных.Период, НЕДЕЛЯ)) КАК ПериодНеделя,
    (НАЧАЛОПЕРИОДА(ИсточникДанных.Период, ДЕКАДА)) КАК ПериодДекада,
    (ВЫБОР
            КОГДА &Интервал > 0
                ТОГДА ВЫБОР
                        КОГДА (ВЫРАЗИТЬ(РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&НачальнаяДата, ДЕНЬ), НАЧАЛОПЕРИОДА(ИсточникДанных.Период, ДЕНЬ), ДЕНЬ) КАК ЧИСЛО(5, 0))) / &Интервал < 1
                            ТОГДА НАЧАЛОПЕРИОДА(&ДатаНачала, ДЕНЬ)
                        ИНАЧЕ ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&НачальнаяДата, ДЕНЬ), ДЕНЬ, &Интервал * (ВЫРАЗИТЬ((ВЫРАЗИТЬ(РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&НачальнаяДата, ДЕНЬ), КОНЕЦПЕРИОДА(ИсточникДанных.Период, ДЕНЬ), ДЕНЬ) КАК ЧИСЛО(5, 0))) / &Интервал - 0.5 КАК ЧИСЛО(2, 0))))
                    КОНЕЦ
            ИНАЧЕ ИсточникДанных.Период
        КОНЕЦ) КАК Период,
    (НАЧАЛОПЕРИОДА(ИсточникДанных.Период, МЕСЯЦ)) КАК ПериодМесяц,
    (НАЧАЛОПЕРИОДА(ИсточникДанных.Период, КВАРТАЛ)) КАК ПериодКвартал,
    (НАЧАЛОПЕРИОДА(ИсточникДанных.Период, ПОЛУГОДИЕ)) КАК ПериодПолугодие,
    (НАЧАЛОПЕРИОДА(ИсточникДанных.Период, ГОД)) КАК ПериодГод}
{УПОРЯДОЧИТЬ ПО
    Номенклатура.*,
    КоличествоНачальныйОстаток,
    КоличествоКонечныйОстаток,
    СтоимостьНачальныйОстаток,
    СтоимостьКонечныйОстаток,
    ОбщееКоличествоНачальныйОстаток,
    ОбщееСтоимостьНачальныйОстаток,
    ОбщееКоличествоКонечныйОстаток,
    ОбщееСтоимостьКонечныйОстаток,
    КоличествоОборотСреднее,
    СтоимостьОборотСреднее,
    КоличествоОборот,
    СтоимостьОборот,
    КО,
    КОсумма,
    ЦенаЗаРулон,
    ЦенаПоТипу,
    Период,
    ПериодДень,
    ПериодНеделя,
    ПериодДекада,
    ПериодМесяц,
    ПериодКвартал,
    ПериодПолугодие,
    ПериодГод}
ИТОГИ
    ВЫБОР
        КОГДА СУММА(КоличествоНачальныйОстаток) > 0
            ТОГДА СУММА(КоличествоНачальныйОстаток)
        ИНАЧЕ 0
    КОНЕЦ КАК КоличествоНачальныйОстаток,
    ВЫБОР
        КОГДА СУММА(КоличествоКонечныйОстаток) > 0
            ТОГДА СУММА(КоличествоКонечныйОстаток)
        ИНАЧЕ 0
    КОНЕЦ КАК КоличествоКонечныйОстаток,
    ВЫБОР
        КОГДА СУММА(СтоимостьНачальныйОстаток) > 0
            ТОГДА СУММА(СтоимостьНачальныйОстаток)
        ИНАЧЕ 0
    КОНЕЦ КАК СтоимостьНачальныйОстаток,
    ВЫБОР
        КОГДА СУММА(СтоимостьКонечныйОстаток) > 0
            ТОГДА СУММА(СтоимостьКонечныйОстаток)
        ИНАЧЕ 0
    КОНЕЦ КАК СтоимостьКонечныйОстаток,
    СРЕДНЕЕ(ОбщееКоличествоНачальныйОстаток),
    СРЕДНЕЕ(ОбщееСтоимостьНачальныйОстаток),
    СРЕДНЕЕ(ОбщееКоличествоКонечныйОстаток),
    СРЕДНЕЕ(ОбщееСтоимостьКонечныйОстаток),
    СУММА(КоличествоОборот),
    СУММА(СтоимостьОборот),
    СРЕДНЕЕ(ЦенаПоТипу),
    ВЫБОР
        КОГДА СУММА(КоличествоКонечныйОстаток) <= 0
            ТОГДА 0
        ИНАЧЕ СУММА(СтоимостьКонечныйОстаток) / СУММА(КоличествоКонечныйОстаток)
    КОНЕЦ КАК ЦенаЗаРулон,
    ВЫБОР
        КОГДА СУММА(СтоимостьКонечныйОстаток) > 0
                И СУММА(КоличествоКонечныйОстаток) > 0
                И СУММА(КоличествоОборот) > 0
            ТОГДА СУММА(КоличествоКонечныйОстаток) / СУММА(КоличествоОборот)
        КОГДА СУММА(СтоимостьКонечныйОстаток) > 0
                И СУММА(КоличествоКонечныйОстаток) > 0
            ТОГДА 10000
        ИНАЧЕ 0
    КОНЕЦ КАК КО,
    ВЫБОР
        КОГДА СУММА(СтоимостьОборот) <= 0
            ТОГДА 10000
        ИНАЧЕ СУММА(СтоимостьКонечныйОстаток) / СУММА(СтоимостьОборот)
    КОНЕЦ КАК КОсумма,
    ВЫБОР
        КОГДА КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ПериодМесяц) > 1
            ТОГДА СУММА(КоличествоОборот) / КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Период)
        ИНАЧЕ 0
    КОНЕЦ КАК КоличествоОборотСреднее,
    ВЫБОР
        КОГДА КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ПериодМесяц) > 1
            ТОГДА СУММА(СтоимостьОборот) / КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Период)
        ИНАЧЕ 0
    КОНЕЦ КАК СтоимостьОборотСреднее
ПО
    ОБЩИЕ
{ИТОГИ ПО
    Номенклатура.*,
    Период,
    ПериодДень,
    ПериодНеделя,
    ПериодДекада,
    ПериодМесяц,
    ПериодКвартал,
    ПериодПолугодие,
    ПериодГод}
23 Ёпрст
 
02.12.16
13:36
И какие показатели не меняются ?
ВложПродажи.КоличествоОборот КАК КоличествоОборот,
    ВложПродажи.СтоимостьОборот КАК СтоимостьОборот,

эти что ле ?
24 Ёпрст
 
02.12.16
13:37
как минимум, при левом соединении не хватает EcтьNULL по ним
+ желательно задать псевдонимы в отборе на Клиентоса твоего для построителя.
25 Ёпрст
 
02.12.16
13:38
вот тут, к примеру
    {ГДЕ
            Продажи.Номенклатура.*,
            Продажи.СкладПродаж.*,
            Продажи.Контрагент.*}
26 Ёпрст
 
02.12.16
13:40
+ в дальнейшем, есть строки типа

УниверсальныйОтчет.ДобавитьОтбор("Контрагент"); ?
27 kalisto
 
02.12.16
13:40
Да.
28 kalisto
 
02.12.16
13:51
Результаты те же.
29 kalisto
 
02.12.16
14:13
По сути у меня главная для продаж виртуальная таблица ТаблПродажи. В ней достаточно сделать отбор. Ведь по номенклатуре отбор делает.
30 Ёпрст
 
02.12.16
14:25
(27) да, это ответ на какой вопрос ?
31 kalisto
 
02.12.16
14:40
на (26)
32 Ёпрст
 
02.12.16
14:54
(31) по остальным то есть че ?
33 Ёпрст
 
02.12.16
14:55
ну и избавитться от кучи ненужных вложенных запросов
34 FIXXXL
 
02.12.16
14:56
зачем

ВЫБОР
    |            КОГДА ПродажиСебестоимостьОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
    |                ТОГДА ПродажиСебестоимостьОбороты.Регистратор.Контрагент
    |            ИНАЧЕ ВЫБОР
    |                    КОГДА ПродажиСебестоимостьОбороты.Регистратор ССЫЛКА Документ.КорректировкаРеализации
    |                        ТОГДА ПродажиСебестоимостьОбороты.Регистратор.Контрагент
    |                КОНЕЦ
    |        КОНЕЦ)

если в типовой во всех регистраторах будет Контрагет
35 kalisto
 
02.12.16
15:13
В регистре ПродажиСебестоимость контрагента нет.
36 FIXXXL
 
02.12.16
15:18
(35) я б тебе сильно рекомендовал собрать финальную таблицу и уже на нее навешать отборы построителя
37 Ёпрст
 
02.12.16
15:19
(35) замени это всё на 1 строку

ПродажиСебестоимостьОбороты.Регистратор.Контрагент как Клиентос
38 Ёпрст
 
02.12.16
15:19
у тебя все регистраторы имеют этот реквизит, если че. Не нужен там выбор делать
39 kalisto
 
02.12.16
15:33
ОК. Поменяла. Спасибо. Только отбор не работает. А Склад, случаем, нельзя по-другому выцепить?
40 kalisto
 
02.12.16
16:23
В консоли запрос работает, правда, там указываю явно отбор с помощью ГДЕ.
41 Михаил Козлов
 
02.12.16
17:46
(40) В отладчике встаньте в СформироватьОтчет перед собственно формированием и посмотрите текст запроса ОбщийОтчет.ПостроительОтчета.ПолучитьЗапрос().
42 kalisto
 
04.12.16
00:26
Текст запроса тот же, что и в модуле прописан.
43 Ёпрст
 
05.12.16
09:51
(42) с параметрами ?
+ перед выполнением, параметры твои есть в нём ? В части клиентоса ?
44 kalisto
 
05.12.16
10:44
Сейчас гляну еще раз.
45 kalisto
 
05.12.16
11:02
Смотрю, и вижу, что в запросе, где должен был выбираться регистратор, его то и нет.
46 kalisto
 
05.12.16
13:51
Всем спасибо за подсказки. Одолела выборку. Во вложенном запросе, который по регистру продажисебестоимость, нужно сделать группировки и по регистратору в том числе.