[РЕШЕНО] Запрос. Условие по итоговому полю

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем serpanik, 9 окт 2019.

  1. TopicStarter Overlay
    serpanik
    Offline

    serpanik

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

    2019-10-09_204252____.jpg
  2. nbIpKuH_BaH9I
    Online

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    8.055
    Симпатии:
    538
    Баллы:
    204
    Еще разок. Какое условие нужно сделать? Сижу читаю и не въезжаю)
  3. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.795
    Симпатии:
    1.022
    Баллы:
    204
    Так понимаю, нужно сделать группировку по контрагенту с условием имеющие сумма(СуммаДокумента) > 1000
  4. nbIpKuH_BaH9I
    Online

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    8.055
    Симпатии:
    538
    Баллы:
    204
    Мне показалось, что нужно сравнить суммы по группировкам, а не с использованием конкретного значения (1000)
  5. TopicStarter Overlay
    serpanik
    Offline

    serpanik

    Регистрация:
    17 авг 2011
    Сообщения:
    17
    Симпатии:
    0
    Баллы:
    1
    Конкретное значение в параметре МинимальнаяСумма. Оно у меня сейчас в задаче = 1000. и картинка под это сделана.
    В общем, нужно отфильтровать по общей итоговой сумме, чтобы в результат попало лишь то, что по контрагенту В ОБЩЕМ было меньше &МинимальнаяСумма. Не знаю как проще сказать. :(
    --- Объединение сообщений, 9 окт 2019 ---
    Так в запросе я имеющие использовал. Но в результате выдает не то, что нужно. Как бы условие поставить на общую сумму по итогу?
    --- Объединение сообщений, 9 окт 2019 ---
    Чтобы в условие брались те позиции, которые обведены на рисунке. Если они меньше значения параметра, то попадали бы в результат (всем итогом), а если больше, то исключались бы из него. Не знаю как правильно объяснить
    Последнее редактирование: 9 окт 2019
  6. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.795
    Симпатии:
    1.022
    Баллы:
    204
    Насколько понял, никак. Запрос может суммировать/усреднять/находить максимум/минимум из значений всех строк.

    Запрос не умеет выбирать отдельные строки, числовое значение в которых в сумме со значениями в других произвольных строках дает результат больше/меньше определенного числового значения.
  7. TopicStarter Overlay
    serpanik
    Offline

    serpanik

    Регистрация:
    17 авг 2011
    Сообщения:
    17
    Симпатии:
    0
    Баллы:
    1
    Жаль. Интуитивно казалось, что решение простое. :)
    Может тогда в несколько этапов решить задачу, которая заключается в том, чтобы отсеять всех контрагентов с их реализациями, если общая сумма этих реализаций (в пределах одного контрагента) больше суммы, заданной в параметре запроса?
  8. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.795
    Симпатии:
    1.022
    Баллы:
    204
    Это делает функция Имеющие
  9. TopicStarter Overlay
    serpanik
    Offline

    serpanik

    Регистрация:
    17 авг 2011
    Сообщения:
    17
    Симпатии:
    0
    Баллы:
    1
    И как её здесь использовать? В моем запросе она используется, но работает построчно (если можно так сказать), а не над итоговым значением группировки.
  10. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.795
    Симпатии:
    1.022
    Баллы:
    204
    Выбрать Контрагент, Сумма(СуммаДокумента) как СуммаДокумента из Таблица Сгруппировать по Контрагент Имеющие Сумма(СуммаДокумента) >= &Значение
    serpanik нравится это.
  11. TopicStarter Overlay
    serpanik
    Offline

    serpanik

    Регистрация:
    17 авг 2011
    Сообщения:
    17
    Симпатии:
    0
    Баллы:
    1
    Спасибо всем откликнувшимся. Я почему-то думал, что можно одним простым запросом решить проблему, но, видимо, не совсем так.
    Пришлось решить с помощью вложенного запроса (думаю, что можно было и через виртуальную таблицу).
    Во вложенном запросе сначала выбрал контрагентов, у которых общая сумма документов меньше значения параметра (спасибо nomad_irk ), а потом связал левым соединением с документами.
    Вот, что получилось:

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

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    8.055
    Симпатии:
    538
    Баллы:
    204
    Эту задачу может решить СКД)))
  13. TopicStarter Overlay
    serpanik
    Offline

    serpanik

    Регистрация:
    17 авг 2011
    Сообщения:
    17
    Симпатии:
    0
    Баллы:
    1
    Мне нужно было отобрать документы, если общая сумма в разрезе контрагента была меньше заданной в параметре, а потом эти документы обработать. Поэтому я не стал смотреть в сторону СКД, мне нужен был именно запрос, чтобы его результат впихнуть потом в таблицу значений, а потом уже ковырять эти документы. :)
    Но, если скажете как сделать на СКД (сам запрос), то буду благодарен. На будущее так сказать...
    З.Ы. Хотя до сих пор не верится, что такая, относительно популярная задача, решается не одним запросом. Ну да ладно....
    Еще раз всем спасибо!
  14. nbIpKuH_BaH9I
    Online

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    8.055
    Симпатии:
    538
    Баллы:
    204
    СКД очень гибкая штука. Результат работы можно также выгрузить в ТЗ и спокойно обработать как надо. Запрос самый простой. Основной прикол будет в ресурсах и настройках группировках. В двух словах и не напишешь. Нужно сидеть и эксперементировать.
  15. TopicStarter Overlay
    serpanik
    Offline

    serpanik

    Регистрация:
    17 авг 2011
    Сообщения:
    17
    Симпатии:
    0
    Баллы:
    1
    Вот, сидеть и экспериментировать. У меня вроде проще получилось, как мне кажется. Вполне возможно, что с виртуальной таблицей было бы быстрее, но и так норм. Как мне кажется. :)