Требуется написать запрос, возвращающий для каждого Контрагенту минимальную дату, когда сумма продаж была максимальной, и максимальную дату, когда сумма продаж была минимальной, а также суммы продаж на эти даты.
Вторые сутки мудрю.По отдельно указанному Контрагенту найти не проблема. А вот по всем контрагентам одним запросом не получается. Было испытано все: ОБЪЕДИНИТЬ, Вложенный запрос,Временные таблицы и т.д. Не помогает.
Мне хотя-бы идею.
---
Требуется написать запрос, возвращающий для каждого Контрагенту минимальную дату, когда сумма продаж была максимальной,

```1c
    // 1. Поместим все продажи по контрагентам по дням во временную таблицу
    ВЫБРАТЬ
    Продажи.Период КАК ДатаПродажи,
    Продажи.АналитикаУчетаПоПартнерам КАК Контрагент,
    Продажи.СуммаВыручкиОборот КАК СуммаПродажи
    ПОМЕСТИТЬ ПродажиПоДням
    ИЗ
    РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(, , День, ) КАК Продажи
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    // 2. Свернем таблицу продаж в разрезе контрагента и мин, макс суммы
    ВЫБРАТЬ
    ПродажиПоДням.Контрагент КАК Контрагент,
    МИНИМУМ(ПродажиПоДням.СуммаПродажи) КАК МинСуммаПродажи,
    МАКСИМУМ(ПродажиПоДням.СуммаПродажи) КАК МаксСуммаПродажи
    ПОМЕСТИТЬ МинМаксСуммы
    ИЗ
    ПродажиПоДням КАК ПродажиПоДням

    СГРУППИРОВАТЬ ПО
    ПродажиПоДням.Контрагент
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    // 3. Присоединим к свернутой таблице даты, 2 раза,

    // 1й раз по полю мин сумма продажи
    // 2й раз по полю макс сумма продажи

    // Затем свернем таблицу, к датам продажи применим функции Мин и Макс

    ВЫБРАТЬ
    МинМаксСуммы.Контрагент КАК Контрагент,
    МинМаксСуммы.МинСуммаПродажи КАК МинСуммаПродажи,
    МинМаксСуммы.МаксСуммаПродажи КАК МаксСуммаПродажи,
    МИНИМУМ(ПродажиПоДнямМин.ДатаПродажи) КАК МинДатаПродажи,
    МАКСИМУМ(ПродажиПоДнямМакс.ДатаПродажи) КАК МаксДатаПродажи
    ИЗ
    МинМаксСуммы КАК МинМаксСуммы
    // Соединим по полю МИН
    ЛЕВОЕ СОЕДИНЕНИЕ ПродажиПоДням КАК ПродажиПоДнямМакс
    ПО (МинМаксСуммы.Контрагент = ПродажиПоДнямМакс.Контрагент
    И МинМаксСуммы.МинСуммаПродажи = ПродажиПоДнямМакс.СуммаПродажи)

    // Соединим по полю МАКС
    ЛЕВОЕ СОЕДИНЕНИЕ ПродажиПоДням КАК ПродажиПоДнямМин
    ПО (МинМаксСуммы.Контрагент = ПродажиПоДнямМин.Контрагент
    И МинМаксСуммы.МаксСуммаПродажи = ПродажиПоДнямМин.СуммаПродажи)

    СГРУППИРОВАТЬ ПО
    МинМаксСуммы.Контрагент,
    МинМаксСуммы.МинСуммаПродажи,
    МинМаксСуммы.МаксСуммаПродажи
```
---
как-то так:

```1c
    ВЫБРАТЬ
    РасчетыСКлиентамиОбороты.АналитикаУчетаПоПартнерам.Контрагент КАК АналитикаУчетаПоПартнерамКонтрагент,
    РасчетыСКлиентамиОбороты.ПериодДень КАК Период,
    РасчетыСКлиентамиОбороты.СуммаПриход КАК СуммаПриход
    ПОМЕСТИТЬ ВТ_Продажи
    ИЗ
    РегистрНакопления.РасчетыСКлиентами.Обороты(, , Авто, ) КАК РасчетыСКлиентамиОбороты

    ИНДЕКСИРОВАТЬ ПО
    АналитикаУчетаПоПартнерамКонтрагент,
    СуммаПриход
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТ_Продажи.АналитикаУчетаПоПартнерамКонтрагент КАК АналитикаУчетаПоПартнерамКонтрагент,
    МИНИМУМ(ВТ_Продажи.СуммаПриход) КАК СуммаПриходМинимум,
    МАКСИМУМ(ВТ_Продажи.СуммаПриход) КАК СуммаПриходМаксимум
    ПОМЕСТИТЬ ВТ_МинМакс
    ИЗ
    ВТ_Продажи КАК ВТ_Продажи

    СГРУППИРОВАТЬ ПО
    ВТ_Продажи.АналитикаУчетаПоПартнерамКонтрагент

    ИНДЕКСИРОВАТЬ ПО
    АналитикаУчетаПоПартнерамКонтрагент
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТ_МинМакс.АналитикаУчетаПоПартнерамКонтрагент КАК АналитикаУчетаПоПартнерамКонтрагент,
    МАКСИМУМ(ВТ_Продажи.Период) КАК Период,
    NULL КАК СуммаПриходМаксимум,
    ВТ_МинМакс.СуммаПриходМинимум КАК СуммаПриходМинимум
    ИЗ
    ВТ_МинМакс КАК ВТ_МинМакс
    ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Продажи КАК ВТ_Продажи
    ПО (ВТ_МинМакс.АналитикаУчетаПоПартнерамКонтрагент = ВТ_Продажи.АналитикаУчетаПоПартнерамКонтрагент)
    И (ВТ_МинМакс.СуммаПриходМинимум = ВТ_Продажи.СуммаПриход)

    СГРУППИРОВАТЬ ПО
    ВТ_МинМакс.АналитикаУчетаПоПартнерамКонтрагент,
    ВТ_МинМакс.СуммаПриходМинимум

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    ВТ_МинМакс.АналитикаУчетаПоПартнерамКонтрагент,
    МИНИМУМ(ВТ_Продажи.Период),
    ВТ_МинМакс.СуммаПриходМаксимум,
    NULL
    ИЗ
    ВТ_МинМакс КАК ВТ_МинМакс
    ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Продажи КАК ВТ_Продажи
    ПО ВТ_МинМакс.АналитикаУчетаПоПартнерамКонтрагент = ВТ_Продажи.АналитикаУчетаПоПартнерамКонтрагент
    И ВТ_МинМакс.СуммаПриходМаксимум = ВТ_Продажи.СуммаПриход

    СГРУППИРОВАТЬ ПО
    ВТ_МинМакс.АналитикаУчетаПоПартнерамКонтрагент,
    ВТ_МинМакс.СуммаПриходМаксимум

    УПОРЯДОЧИТЬ ПО
    АналитикаУчетаПоПартнерамКонтрагент,
    СуммаПриходМинимум,
    СуммаПриходМаксимум
```
---
(4)

Почти идеально. По условию отдельно должна быть видна МИНИМАЛЬНАЯ ДАТА, когда сумма продаж была максимальной, и МАКСИМАЛЬНАЯ ДАТА, когда сумма продаж была минимальной.
---
это просто получить уже из существующего кода.
---
Требуется написать запрос, возвращающий для каждого Контрагенту минимальную дату, когда сумма продаж была максимальной,

```1c
    // 1. Поместим все продажи по контрагентам по дням во временную таблицу
    ВЫБРАТЬ
    Продажи.Период КАК ДатаПродажи,
    Продажи.АналитикаУчетаПоПартнерам КАК Контрагент,
    Продажи.СуммаВыручкиОборот КАК СуммаПродажи
    ПОМЕСТИТЬ ПродажиПоДням
    ИЗ
    РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(, , День, ) КАК Продажи
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    // 2. Свернем таблицу продаж в разрезе контрагента и мин, макс суммы
    ВЫБРАТЬ
    ПродажиПоДням.Контрагент КАК Контрагент,
    МИНИМУМ(ПродажиПоДням.СуммаПродажи) КАК МинСуммаПродажи,
    МАКСИМУМ(ПродажиПоДням.СуммаПродажи) КАК МаксСуммаПродажи
    ПОМЕСТИТЬ МинМаксСуммы
    ИЗ
    ПродажиПоДням КАК ПродажиПоДням

    СГРУППИРОВАТЬ ПО
    ПродажиПоДням.Контрагент
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    // 3. Присоединим к свернутой таблице даты, 2 раза,

    // 1й раз по полю мин сумма продажи
    // 2й раз по полю макс сумма продажи

    // Затем свернем таблицу, к датам продажи применим функции Мин и Макс

    ВЫБРАТЬ
    МинМаксСуммы.Контрагент КАК Контрагент,
    МинМаксСуммы.МинСуммаПродажи КАК МинСуммаПродажи,
    МинМаксСуммы.МаксСуммаПродажи КАК МаксСуммаПродажи,
    МИНИМУМ(ПродажиПоДнямМин.ДатаПродажи) КАК МинДатаПродажи,
    МАКСИМУМ(ПродажиПоДнямМакс.ДатаПродажи) КАК МаксДатаПродажи
    ИЗ
    МинМаксСуммы КАК МинМаксСуммы
    // Соединим по полю МИН
    ЛЕВОЕ СОЕДИНЕНИЕ ПродажиПоДням КАК ПродажиПоДнямМакс
    ПО (МинМаксСуммы.Контрагент = ПродажиПоДнямМакс.Контрагент
    И МинМаксСуммы.МинСуммаПродажи = ПродажиПоДнямМакс.СуммаПродажи)

    // Соединим по полю МАКС
    ЛЕВОЕ СОЕДИНЕНИЕ ПродажиПоДням КАК ПродажиПоДнямМин
    ПО (МинМаксСуммы.Контрагент = ПродажиПоДнямМин.Контрагент
    И МинМаксСуммы.МаксСуммаПродажи = ПродажиПоДнямМин.СуммаПродажи)

    СГРУППИРОВАТЬ ПО
    МинМаксСуммы.Контрагент,
    МинМаксСуммы.МинСуммаПродажи,
    МинМаксСуммы.МаксСуммаПродажи
```
---
Уточните эти максимумы и минимумы надо за определенный период найти?
---
В идеале за период. Но мне хотя-бы просто подход к решению. Я так понимаю период в выборку добавить будет не проблема в дальнейшем....
---
Выбрать минимум и максимум сумм по контрагенту, соединить с таблицей контрагентов, сумм и дат по контрагенту и сумме, выбрать из результата максимум и минимум дат по контрагенту.
---
Нужна не просто максимальная и минимальная дата, а минимальная дата, когда сумма продаж была максимальной, и максимальная дата, когда сумма продаж была минимальной
---
Два раза отсортировать вашу временную таблицу. Первый раз по значениям Продажи по возрастанию даты по убыванию. Верхняя строка и будет ваша максимальная продажа минимальная дата. Второй раз сортируйте по Продажи по убыванию даты по возрастанию и верхней строке получите максимальную дату с минимальной продажей.