8.х Запрос не делает фильтр

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем desintegrer, 22 июл 2011.

  1. TopicStarter Overlay
    desintegrer
    Offline

    desintegrer Опытный в 1С

    Регистрация:
    11 май 2011
    Сообщения:
    377
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте ! (конфигурация УТ 10.3)
    Подскажите пожалуйста :
    Есть запрос он должен выбирать Только те продажи по которым была ручная я скидка.

    Вместо этого он отбирает все продажи с любой скидкой - и игнорирует условия по соединенной таблице Документу продажи .

    Допустим есть регистр накопления + документ продажи (только в нем указаны размеры скидки)

    Я ставлю ограничения допустим отобрать только те записи у которых документпродажи.условие скидки = ручная - В результате получаю ахинею со всеми возможными значениями объекта метаданных от носящихся к ручной скидке . Помогите пожалуйста разобраться ?!


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

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    нужны условия ИМЕЮЩИЕ вместо ГДЕ
  3. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104

    может я что-то не поняла, но указанного ограничения в представленном запросе не видно...

    попробуйте потестировать запрос в консоли запросов
  4. TopicStarter Overlay
    desintegrer
    Offline

    desintegrer Опытный в 1С

    Регистрация:
    11 май 2011
    Сообщения:
    377
    Симпатии:
    0
    Баллы:
    26
    номаду

    Применил имеющие мн вернулась абсолютно та же ерунда - по 3 записи на каждый документ .


    Тигеру


    Да условия нет потому что внимание сюрприз По результату выборки
    такое поле как Условие скидки ПУСТОЕ - хотя в документе оно ЗАПОЛНЕНО ...............я в шоке .


    И ещё момент если в документе 2 продажи по разным скидкам так этот запрос мне всё в одну кучу объединяет - как это так там ведь значения реквизитов разные ? ( ...а вот если надо будет специально такое делать - фиг получится !)
  5. TopicStarter Overlay
    desintegrer
    Offline

    desintegrer Опытный в 1С

    Регистрация:
    11 май 2011
    Сообщения:
    377
    Симпатии:
    0
    Баллы:
    26
    В интернете написано следующие - наверно имеющие все-таки для другого нужно !?

    Как применять условия для отбора по значениям полей, вычисленных как результат агрегатной функции?

    ВЫБРАТЬ
    РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура,
    СУММА(РеализацияТоваровУслугТовары.Количество) КАК Количество
    ИЗ
    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
    СГРУППИРОВАТЬ ПО
    РеализацияТоваровУслугТовары.Номенклатура
    ИМЕЮЩИЕ
    СУММА(РеализацияТоваровУслугТовары.Количество) > 10
  6. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Кхм....а не проще условие на значение скидки установить?
    используйте пакет запросов.
    соединяйте внутренним соединением
  7. TopicStarter Overlay
    desintegrer
    Offline

    desintegrer Опытный в 1С

    Регистрация:
    11 май 2011
    Сообщения:
    377
    Симпатии:
    0
    Баллы:
    26
    Номаду - спасибо за подсказку в сторону имеющие .
    Я отобрал все продажи с ручной скидкой где в одном документе 1 размер скидки .

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

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    сделайте в пакете запросов
    1. запрос собирающий ВСЕ документы реализаций за период, где есть вообще какая-нибудь скидка.
    2. отберите за период все данные из регистра.
    3. внутренним соединением по регистратору + номер строки(или другое условие соединения) соедините две временные таблицы и создайте вычисляемое поле цены со скидкой(?)
  9. TopicStarter Overlay
    desintegrer
    Offline

    desintegrer Опытный в 1С

    Регистрация:
    11 май 2011
    Сообщения:
    377
    Симпатии:
    0
    Баллы:
    26
    Вольно цитирую Номад " а не проще на рамер скидки условие наложить"

    Отвечаю : Да в том то и фокус ЧТО

    товар документ продажи сумма продажи количество скидка суммапродажи без скидки
    подтяжки отчет 1 95 3 5 100
    подтяжки отчет1 95 3 10 100
    подтяжки отчет1 95 3 15 100

    Вот такую выборку я получаю - по сути размер скидки мне неизвестен и его я могу понять только из сравнения и вычисления суммы без скидки и суммы со скидкой

    Я тут думаю просто сделать отдельны запрос и через объединить связать с результатом этого запроса - но
    я пока не понимаю
    - Этот запрос у меня всё плюсуте в один товар из-за группировок ?
    - а если делать другой запрос и делать левое соединение то группировать свсё равно придетс я7


    Пока придумал так

    + запрос по документу
    где колко записей с этим товаром больше 1

    Как бы это условие записать ?
  10. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    дык группируйте по размеру скидки, а не суммируйте все числовые поля
  11. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    кататак:

  12. TopicStarter Overlay
    desintegrer
    Offline

    desintegrer Опытный в 1С

    Регистрация:
    11 май 2011
    Сообщения:
    377
    Симпатии:
    0
    Баллы:
    26
    Нет группировать по размеру скидки мне тоже не подройдет
    мне нужно получить записи так как они есть в регистре - 2 записи без группировки то 2 записи.
  13. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    тогда вообще не группируй никак
  14. TopicStarter Overlay
    desintegrer
    Offline

    desintegrer Опытный в 1С

    Регистрация:
    11 май 2011
    Сообщения:
    377
    Симпатии:
    0
    Баллы:
    26
    вот сейча ся эту темы и пытаюсь развить - вроде получается !

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