8.х Запрос за полгода выполняется быстрее чем за месяц

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем mhl, 6 июл 2017.

  1. TopicStarter Overlay
    mhl
    Offline

    mhl Опытный в 1С

    Регистрация:
    23 июн 2007
    Сообщения:
    443
    Симпатии:
    1
    Баллы:
    29
    Здравствуйте. Вот такой запрос

    Код:
    ЗапросПродаж.Текст =
        "ВЫБРАТЬ
        |    ВложенныйЗапрос.МодельИзмерение КАК МодельИзмерение,
        |    ЦеныМоделиСрезПоследних.Цена КАК Цена
        |ПОМЕСТИТЬ ТЗЦеныБазовые
        |ИЗ
        |    (ВЫБРАТЬ
        |        ЦеныМоделиСрезПоследних.Модель КАК МодельИзмерение,
        |        МАКСИМУМ(ЦеныМоделиСрезПоследних.Период) КАК Период
        |    ИЗ
        |        РегистрСведений.ЦеныМодели.СрезПоследних(&ДатаКон, ) КАК ЦеныМоделиСрезПоследних
        |    ГДЕ
        |        ЦеныМоделиСрезПоследних.ТипЦен = &ТипРеал
        |        И ЦеныМоделиСрезПоследних.ТипСкидок = &База
        |   
        |    СГРУППИРОВАТЬ ПО
        |        ЦеныМоделиСрезПоследних.Модель) КАК ВложенныйЗапрос
        |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныМодели.СрезПоследних(&ДатаКон, ) КАК ЦеныМоделиСрезПоследних
        |        ПО ВложенныйЗапрос.МодельИзмерение = ЦеныМоделиСрезПоследних.Модель
        |            И ВложенныйЗапрос.Период = ЦеныМоделиСрезПоследних.Период
        |ГДЕ
        |    ЦеныМоделиСрезПоследних.ТипЦен = &ТипРеал
        |    И ЦеныМоделиСрезПоследних.ТипСкидок = &База
        |
        |СГРУППИРОВАТЬ ПО
        |    ЦеныМоделиСрезПоследних.Цена,
        |    ВложенныйЗапрос.МодельИзмерение
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    МЕСЯЦ(ПродажаИМаржаОбороты.Период) КАК Месяц,
        |    КОНЕЦПЕРИОДА(ПродажаИМаржаОбороты.Период, МЕСЯЦ) КАК Дата,
        |    СУММА(ПродажаИМаржаОбороты.КоличествоОборот) КАК КоличествоПродаж,
        |    СУММА(ТЗЦеныБазовые.Цена * ПродажаИМаржаОбороты.КоличествоОборот) КАК СуммаПоЦенеРРЦВсего,
        |    СУММА(ПродажаИМаржаОбороты.СуммаОборот) КАК СуммаПродаж
        |ИЗ
        |    РегистрНакопления.ПродажаИМаржа.Обороты(&ДатаНач, &ДатаКон, Регистратор, ) КАК ПродажаИМаржаОбороты
        |        ЛЕВОЕ СОЕДИНЕНИЕ ТЗЦеныБазовые КАК ТЗЦеныБазовые
        |        ПО ПродажаИМаржаОбороты.Номенклатура.Модель = ТЗЦеныБазовые.МодельИзмерение
        |ГДЕ
        |    ПродажаИМаржаОбороты.Договор.Организация = &ДФ" +
    
             //прочие фильтры
    
    
        |СГРУППИРОВАТЬ ПО
        |    МЕСЯЦ(ПродажаИМаржаОбороты.Период),
        |    КОНЕЦПЕРИОДА(ПродажаИМаржаОбороты.Период, МЕСЯЦ)";
    Если параметры даты таблицы РегистрНакопления.ПродажаИМаржа.Обороты указать к примеру за полгода, то запрос выполняется считанные секунды. А за один месяц идет минут 15. Объясните как такое может быть.
  2. 1с-ник
    Offline

    1с-ник Профессионал в 1С Заблокирован

    Регистрация:
    5 окт 2014
    Сообщения:
    998
    Симпатии:
    162
    Баллы:
    104
    Если не заострять внимание на абсолютно неграмотный запрос, то скорее всего в месяце, выбранного в параметрах, не рассчитаны итоги, в отличии от полугода, а также в нём было очень много движений по регистру "Продажа и маржа".
  3. TopicStarter Overlay
    mhl
    Offline

    mhl Опытный в 1С

    Регистрация:
    23 июн 2007
    Сообщения:
    443
    Симпатии:
    1
    Баллы:
    29
    Когда выбираю период за полгода, то туда входит и данный месяц.
  4. TopicStarter Overlay
    mhl
    Offline

    mhl Опытный в 1С

    Регистрация:
    23 июн 2007
    Сообщения:
    443
    Симпатии:
    1
    Баллы:
    29
    Тут проблема выходит в таблице цен.
    Вот такой запрос
    Код:
    ВЫБРАТЬ
        МЕСЯЦ(ПродажаИМаржаОбороты.Период) КАК Месяц,
        СУММА(ПродажаИМаржаОбороты.КоличествоОборот) КАК КоличествоПродаж,
        СУММА(ПродажаИМаржаОбороты.СуммаОборот) КАК СуммаПродаж
    ИЗ
        РегистрНакопления.ПродажаИМаржа.Обороты(&ДатаНач, &ДатаКон, Месяц, ) КАК ПродажаИМаржаОбороты
    ГДЕ
        ПродажаИМаржаОбороты.Договор.Организация = &ДФ
    
    СГРУППИРОВАТЬ ПО
        МЕСЯЦ(ПродажаИМаржаОбороты.Период)
    ИТОГИ
        СУММА(КоличествоПродаж),
        СУММА(СуммаПродаж)
    ПО
        ОБЩИЕ,
        Месяц
    работает быстро с любым периодом. Хоть полгода, хоть месяц.

    В данной таблице имеется цена, но она реквизит. Следующий запрос сумму по РРЦ выдает чуть завышенной.
    Код:
    ВЫБРАТЬ
        МЕСЯЦ(ПродажаИМаржа.Период) КАК Месяц,
        СУММА(ВЫБОР
                КОГДА ПродажаИМаржа.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
                    ТОГДА ПродажаИМаржа.Количество
                ИНАЧЕ -ПродажаИМаржа.Количество
            КОНЕЦ) КАК КоличествоПродаж,
        СУММА(ВЫБОР
                КОГДА ПродажаИМаржа.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
                    ТОГДА ПродажаИМаржа.Сумма
                ИНАЧЕ -ПродажаИМаржа.Сумма
            КОНЕЦ) КАК СуммаПродаж,
        СУММА(ПродажаИМаржа.БазоваяЦена * ВЫБОР
                КОГДА ПродажаИМаржа.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
                    ТОГДА ПродажаИМаржа.Количество
                ИНАЧЕ -ПродажаИМаржа.Количество
            КОНЕЦ) КАК СуммаРРЦ
    ИЗ
        РегистрНакопления.ПродажаИМаржа КАК ПродажаИМаржа
    ГДЕ
        ПродажаИМаржа.Договор.Организация = &ДФ
        И ПродажаИМаржа.Период >= &ДатаНач
        И ПродажаИМаржа.Период <= &ДатаКон
    
    СГРУППИРОВАТЬ ПО
        МЕСЯЦ(ПродажаИМаржа.Период)
    ИТОГИ ПО
        ОБЩИЕ,
        Месяц

Поделиться этой страницей