новое событие
Информационный поток
Задания вакансии материалы разработки сообщения форума
Форум

Обсуждение к заданию: объединить 3 запроса в один

    • #1
    • 16.11.2018 11:39
    0
    самописная конфигурация. процедура полностью работает. долго думает. есть запрос, потом в цикле ещё 2 запроса. надо объединить. в файле обработка, процедура на кнопке "Рассчитать 2&quo...  Подробнее>>
    • #2
    • 16.11.2018 11:42
    0
    Я вот не пойму, что рассчитывается в запросах внутри цикла.
    Из "чтения кода" у меня получается, что оно в поле НовТов.ДнейЗа14 будет ВСЕГДА записывать число 14, а в поле НовТов.ДнейЗа100 будет ВСЕГДА записывать число 100.
    Зачем там вообще эти запросы? Тормозов добавить?
    • #3
    • 16.11.2018 11:46
    0
    Да, там хотели написать "КоличествоРасход", но оставили то, что им услужливо подсунула платформа ))
    • #4
    • 16.11.2018 11:52
    0
    Если там написать КоличествоРасход, то вообще синтаксическая ошибка будет.
    Запрос выбирает таблицу количеств по датам, а в коде выборка не обходится, а просто количество записей в ней пишется в поле таблицы.

    Или в запросе хотели выбрать "КоличествоРасход по указанной номенклатуре за последние 14/100 дней"?
    • #5
    • 16.11.2018 12:10
    0
    полностью работает процедура на кнопке "Рассчитать 2". надо объединить 3 запроса.
    • #6
    • 16.11.2018 12:20
    0
    Да-да, не обратил внимание, что группировка в запросах. Это таким диким образом получается количество дней в периоде, по которым был расход.
    • #7
    • 16.11.2018 12:21
    0
    Если она полностью работает (а судя по скрину я не вижу того, что ожидаю увидеть), то это возможно из-за каких-то глюков платформы (например, конструкция ПЕРИОДАМИ не работает в запросе так, как должна).
    Поэтому вопрос следующий: Что должно быть в колонках НовТов.ДнейЗа14 и НовТов.ДнейЗа100?
    Судя по скрину и запросу, предположу, что хотели выбрать количество дней за периоды "последние 14 дней" и "последние 100 дней", в которые данная номенклатура списывалась со склада.
    Я правильно понял?
    • #8
    • 16.11.2018 12:25
    0
    Прошу прощения, платформа работает. Просто, чтобы конструкция ПЕРИОДАМИ сработала, нужно при выборке по группировке еще третий параметр передать. Этого не сделано, соответственно конструкция ПЕРИОДАМИ просто игнорируется.
    Ух! Блин! И Индус писал сии запросы!

    Но вопрос остается тем же: Что же все-таки там хотели выбрать?
    • #9
    • 16.11.2018 12:55
    0
    там я выбираю количество дней в которых ненулевые продажи.

    ВыборкаПериодДень = РезультатЗапросаДень.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"ПериодДень");
    НовТов.ДнейЗа14=ВыборкаПериодДень.Количество();


    если ВыборкаПериодДень = РезультатЗапросаДень.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"ПериодДень","ВСЕ");

    тогда выберет все дни.


    кто-нибудь подделайте для ИНДУСА запрос.
    оплата есть 100%.
    • #10
    • 16.11.2018 13:04
    • Отредактировано: 16.11.2018 13:04:51
    0
    teslenko
    там я выбираю количество дней в которых ненулевые продажи.
    ...
    если ВыборкаПериодДень = РезультатЗапросаДень.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"ПериодДень","ВСЕ");

    тогда выберет все дни.


    Тогда конструкция ПЕРИОДАМИ(...) в запросе является лишней.
    И кстати, она ОЧЕНЬ сильно тормозит запрос.

    Но это уже не важно.
    Благодарю за разъяснения. Теперь задача ясна.
    • #11
    • 16.11.2018 13:12
    +1
    Cf могу предоставить, только как.
    оплата думаю за задание 1500руб.

    как платить и прислать CF объясняйте.
    я первый раз тут.

    раньше франчи помогали нам.
    на будущее будут задания от меня посерьёзнее.
    • #12
    • 16.11.2018 13:26
    0
    Загляните в "Личный кабинет \ Сообщения".
    • #13
    • 16.11.2018 13:51
    0
    teslenko
    полностью работает процедура на кнопке "Рассчитать 2". надо объединить 3 запроса.


    это результат работы рассчитать 2 кнопки ?
    • #14
    • 16.11.2018 13:59
    0
    это процедуру только на кнопке "рассчитать 2" надо подделать.
    3 запроса объединить в один.
    • #15
    • 16.11.2018 14:01
    • Отредактировано: 16.11.2018 14:03:13
    +1
    У вас не получится существенно ускорить работу этой обработки. Два последующих используют данные детальных записей первого как параметры. Даже если прицепить их к первому левым соединением, максимум можно будет выиграть только на индексации полученного первым запросом, выигрыш будет спорным. А с учётом того, что вы перед последующими запросами отсеиваете часть результата первого - более чем спорным.
    • #16
    • 16.11.2018 14:10
    0
    Олег
    У вас не получится существенно ускорить работу этой обработки.


    Позвольте с Вами не согласиться.
    Во-первых одно левое соединение в один раз выполняемом запросе, вместо сотен а может и тысяч дерганий базы мелкими запросами в циклах - существенно быстрее будет работать.

    А если еще и учесть, что запросы внутри циклов можно очистить от ненужного тормозящего мусора (СГРУППИРОВАТЬ ПО, ИТОГИ ПО ... ПЕРИОДАМИ), то можно еще больше ускорить.

    Ну и если отсеивание результатов внести в сам запрос, то еще больше ускорение можно получить.

    Всего, думаю, что минимум раза в 2-3 можно ускорить... А то и раз в 10, если на больших объемах данных.
    • #17
    • 16.11.2018 14:16
    0
    Хорошо, если я ошибаюсь. Но пока что у меня есть смутные сомнения.. ) Нет cf - есть сомнения. Без базы это всё плохо читается.
    • #18
    • 16.11.2018 14:49
    0
    Еще вопрос: А это нормально, что во внутренних запросах 14 и 100 дней (для вычисления количества дней продаж) считаются от ТекущейДаты, а во внешнем запросе эти же дни (для вычисления количества продаж) считаются от указанной в отчете даты (котора может отличаться от текущей)?
    • #19
    • 16.11.2018 14:57
    0
    а давайте Cf пожалуйста ?
Для участия в обсуждении Вам необходимо авторизоваться либо   зарегистрироваться