|   |   | 
| 
 | Подскажите с запросом | ☑ | ||
|---|---|---|---|---|
| 0
    
        Helg 26.12.12✎ 14:03 | 
        Есть запрос. Он выдает агентов и количество заключенных договоров. А также их систему оплаты. 
  ВЫБРАТЬ РезультатыАгентовОбороты.Агент, РезультатыАгентовОбороты.Фонд, РезультатыАгентовОбороты.ЦелевыхОборот, РезультатыАгентовОбороты.ТранзитныхОборот, СистемыОплатыАгентаСрезПоследних.СистемаОплаты, ВложенныйЗапрос.ВсегоДоговоров ИЗ РегистрНакопления.РезультатыАгентов.Обороты(&ДатаНач, &ДатаКон, , ) КАК РезультатыАгентовОбороты ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СистемыОплатыАгента.СрезПоследних(&ДатаНач, ) КАК СистемыОплатыАгентаСрезПоследних ПО РезультатыАгентовОбороты.Агент = СистемыОплатыАгентаСрезПоследних.Агент И РезультатыАгентовОбороты.Фонд = СистемыОплатыАгентаСрезПоследних.Фонд ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РезультатыАгентовОбороты.Агент КАК Агент, РезультатыАгентовОбороты.ЦелевыхОборот + РезультатыАгентовОбороты.ТранзитныхОборот КАК ВсегоДоговоров ИЗ РегистрНакопления.РезультатыАгентов.Обороты(&ДатаНач, &ДатаКон, , ) КАК РезультатыАгентовОбороты) КАК ВложенныйЗапрос ПО РезультатыАгентовОбороты.Агент = ВложенныйЗапрос.Агент И есть справочник СистемыОплаты. В нем табличная часть Пороговые значения вида: Порог СуммаОплаты 1 100 5 200 10 300. И нужно к каждой строке запроса привязать сумму оплаты за договор, сравнивая по полю запроса "ВсегоДоговоров". Т.е. что-то типа ВЫБРАТЬ ПЕРВЫЕ 1 СистемыОплатыПороговыеЗначения.Порог, СистемыОплатыПороговыеЗначения.ОплатаЦелевой, СистемыОплатыПороговыеЗначения.ОплатаТранзитный, СистемыОплатыПороговыеЗначения.Ссылка.Наименование ИЗ Справочник.СистемыОплаты.ПороговыеЗначения КАК СистемыОплатыПороговыеЗначения ГДЕ СистемыОплатыПороговыеЗначения.Порог > &Порог И СистемыОплатыПороговыеЗначения.Ссылка = &Ссылка Но как этот 2-й запрос связать с первым? Т.е. параметр Порог равен значению ВсегоДоговоров из первого запроса и параметр Ссылка равен значению СистемыОплатыАгентаСрезПоследних.СистемаОплаты из первого запроса. | |||
| 1
    
        Reset 26.12.12✎ 14:06 | 
        Связать по КоличествоВПеервомЗапросе>КоличествоВоВтором
  затем использовать агрегатную ф-ю Максимум | |||
| 2
    
        Reset 26.12.12✎ 14:07 | 
        или если "Порог равен значению ВсегоДоговоров" то на равенство, но тогда вопрос непонятен     | |||
| 3
    
        Helg 26.12.12✎ 14:10 | 
        (2) Можно и так СистемыОплатыПороговыеЗначения.Порог >= &Порог     | |||
| 4
    
        Reset 26.12.12✎ 14:10 | 
        а, прочитатл внимательней, (2) отменяется.
  и в (1) не "<" а ">" и Минимум вметос максимум | |||
| 5
    
        Helg 26.12.12✎ 14:10 | 
        (1) Сейчас попробую     | |||
| 6
    
        Helg 26.12.12✎ 14:11 | 
        Первый запрос во ВременнуюТаблицу?     | |||
| 7
    
        Reset 26.12.12✎ 14:11 | 
        не "<" а ">"
  короче зависит от условий, наклываемм на порадание меджуде "порогами" | |||
| 8
    
        Reset 26.12.12✎ 14:12 | 
        форум походу форматирует < >
  или я тупой опечатываюсь два раза | |||
| 9
    
        Reset 26.12.12✎ 14:13 | 
        наклываемм на порадание меджуде "порогами"
  ==> накладываемых на попадание между порогами я разучился печатать, поду учиться | |||
| 10
    
        Reset 26.12.12✎ 14:15 | 
        (6) Во временную, как минимум для читаемости     | |||
| 11
    
        Reset 26.12.12✎ 14:21 | 
        Выбрать Максимум(СистемыОплатыПороговыеЗначения.СуммаОплаты)
  ПО СистемыОплатыПороговыеЗначения.Ссылка = ПервыйЗапрос.СистемаОплаты И ПервыйЗапрос.ВсегоДоговоров>СистемыОплатыПороговыеЗначения.Порог Сгрупппировать по ...Список полей Будет для ВсегоДоговоров=7 выдавать СуммаОплаты 200 для приведенного примера | |||
| 12
    
        Helg 26.12.12✎ 14:46 | 
        (11) А можно как-то сделать не функцией МАКСИМУМ, а выражением ПЕРВЫЕ 1. Кто-нибудь знает как?     | |||
| 13
    
        Helg 26.12.12✎ 14:47 | 
        Лучше через ПЕРВЫЕ 1. Но как связать пока не придумал.     | |||
| 14
    
        Helg 26.12.12✎ 14:55 | 
        Кто-нибудь знает?     | |||
| 15
    
        sapphire 26.12.12✎ 14:58 | 
        (12) Нельзя.     | |||
| 16
    
        sapphire 26.12.12✎ 14:59 | 
        (14) Многие знают. Ответ НЕЛЬЗЯ.
  1С не поддерживает скалярные запросы. | |||
| 17
    
        Helg 26.12.12✎ 15:03 | 
        в SQL это было бы так
  OUTER APPLY (Select top 1 from СистемыОплатыПороговыеЗначения where ...) Оператор OUTER APPLY не поддерживается? | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |