|   |   | 
| 
 | Условие в запросе | ☑ | ||
|---|---|---|---|---|
| 0
    
        yalex 06.04.12✎ 11:22 | 
        Коллеги, есть несложный запрос:
  ВЫБРАТЬ Себестоимость.Номенклатура КАК Номенклатура, Продажи.СтоимостьОборот КАК Оборот, Себестоимость.СтоимостьОборот - Продажи.СтоимостьОборот КАК Прибыль ИЗ РегистрНакопления.ПродажиСебестоимость.Обороты(&ДатаНач, &ДатаКон, ) КАК Себестоимость ПОЛНОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты(&ДатаНач, &ДатаКон) КАК Продажи ПО Себестоимость.Номенклатура = Продажи.Номенклатура УПОРЯДОЧИТЬ ПО Продажи.СтоимостьОборот УБЫВ Мне нужно в порядке убывания оборота выбрать номеклатуры, сумма которых не больше 1000000. Подскажите возможно такое сделать с помощью запроса и как? Спасибо. | |||
| 1
    
        Maxus43 06.04.12✎ 11:24 | 
        Где ТвояСумма <= 1000000     | |||
| 2
    
        Maxus43 06.04.12✎ 11:24 | 
        что не получается то?     | |||
| 3
    
        yalex 06.04.12✎ 11:26 | 
        (1) Не ну так бы я смог:) Мне по сути нужно ограничить выборку запроса: Выбрать первые номенклатуры, общая сумма оборотов которых не больше 1 млн     | |||
| 4
    
        Maxus43 06.04.12✎ 11:27 | 
        ну дак так и будет, если (1) вставиш... или я чото не понимаю?     | |||
| 5
    
        Wobland 06.04.12✎ 11:28 | 
        (3) для ограничить есть слово ГДЕ. что не устраивает?     | |||
| 6
    
        Reset 06.04.12✎ 11:31 | 
        Ему поди нужно набрать на нужную сумму     | |||
| 7
    
        yalex 06.04.12✎ 11:32 | 
        (4) Обороты номенклатур упорядочены по убыванию:
  номенклатура1 - 600 000 номенклатура2 - 400 000 номенклатура3 - 100 000 номенклатра3 не попадёт в выборку ибо на ней превышается этот млн Мне в запросе нуждно получить первые номенклатуры сумма оборотов которых не больше 1 млн | |||
| 8
    
        Maxus43 06.04.12✎ 11:32 | 
        хм, да. в запросе имхо так не сделать     | |||
| 9
    
        yalex 06.04.12✎ 11:33 | 
        (8) вот и я только на чудо надеюсь)     | |||
| 10
    
        ssh2006 06.04.12✎ 11:35 | 
        Можно сделать     | |||
| 11
    
        yalex 06.04.12✎ 11:35 | 
        (10) Выручайте)     | |||
| 12
    
        Maxus43 06.04.12✎ 11:40 | 
        присоединяюсь. просветите грешных     | |||
| 13
    
        Ненавижу 1С гуру 06.04.12✎ 11:42 | 
        соединить само с собой с условием неравенства на накапливаемую сумму     | |||
| 14
    
        Maxus43 06.04.12✎ 11:46 | 
        (13) пример есть?     | |||
| 15
    
        Ненавижу 1С гуру 06.04.12✎ 11:46 | 
        рыба:
  ВЫБРАТЬ Т1.Номенклатура КАК Номенклатура, Т1.СтоимостьОборот КАК СтоимостьОборот СУММА(Т2.СтоимостьОборот) КАК СтоимостьОборотНакопительная ИЗ Т КАК Т1 ЛЕВОЕ СОЕДИНЕНИЕ Т КАК Т2 ПО (Т1.СтоимостьОборот<=Т2.СтоимостьОборот) // будут проблемы с одинаковыми показателями СГРУППИРОВАТЬ ПО Т1.Номенклатура, Т1.СтоимостьОборот ИМЕЮЩИЕ СУММА(Т2.СтоимостьОборот)<СтоТыщМиллионов | |||
| 16
    
        yalex 06.04.12✎ 12:04 | 
        (15) Идея понятна. Буду пробовать..     | |||
| 17
    
        ssh2006 06.04.12✎ 14:20 | 
        ВЫБРАТЬ
  Продажи.СтоимостьОборот КАК Оборот, Продажи.СтоимостьОборот - Себестоимость.СтоимостьОборот КАК Прибыль, Продажи.Номенклатура ПОМЕСТИТЬ Таб ИЗ РегистрНакопления.Продажи.Обороты(&ДатаНач, &ДатаКон, , ) КАК Продажи ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПродажиСебестоимость.Обороты(&ДатаНач, &ДатаКон, , ) КАК Себестоимость ПО (Себестоимость.Номенклатура = Продажи.Номенклатура) ГДЕ Продажи.СтоимостьОборот < &ОборотОграничение ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВложенныйЗапрос.Номенклатура, ВложенныйЗапрос.Оборот КАК Оборот, ВложенныйЗапрос.Прибыль, ВложенныйЗапрос.ОборотНакопление ИЗ (ВЫБРАТЬ Таб.Номенклатура КАК Номенклатура, Таб.Оборот КАК Оборот, Таб.Прибыль КАК Прибыль, СУММА(ЕСТЬNULL(Таб1.Оборот, 0)) КАК ОборотНакопление, МИНИМУМ(ЕСТЬNULL(Таб1.Оборот, 0)) КАК МаксОборот ИЗ Таб КАК Таб ЛЕВОЕ СОЕДИНЕНИЕ Таб КАК Таб1 ПО (ВЫБОР КОГДА Таб.Оборот = Таб1.Оборот ТОГДА Таб.Номенклатура < Таб1.Номенклатура ИНАЧЕ Таб.Оборот < Таб1.Оборот КОНЕЦ) СГРУППИРОВАТЬ ПО Таб.Номенклатура, Таб.Оборот, Таб.Прибыль ИМЕЮЩИЕ СУММА(ЕСТЬNULL(Таб1.Оборот, 0)) < &ОборотОграничение - МИНИМУМ(ЕСТЬNULL(Таб1.Оборот, 0))) КАК ВложенныйЗапрос УПОРЯДОЧИТЬ ПО Оборот УБЫВ | |||
| 18
    
        ssh2006 06.04.12✎ 14:24 | 
        Причесано
  ВЫБРАТЬ Продажи.СтоимостьОборот КАК Оборот, Продажи.СтоимостьОборот - Себестоимость.СтоимостьОборот КАК Прибыль, Продажи.Номенклатура ПОМЕСТИТЬ Таб ИЗ РегистрНакопления.Продажи.Обороты(&ДатаНач, &ДатаКон, , ) КАК Продажи ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПродажиСебестоимость.Обороты(&ДатаНач, &ДатаКон, , ) КАК Себестоимость ПО (Себестоимость.Номенклатура = Продажи.Номенклатура) ГДЕ Продажи.СтоимостьОборот < &ОборотОграничение ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Таб.Номенклатура КАК Номенклатура, Таб.Оборот КАК Оборот, Таб.Прибыль КАК Прибыль, СУММА(ЕСТЬNULL(Таб1.Оборот, 0)) КАК ОборотНакопление ИЗ Таб КАК Таб ЛЕВОЕ СОЕДИНЕНИЕ Таб КАК Таб1 ПО (ВЫБОР КОГДА Таб.Оборот = Таб1.Оборот ТОГДА Таб.Номенклатура < Таб1.Номенклатура ИНАЧЕ Таб.Оборот < Таб1.Оборот КОНЕЦ) СГРУППИРОВАТЬ ПО Таб.Номенклатура, Таб.Оборот, Таб.Прибыль ИМЕЮЩИЕ СУММА(ЕСТЬNULL(Таб1.Оборот, 0)) < &ОборотОграничение - МИНИМУМ(ЕСТЬNULL(Таб1.Оборот, 0)) УПОРЯДОЧИТЬ ПО Оборот УБЫВ | |||
| 19
    
        yalex 06.04.12✎ 14:53 | 
        (18) Додумались же до такого) Спасибо!     | |||
| 20
    
        ssh2006 06.04.12✎ 15:48 | 
        (19) Только условие в (18) немного поправить надо. Вот так:
  ИМЕЮЩИЕ СУММА(ЕСТЬNULL(Таб1.Оборот, 0)) + Таб.Оборот < &ОборотОграничение Чтобы однозначно упорядочить записи для совпадающих оборотов сравниваются ссылки. А так как накопительная сумма не учитытывает значение оборота текущей записи, то к накопленной сумме СУММА(ЕСТЬNULL(Таб1.Оборот, 0)) нужно прибавить текущее значение Таб.Оборот | |||
| 21
    
        yalex 06.04.12✎ 16:00 | 
        (20) Да, я заметил. Спасибо вам большое!     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |