Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Подскажите с запросом

Подскажите с запросом
Я
   Helg
 
26.12.12 - 14:03
Есть запрос. Он выдает агентов и количество заключенных договоров. А также их систему оплаты.

ВЫБРАТЬ
   РезультатыАгентовОбороты.Агент,
    РезультатыАгентовОбороты.Фонд,
    РезультатыАгентовОбороты.ЦелевыхОборот,
    РезультатыАгентовОбороты.ТранзитныхОборот,
    СистемыОплатыАгентаСрезПоследних.СистемаОплаты,
   ВложенныйЗапрос.ВсегоДоговоров
ИЗ
    РегистрНакопления.РезультатыАгентов.Обороты(&ДатаНач, &ДатаКон, , ) КАК РезультатыАгентовОбороты
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СистемыОплатыАгента.СрезПоследних(&ДатаНач, ) КАК СистемыОплатыАгентаСрезПоследних
        ПО РезультатыАгентовОбороты.Агент = СистемыОплатыАгентаСрезПоследних.Агент
            И РезультатыАгентовОбороты.Фонд = СистемыОплатыАгентаСрезПоследних.Фонд
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            РезультатыАгентовОбороты.Агент КАК Агент,
            РезультатыАгентовОбороты.ЦелевыхОборот + РезультатыАгентовОбороты.ТранзитныхОборот КАК ВсегоДоговоров
        ИЗ
            РегистрНакопления.РезультатыАгентов.Обороты(&ДатаНач, &ДатаКон, , ) КАК РезультатыАгентовОбороты) КАК ВложенныйЗапрос
        ПО РезультатыАгентовОбороты.Агент = ВложенныйЗапрос.Агент

И есть справочник СистемыОплаты. В нем табличная часть Пороговые значения вида:

Порог    СуммаОплаты
1             100
5             200
10            300.

И нужно к каждой строке запроса привязать сумму оплаты за договор, сравнивая по полю запроса "ВсегоДоговоров".
Т.е. что-то типа 
ВЫБРАТЬ ПЕРВЫЕ 1
    СистемыОплатыПороговыеЗначения.Порог,
    СистемыОплатыПороговыеЗначения.ОплатаЦелевой,
    СистемыОплатыПороговыеЗначения.ОплатаТранзитный,
   СистемыОплатыПороговыеЗначения.Ссылка.Наименование
ИЗ
    Справочник.СистемыОплаты.ПороговыеЗначения КАК СистемыОплатыПороговыеЗначения
ГДЕ
    СистемыОплатыПороговыеЗначения.Порог > &Порог
    И СистемыОплатыПороговыеЗначения.Ссылка = &Ссылка

Но как этот 2-й запрос связать с первым?
Т.е. параметр Порог равен значению ВсегоДоговоров из первого запроса и параметр Ссылка равен значению СистемыОплатыАгентаСрезПоследних.СистемаОплаты из первого запроса.
 
 
   Reset
 
1 - 26.12.12 - 14:06
Связать по КоличествоВПеервомЗапросе>КоличествоВоВтором
затем использовать агрегатную ф-ю Максимум
   Reset
 
2 - 26.12.12 - 14:07
или если "Порог равен значению ВсегоДоговоров" то на равенство, но тогда вопрос непонятен
   Helg
 
3 - 26.12.12 - 14:10
(2) Можно и так СистемыОплатыПороговыеЗначения.Порог >= &Порог
   Reset
 
4 - 26.12.12 - 14:10
а, прочитатл внимательней, (2) отменяется.

и в (1) не "<" а ">" и Минимум вметос максимум
   Helg
 
5 - 26.12.12 - 14:10
(1) Сейчас попробую
   Helg
 
6 - 26.12.12 - 14:11
Первый запрос во ВременнуюТаблицу?
   Reset
 
7 - 26.12.12 - 14:11
не "<" а ">"

короче зависит от условий, наклываемм на порадание меджуде "порогами"
   Reset
 
8 - 26.12.12 - 14:12
форум походу форматирует < >
или я тупой опечатываюсь два раза
   Reset
 
9 - 26.12.12 - 14:13
наклываемм на порадание меджуде "порогами"
==>
накладываемых на попадание между порогами

я разучился печатать, поду учиться
   Reset
 
10 - 26.12.12 - 14:15
(6) Во временную, как минимум для читаемости
 
 Рекламное место пустует
   Reset
 
11 - 26.12.12 - 14:21
Выбрать Максимум(СистемыОплатыПороговыеЗначения.СуммаОплаты)

ПО
СистемыОплатыПороговыеЗначения.Ссылка = ПервыйЗапрос.СистемаОплаты
И
ПервыйЗапрос.ВсегоДоговоров>СистемыОплатыПороговыеЗначения.Порог

Сгрупппировать по
...Список полей

Будет для ВсегоДоговоров=7 выдавать СуммаОплаты 200
для приведенного примера
   Helg
 
12 - 26.12.12 - 14:46
(11) А можно как-то сделать не функцией МАКСИМУМ, а выражением ПЕРВЫЕ 1. Кто-нибудь знает как?
   Helg
 
13 - 26.12.12 - 14:47
Лучше через ПЕРВЫЕ 1. Но как связать пока не придумал.
   Helg
 
14 - 26.12.12 - 14:55
Кто-нибудь знает?
   sapphire
 
15 - 26.12.12 - 14:58
(12) Нельзя.
   sapphire
 
16 - 26.12.12 - 14:59
(14) Многие знают. Ответ НЕЛЬЗЯ.
1С не поддерживает скалярные запросы.
   Helg
 
17 - 26.12.12 - 15:03
в SQL это было бы так
OUTER APPLY
(Select top 1
from СистемыОплатыПороговыеЗначения
where ...)

Оператор OUTER APPLY не поддерживается?

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует