Добрый день. Подскажите как решить не совсем тривиальную задачку.
В запросе есть временная таблица с данными и мне необходимо получить первые несколько максимальных значений. т.е.

товар количество
Тов1 - 3
тов2 - 7
Тов3 - 10
Тов4 - 5
Тов5 - 6
Тов6 - 10
Тов7 - 1

необходимо получить 5 макс значений из этой таблицы, но если значения одинаковые, то идут как одна строка
нужно привести к след виду:

Тов1 - 3
тов2 - 7
Тов3 - 10
Тов4 - 5
Тов5 - 6
Тов6 - 10

т.к. Тов3 и Тов6 одинаковое количество, берем за одно макс значение
---
Упс. подтер "Поместить ВТ_Данные" в первом пакете. Должно быть:

```1c
    ВЫБРАТЬ "Тов1" КАК Товар, 3 КАК Количество
    ПОМЕСТИТЬ ВТ_Данные
    ОБЪЕДИНИТЬ ВЫБРАТЬ "Тов2", 7
    ОБЪЕДИНИТЬ ВЫБРАТЬ "Тов3", 10
    ОБЪЕДИНИТЬ ВЫБРАТЬ "Тов4", 5
    ОБЪЕДИНИТЬ ВЫБРАТЬ "Тов5", 6
    ОБЪЕДИНИТЬ ВЫБРАТЬ "Тов6", 10
    ОБЪЕДИНИТЬ ВЫБРАТЬ "Тов7", 1
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ РАЗЛИЧНЫЕ ПЕРВЫЕ 5
    ВТ_Данные.Количество КАК Количество
    ПОМЕСТИТЬ ВТ_Максимальные
    ИЗ
    ВТ_Данные КАК ВТ_Данные

    УПОРЯДОЧИТЬ ПО
    Количество УБЫВ
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТ_Данные.Товар,
    ВТ_Данные.Количество
    ИЗ
    ВТ_Данные КАК ВТ_Данные
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Максимальные КАК ВТ_Максимальные
    ПО ВТ_Данные.Количество = ВТ_Максимальные.Количество
```
---
То есть вам не важна информация Тов3 или Тов6...?
Тогда группируйте сначала по значению , свернутся одинаковые 10,
Сортируйте опять же по значяениям с убыванием и берите первые 5.
Все.....
---
(4) я не могу упорядочить, это будет временной таблицей
---
не упорядочивайте, выбирайте все, перед выводом упорядочите и ограничите...
---
Я бы как нибудь так решил эту задачу
Справочник товаров и РН остатков поменяйте на ваши значения.

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

    СГРУППИРОВАТЬ ПО
    Товары.Наименование,
    СвободныеОстаткиОстатки.ВНаличииОстаток

    УПОРЯДОЧИТЬ ПО
    ВНаличииОстаток УБЫВ
```
---
.ВНаличииОстаток КАК ВНаличииОстаток
ИЗ
Учитывая что виртуальная таблица "Остатки" по-умолчанию максимально сгруппирована, то группировку вы лишнюю прилепили. Можно тогда только сортировку сразу ставить.
---
Да, согласен, ;)
ЗЫ Утро, кофе сварил, но еще не налил ....;))
---
1. Группировка по значению
2. Сортировка
3. Выбор первых 5
4. Внутреннее соединение с первоначальной таблицей по значению

UPD: не заметил, что ВТ..
---
я уже несколько раз писал как решать такие задачи без костылей если релиз платформы у вас не совсем древний.

https://forum.infostart.ru/forum9/topic219888/
---
Нужно именно получить 5 ссылок на товары у которых максимальное количество товара? Или нужно просто получить первые 5 цифр "КоличествоОстаток" которые будут не повторяющимися и максимальными по отношению ко всем следующим?
---
Нужно получить первые 5 максимальных значений, но если какие-то значения повторяются, то значит уже не 5, а 6, как в примере выше
---
Тогда мой примерчик не подойдет. ;)
---
а еще вы не читаете уже выше предложенные методики и банально повторяетесь...
---
посмотрите на время созданных предложений, оно практически совпадает, и когда я вставлял ответ сообщений еще не было а теме... сорри, если вас это раздражает...
---
Да нет, просто если бы был вариант с упорядочиванием, то я бы тему не создал, я может не семи пядей во лбу, но и не совсем тупой =)
---
Я не могу УПОРЯДОЧИВАТЬ, это временная таблица для последующего левого соединения
---
выполните запрос а затем поместите его в таблицу
А если хотите очень помощи, то можно было бы и запрос в студию... а то по ходу предложений вы изменяете условия...
---
Тупой вариант - получаем максимальное значение, потом с ним левое соединение основной таблицы с отбором по полю левой таблицы равному NULL. Дальше снова то же самое, так 5 раз. Так получим 5 таблиц с максимальными значениями. Ну а потом уже с ними соединять основную таблицу.
---
к вашему сведению Временные таблицы прекрасно упорядочиваются...!!

Вот например прекрасно работает

```1c
    ВЫБРАТЬ первые 1000
    Номенклатура.Ссылка КАК Номенклатура,
    Номенклатура.Ссылка.Наименование Как Нам
    ПОМЕСТИТЬ ВТ
    ИЗ
    Справочник.Контрагенты КАК Номенклатура
    УПОРЯДОЧИТЬ ПО Нам Убыв
    ;
```

Вместо 1000 поставьте любое число гарантированно превышающее число ваших записей
---
Кучей является таблица без кластеризованного индекса. Для таблиц, сохраненных как куча, может быть создан один или несколько некластеризованных индексов. Данные хранятся в куче без указания порядка. Обычно данные первоначально сохраняются в порядке, в котором строки вставлены в таблицу, но компонент Компонент Database Engine может перемещать данные в куче для более эффективного хранения строк. Поэтому порядок данных нельзя прогнозировать. Чтобы гарантировать порядок строк, возвращаемых из кучи, необходимо использовать предложение ORDER BY. Чтобы указать постоянный логический порядок хранения строк, создайте кластеризованный индекс для таблицы, чтобы таблица не была кучей.

https://docs.microsoft.com/ru-ru/sql/relational-databases/indexes/heaps-tables-without-clustered-indexes?view=sql-server-ver15
---
```1c
    ВЫБРАТЬ Максимум(ВТ_Исх.Значение) КАК Значение ПОМЕСТИТЬ ВТ_Макс1 ИЗ ВТ_Исх;

    ВЫБРАТЬ * ПОМЕСТИТЬ ВТ_БезМакс1 ИЗ ВТ_ИСХ Левое Соединение ВТ_Макс1 ПО ВТ_ИСХ.Значение = ВТ_Макс1.Значение ГДЕ ВТ_Макс1.Значение ЕСТЬ NULL;

    ВЫБРАТЬ Максимум(ВТ_БезМакс1 .Значение) КАК Значение ПОМЕСТИТЬ ВТ_Макс2 ИЗ ВТ_БезМакс1 ;

    ВЫБРАТЬ * ПОМЕСТИТЬ ВТ_БезМакс2 ИЗ ВТ_БезМакс1 Левое Соединение ВТ_Макс2 ПО ВТ_БезМакс1 .Значение = ВТ_Макс2 .Значение ГДЕ ВТ_Макс2 .Значение ЕСТЬ NULL;
    ...
    ...
    ...
    ВЫБРАТЬ * ИЗ ВТ_Исх ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Макс1 ПО ВТ_ИСХ.Значение = ВТ_Макс1.Значение
    ОБЪЕДИНИТЬ ВСЕ
    ВЫБРАТЬ * ИЗ ВТ_Исх ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Макс2 ПО ВТ_ИСХ.Значение = ВТ_Макс2.Значение
    ...
    ...
    ...
```
---
а если 6 строк получится ил 8 или 100 ? Повторяющиеся значения идут как одна позиция
---
Не понял что значит 6, 8 или 100?
Мы выбрали 5 максимальных значений, потом соединили с основной таблицей, получили хоть тысячу строк, но значения у всех будут 5-ю максимальными.
---
Ааа, сорян, думал предлагаешь столько ВТ делать сколько надо значений)
Интересный вариант, опробую.
---
Ага. Чуть-чуть подредактировал запрос, изначально не совсем корректно было.
---
Итоговый запрос. Где после пятого максимума по найденным числам ищзем сроки. Елси это надо

```1c
    ВЫБРАТЬ
    ВЫРАЗИТЬ(Товары.Товар КАК Строка(20)) КАК Товар,
    Товары.Количество КАК Количество
    ПОМЕСТИТЬ ВТ_ИсходнаяТаблица
    ИЗ
    &Товары КАК Товары
    ;

    ВЫБРАТЬ
    МАКСИМУМ(ВТ_ИсходнаяТаблица.Количество) КАК Количество
    ПОМЕСТИТЬ ВТ_ПервыйМаксимум
    Из
    ВТ_ИсходнаяТаблица КАК ВТ_ИсходнаяТаблица
    ;

    ВЫБРАТЬ
    МАКСИМУМ(ВТ_ИсходнаяТаблица.Количество) КАК Количество
    ПОМЕСТИТЬ ВТ_ВторойМаксимум
    ИЗ
    ВТ_ИсходнаяТаблица КАК ВТ_ИсходнаяТаблица
    ГДЕ
    НЕ ВТ_ИсходнаяТаблица.Количество В (Выбрать ВТ_ПервыйМаксимум.Количество из ВТ_ПервыйМаксимум КАК ВТ_ПервыйМаксимум)
    ОБЪЕДИНИТЬ
    ВЫБРАТЬ
    ВТ_ПервыйМаксимум.Количество КАК Количество
    Из
    ВТ_ПервыйМаксимум КАК ВТ_ПервыйМаксимум

    ;

    ВЫБРАТЬ
    МАКСИМУМ(ВТ_ИсходнаяТаблица.Количество) КАК Количество
    ПОМЕСТИТЬ ВТ_ТретийМаксимум
    ИЗ
    ВТ_ИсходнаяТаблица КАК ВТ_ИсходнаяТаблица
    ГДЕ
    НЕ ВТ_ИсходнаяТаблица.Количество В (Выбрать ВТ_ВторойМаксимум.Количество из ВТ_ВторойМаксимум КАК ВТ_ВторойМаксимум)
    ОБЪЕДИНИТЬ
    ВЫБРАТЬ
    ВТ_ВторойМаксимум.Количество КАК Количество
    Из
    ВТ_ВторойМаксимум КАК ВТ_ВторойМаксимум

    ;

    ВЫБРАТЬ
    МАКСИМУМ(ВТ_ИсходнаяТаблица.Количество) КАК Количество
    ПОМЕСТИТЬ ВТ_ЧетвертыйМаксимум
    ИЗ
    ВТ_ИсходнаяТаблица КАК ВТ_ИсходнаяТаблица
    ГДЕ
    НЕ ВТ_ИсходнаяТаблица.Количество В (Выбрать ВТ_ТретийМаксимум.Количество из ВТ_ТретийМаксимум КАК ВТ_ТретийМаксимум)
    ОБЪЕДИНИТЬ
    ВЫБРАТЬ
    ВТ_ТретийМаксимум.Количество КАК Количество
    Из
    ВТ_ТретийМаксимум КАК ВТ_ТретийМаксимум

    ;

    ВЫБРАТЬ
    МАКСИМУМ(ВТ_ИсходнаяТаблица.Количество) КАК Количество
    ПОМЕСТИТЬ ВТ_ПятыйМаксимум
    ИЗ
    ВТ_ИсходнаяТаблица КАК ВТ_ИсходнаяТаблица
    ГДЕ
    НЕ ВТ_ИсходнаяТаблица.Количество В (Выбрать ВТ_ЧетвертыйМаксимум.Количество из ВТ_ЧетвертыйМаксимум КАК ВТ_ЧетвертыйМаксимум)
    ОБЪЕДИНИТЬ
    ВЫБРАТЬ
    ВТ_ЧетвертыйМаксимум.Количество КАК Количество
    Из
    ВТ_ЧетвертыйМаксимум КАК ВТ_ЧетвертыйМаксимум

    ;

    ВЫБРАТЬ
    ВТ_ПятыйМаксимум.Количество Количество,
    ВТ_ИсходнаяТаблица.Товар КАК Товар
    Из
    ВТ_ПятыйМаксимум КАК ВТ_ПятыйМаксимум
    ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ИсходнаяТаблица КАК ВТ_ИсходнаяТаблица
    ПО ВТ_ИсходнаяТаблица.Количество = ВТ_ПятыйМаксимум.Количество
```
---
```1c
    выбрать
    Товары.Товар КАК Товар,
    Товары.Количество КАК Количество
    ПОМЕСТИТЬ ВТ_ТАБ
    Из
    &Товары КАК Товары
    ;

    Выбрать
    МАКСИМУМ(ВТ_Таблица.Количество) КАК Количество
    ПОМЕСТИТЬ ВТ_ПервыйМаксимум
    Из
    ВТ_ТАБ КАК ВТ_Таблица
    ;
    Выбрать
    МАКСИМУМ(ВТ_Таблица.Количество) КАК Количество
    ПОМЕСТИТЬ ВТ_ВторойМаксимум
    Из
    ВТ_ТАБ КАК ВТ_Таблица
    ГДЕ
    НЕ ВТ_Таблица.Количество В (Выбрать ВТ_ПервыйМаксимум.Количество из ВТ_ПервыйМаксимум КАК ВТ_ПервыйМаксимум)
    ОБЪЕДИНИТЬ
    Выбрать
    ВТ_ПервыйМаксимум.Количество КАК Количество
    Из
    ВТ_ПервыйМаксимум КАК ВТ_ПервыйМаксимум

    ;

    Выбрать
    МАКСИМУМ(ВТ_Таблица.Количество) КАК Количество
    ПОМЕСТИТЬ ВТ_ТретийМаксимум
    Из
    ВТ_ТАБ КАК ВТ_Таблица
    ГДЕ
    НЕ ВТ_Таблица.Количество В (Выбрать ВТ_ВторойМаксимум.Количество из ВТ_ВторойМаксимум КАК ВТ_ВторойМаксимум)
    ОБЪЕДИНИТЬ
    Выбрать
    ВТ_ВторойМаксимум.Количество КАК Количество
    Из
    ВТ_ВторойМаксимум КАК ВТ_ВторойМаксимум
```

И Так далее до ВТ_ПятыйМаксимум
---
Что-то уж очень вы перемудрили....
---
Потому что я сначала уточнил всю соль задачи)). Плюс вы забыли что УПОРЯДОЧИТЬ в временной таблице не работает).
---
""УПОРЯДОЧИТЬ в временной таблице не работает).""
Кто вам сказал такую глупость?
Выполните мой запрос и убедитесь что ВСЕ работает!
---
ВСЕ работает
Только если вы используете ПЕРВЫЕ. Но ПЕРВЫЕ по условию задачи не подходит для решения.
---
Значит вы не умеете использовать ВСЕ возможности 1С запросов!
Где написано в условии , что нельзя применить
ВЫБРАТЬ ПЕРВЫЕ 1000000000000000000000000000 ???
Вот то же...
---
И вообще выполните запрос из (30) и убедитесь...
---
и убедитесь

Хахахаха. Суть в том что вы хоть триллиард первых используйте, прикол у задачи в том что строки с количеством 10 должно получиться две). Потому что одинаковые "максималки" надо накапливать. Это отсекает ИМХО смысл использования ПЕРВЫЕ, хотя может его можно еще как то для этой задачи применить, но с группировкой он не даст результат, который нужен по условию. Однако, посмотрим. ТС в итоге рассудит).

Цитата:

Нужно получить первые 5 максимальных значений, но если какие-то значения повторяются, то значит уже не 5, а 6, как в примере выше
---
Вы банально еще и читать не умеете!
Я же сказал ВЫПОЛНИТЕ запрос из (30) не с потолка а из (30)!!!
там и картинки есть для тех кто не умеет консолью пользоваться...
Но повторю картинку с 6 строками в Результате

Может хватит гордыню тешить?
---
Да, круто. Локанично и правильный результат. Соединения я бы иначе сделал, чтобы на нулл не проверять лишний раз. Но тоже круто).
---
Поделитесь своим вариантом соединения .
Я так с удовольствием увижу исправления слабых мест своего варианта
---
Левое заменить на внутреннее и можно убрать проверку на не NULL
---
Да спасибо...
Я просто очень люблю именно левые соединения. С ними все ясно и подконтрольно и можно увидеть при разработке что будем отбрасывать, а внутреннее недолюбливаю.
Но безусловно ВНУТРЕННЕЕ - верно
---
Да не это так ерунда. Если тут соединить наоборот, то на Нулл проверка будет не нужна.

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

```1c
    ВЫБРАТЬ
    "Тов1" КАК ТОВ,
    3 КАК Значение
    ПОМЕСТИТЬ ВТ_Исходная

    ОБЪЕДИНИТЬ ВСЕ
    ВЫБРАТЬ первые 1000
    "Тов2" КАК ТОВ,
    7 КАК Значение

    ОБЪЕДИНИТЬ ВСЕ
    ВЫБРАТЬ первые 1000
    "Тов3" КАК ТОВ,
    10 КАК Значение

    ОБЪЕДИНИТЬ ВСЕ
    ВЫБРАТЬ первые 1000
    "Тов4" КАК ТОВ,
    5 КАК Значение

    ОБЪЕДИНИТЬ ВСЕ
    ВЫБРАТЬ первые 1000
    "Тов5" КАК ТОВ,
    6 КАК Значение

    ОБЪЕДИНИТЬ ВСЕ
    ВЫБРАТЬ первые 1000
    "Тов6" КАК ТОВ,
    10 КАК Значение

    ОБЪЕДИНИТЬ ВСЕ
    ВЫБРАТЬ первые 1000
    "Тов7" КАК ТОВ,
    1 КАК Значение
    ;
    Выбрать ПЕРВЫЕ 5
    МАКСИМУМ(ТОВ) КАК ТОВ,
    Значение
    ПОМЕСТИТЬ ВТ_УПОРЯДОЧЕННАЯ
    Из ВТ_Исходная
    СГРУППИРОВАТЬ ПО Значение
    УПОРЯДОЧИТЬ ПО Значение УБЫВ
```
---
Тов3 тоже должен был вывестись)
---
Значит дописываем еще немного

```1c
    ВЫБРАТЬ
    "Тов1" КАК ТОВ,
    3 КАК Значение
    ПОМЕСТИТЬ ВТ_Исходная

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

    ВЫБРАТЬ
    "Тов2",
    7

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

    ВЫБРАТЬ
    "Тов3",
    10

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

    ВЫБРАТЬ
    "Тов4",
    5

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

    ВЫБРАТЬ
    "Тов5",
    6

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

    ВЫБРАТЬ
    "Тов6",
    10

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

    ВЫБРАТЬ
    "Тов7",
    1
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ ПЕРВЫЕ 5
    МАКСИМУМ(ВТ_Исходная.ТОВ) КАК ТОВ,
    ВТ_Исходная.Значение КАК Значение
    ПОМЕСТИТЬ ВТ_УПОРЯДОЧЕННАЯ
    ИЗ
    ВТ_Исходная КАК ВТ_Исходная

    СГРУППИРОВАТЬ ПО
    ВТ_Исходная.Значение

    УПОРЯДОЧИТЬ ПО
    ВТ_Исходная.Значение УБЫВ
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ ПЕРВЫЕ 10000000000
    ВТ_Исходная.ТОВ КАК ТОВ,
    ВТ_Исходная.Значение КАК Значение

    ПОМЕСТИТЬ ВТ_РЕЗУЛЬТАТ
    ИЗ
    ВТ_Исходная КАК ВТ_Исходная
    ЛЕВОЕ СОЕДИНЕНИЕ ВТ_УПОРЯДОЧЕННАЯ КАК ВТ_УПОРЯДОЧЕННАЯ
    ПО (ВТ_УПОРЯДОЧЕННАЯ.Значение = ВТ_Исходная.Значение)
    ГДЕ ВТ_УПОРЯДОЧЕННАЯ.Значение IS NOT NULL
    УПОРЯДОЧИТЬ ПО
    ВТ_Исходная.ТОВ
```
---
Ну вы, блин, даёте.
Вот решение:

```1c
    ВЫБРАТЬ "Тов1" КАК Товар, 3 КАК Количество
    ОБЪЕДИНИТЬ ВЫБРАТЬ "Тов2", 7
    ОБЪЕДИНИТЬ ВЫБРАТЬ "Тов3", 10
    ОБЪЕДИНИТЬ ВЫБРАТЬ "Тов4", 5
    ОБЪЕДИНИТЬ ВЫБРАТЬ "Тов5", 6
    ОБЪЕДИНИТЬ ВЫБРАТЬ "Тов6", 10
    ОБЪЕДИНИТЬ ВЫБРАТЬ "Тов7", 1
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ РАЗЛИЧНЫЕ ПЕРВЫЕ 5
    ВТ_Данные.Количество КАК Количество
    ПОМЕСТИТЬ ВТ_Максимальные
    ИЗ
    ВТ_Данные КАК ВТ_Данные

    УПОРЯДОЧИТЬ ПО
    Количество УБЫВ
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТ_Данные.Товар,
    ВТ_Данные.Количество
    ИЗ
    ВТ_Данные КАК ВТ_Данные
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Максимальные КАК ВТ_Максимальные
    ПО ВТ_Данные.Количество = ВТ_Максимальные.Количество
```
---
Вы проснулись ?
Доброе утро!
Уже все придумано до вас - читайте логи!
---
Действительно.
Одно замечание
В Вашем примере
"МАКСИМУМ(ВТ_Исходная.ТОВ) КАК ТОВ," - совершенно лишнее
Это где Вы создаёте временную таблицу "ВТ_УПОРЯДОЧЕННАЯ"

Также "ПЕРВЫЕ 10000000000" не нужно в последнем пакете, где создается временная таблица "ВТ_РЕЗУЛЬТАТ"
---
Ваш вариант тоже хорош!
Он еще проще моего ...
Я исходил, чтобы в Упорядоченной таблице хоть как-то сохранить значения Тов (на всякий случай).
Но если оно не нужно, то конечно можно еще упростить по вашему
---
Упс. подтер "Поместить ВТ_Данные" в первом пакете. Должно быть:

```1c
    ВЫБРАТЬ "Тов1" КАК Товар, 3 КАК Количество
    ПОМЕСТИТЬ ВТ_Данные
    ОБЪЕДИНИТЬ ВЫБРАТЬ "Тов2", 7
    ОБЪЕДИНИТЬ ВЫБРАТЬ "Тов3", 10
    ОБЪЕДИНИТЬ ВЫБРАТЬ "Тов4", 5
    ОБЪЕДИНИТЬ ВЫБРАТЬ "Тов5", 6
    ОБЪЕДИНИТЬ ВЫБРАТЬ "Тов6", 10
    ОБЪЕДИНИТЬ ВЫБРАТЬ "Тов7", 1
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ РАЗЛИЧНЫЕ ПЕРВЫЕ 5
    ВТ_Данные.Количество КАК Количество
    ПОМЕСТИТЬ ВТ_Максимальные
    ИЗ
    ВТ_Данные КАК ВТ_Данные

    УПОРЯДОЧИТЬ ПО
    Количество УБЫВ
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТ_Данные.Товар,
    ВТ_Данные.Количество
    ИЗ
    ВТ_Данные КАК ВТ_Данные
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Максимальные КАК ВТ_Максимальные
    ПО ВТ_Данные.Количество = ВТ_Максимальные.Количество
```
---
Безусловно хорошо.
Единственное добавление, результат требуется во временной Таблице.
---
Элегантное решение, но у меня изменились условия и оно теперь не актуалочка) может подскажите к такому варианту что можно сделать?

Есть запрос по регистру продаж со след полями: РодительНом, Сезон, ХарактеристикаНоменклатуры, Количество
Получаем подобную таблицу:
Ном1 - Сезон1 - Харка1 - 10 шт.
Ном1 - Сезон1 - Харка2 - 5 шт.
Ном1 - Сезон1 - Харка3 - 5 шт.
Ном1 - Сезон1 - Харка4 - 1 шт.
Ном1 - Сезон2 - Харка5 - 8 шт.
Ном1 - Сезон2 - Харка6 - 3 шт.
Ном1 - Сезон2 - Харка7 - 5 шт.
Ном1 - Сезон2 - Харка8 - 4 шт.
Ном2 - Сезон1 - Харка9 - 7 шт.
Ном2 - Сезон1 - Харка10 - 7 шт.
Ном2 - Сезон1 - Харка11 - 5 шт.
Ном2 - Сезон1 - Харка12 - 4 шт.

Нужно получить по первым двум группировкам 2 максимального значения количества, но если кол-ва одинаковые то считаем их как за одно т.е.
на выходе получаем:
Ном1 - Сезон1 - Харка1 - 10 шт.
Ном1 - Сезон1 - Харка2 - 5 шт.
Ном1 - Сезон1 - Харка3 - 5 шт.

Ном1 - Сезон2 - Харка5 - 8 шт.
Ном1 - Сезон2 - Харка7 - 5 шт.

Ном2 - Сезон1 - Харка9 - 7 шт.
Ном2 - Сезон1 - Харка10 - 7 шт.
Ном2 - Сезон1 - Харка11 - 5 шт.
---
Харка3

Тогда вам нужно получить максимум два раза.
1) просто максимум с группировкой.
2) максимум с группировкой, но меньше первого. (см. после "объединить" в третьем пакете.
Условие соединения : "И ВТ_Данные.Количество < ВТ_Максимум.Количество" как раз для получения предмаксимального значения)

Затем исходные данные соеднинить по группировочным полям и количеству (максимальное и предмаксимальное).
Всё вместе будет выглядеть примерно так:

```1c
    выбрать "Ном1" как РодительНом, "Сезон1" как Сезон, "Харка1" как ХарактеристикаНоменклатуры, 10 как Количество
    поместить ВТ_Данные
    объединить выбрать "Ном1" , "Сезон1" , "Харка2" , 5
    объединить выбрать "Ном1" , "Сезон1" , "Харка3" , 5
    объединить выбрать "Ном1" , "Сезон1" , "Харка4" , 1
    объединить выбрать "Ном1" , "Сезон2" , "Харка5" , 8
    объединить выбрать "Ном1" , "Сезон2" , "Харка6" , 3
    объединить выбрать "Ном1" , "Сезон2" , "Харка7" , 5
    объединить выбрать "Ном1" , "Сезон2" , "Харка8" , 4
    объединить выбрать "Ном2" , "Сезон1" , "Харка9" , 7
    объединить выбрать "Ном2" , "Сезон1" , "Харка10" , 7
    объединить выбрать "Ном2" , "Сезон1" , "Харка11" , 5
    объединить выбрать "Ном2" , "Сезон1" , "Харка12" , 4
    ;
    ВЫБРАТЬ
    ВТ_Данные.РодительНом,
    ВТ_Данные.Сезон,
    МАКСИМУМ(ВТ_Данные.Количество) КАК Количество
    ПОМЕСТИТЬ ВТ_Максимум
    ИЗ
    ВТ_Данные КАК ВТ_Данные

    СГРУППИРОВАТЬ ПО
    ВТ_Данные.РодительНом,
    ВТ_Данные.Сезон
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТ_Максимум.РодительНом,
    ВТ_Максимум.Сезон,
    ВТ_Максимум.Количество
    ПОМЕСТИТЬ ВТ_НужныеКоличества
    ИЗ
    ВТ_Максимум КАК ВТ_Максимум

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

    ВЫБРАТЬ
    ВТ_Данные.РодительНом,
    ВТ_Данные.Сезон,
    МАКСИМУМ(ВТ_Данные.Количество)
    ИЗ
    ВТ_Данные КАК ВТ_Данные
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Максимум КАК ВТ_Максимум
    ПО ВТ_Данные.РодительНом = ВТ_Максимум.РодительНом
    И ВТ_Данные.Сезон = ВТ_Максимум.Сезон
    И ВТ_Данные.Количество < ВТ_Максимум.Количество

    СГРУППИРОВАТЬ ПО
    ВТ_Данные.РодительНом,
    ВТ_Данные.Сезон
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТ_Данные.РодительНом,
    ВТ_Данные.Сезон,
    ВТ_Данные.ХарактеристикаНоменклатуры,
    ВТ_Данные.Количество
    ИЗ
    ВТ_Данные КАК ВТ_Данные
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_НужныеКоличества КАК ВТ_НужныеКоличества
    ПО ВТ_Данные.РодительНом = ВТ_НужныеКоличества.РодительНом
    И ВТ_Данные.Сезон = ВТ_НужныеКоличества.Сезон
    И ВТ_Данные.Количество = ВТ_НужныеКоличества.Количество
```