А?
---
dmt, Если "первый" означает "с минимальным P1", тогда банально:

```1c
    ВЫБРАТЬ
    Таблица.P2 КАК P2,
    МИНИМУМ(Таблица.P1) КАК P1
    ИЗ
    МойТаблиц КАК Таблица
    СГРУППИРОВАТЬ ПО
    Таблица.P2
    УПОРЯДОЧИТЬ ПО
    P1
```
---
dmt, а смысл ее сортировать? все равно ее результат ни кто не видит. Сортировать нужно конечный результат(ИМХО)
---
dmt,
Если под "Временной таблицей" понимать то, с чем работает объект МенеджерВременныхТаблиц, то в языке запросов есть специальная фраза "ИНДЕКСИРОВАТЬ", например

```1c
    |ВЫБРАТЬ
    | Остатки.АналитикаУчетаПоПартнерам КАК АналитикаУчетаПоПартнерам,
    | Остатки.ЗаказПоставщику КАК ЗаказПоставщику,
    | Остатки.Валюта КАК Валюта,
    | Остатки.Период КАК Период,
    | Остатки.ДатаПлатежа КАК ДатаПлатежа,
    | Остатки.НовыйКОплатеОстаток КАК КОплатеОстаток,
    | Остатки.КОплатеОстатокНаКонецПериода КАК КОплатеОстатокНаКонецПериода,
    | Остатки.ПросроченнаяЗадолженность КАК ПросроченнаяЗадолженность
    |ПОМЕСТИТЬ ТаблицаОстатковПоставщиков
    |ИЗ
    | НовыеОстаткиПоставщиков КАК Остатки
    |ИНДЕКСИРОВАТЬ ПО
    | АналитикаУчетаПоПартнерам,
    | ЗаказПоставщику,
    | Валюта
```
---
вставь "ПЕРВЫЕ 100500" в выборку, тогда упорядочивание доступно.
---
Зачем? И где?
Use case в студию.
---
ну я например делал автонумерацию строк и потом чётные строки раскрашивал
---
Есть у меня справочник с реквизитами: Р1 и Р2.
Хочу получить уникальные значения Р2 упорядоченные по значениям Р1.
---
dmt, а если в запросе добавить РАЗЛИЧНЫЕ дубли убирать не придется.
---
А зачем это делать во временной таблице?
---
DenisCh, ну не знаю...
Я придумал такой алгоритм:
- сортирую по P1
- убираю дубли
---
dmt, Мы точно о запросе разговариваем?
---
dj_serega, я да.
---
dmt, Сортировать по P1, чтобы убрать дубли по P2... В запросе... Во временной таблице...
Чо-то мозг пошел вразнос на холостых оборотах. Пойду лучше поработаю.
---
dmt, сначала выбрать различные Р1 во врем табл, затем внутр соединение со справочником по Р1 и упорядочивание по Р2
---
alex-l19041, перепутал Р1 и Р2
---
alex-l19041, при внутреннем соединении уникальность же перестанет быть уникальной.
---
dmt, уникальность же перестанет быть уникальной - поясните
---
alex-l19041, пример:

Исходная таблица из двух элементов с реквизитами:
Р1 = "А"
Р2 = 1

Р1 = "В"
Р2 = 1

Шаг 1: Выбор различных
Р2 = 1

Шаг 2: Внутр соед
Р1 = "А"
Р2 = 1

Р1 = "В"
Р2 = 1

Вернулись к исходной таблице.
---
dmt, т.е. на выходе должны получить одну строку?
Р1 = "А"
Р2 = 1
---
alxarz, для данного примера да.
(22) SGordon1, предлагать.
---
dmt, для примера из (17)

```1c
    ВЫБРАТЬ
    "А" КАК Поле1,
    "1" КАК Поле2
    ПОМЕСТИТЬ ВременнаяТаблица1
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    "В" КАК Поле1,
    "1" КАК Поле2
    ПОМЕСТИТЬ ВременнаяТаблица2
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ВременнаяТаблица1.Поле1 КАК Поле1,
    ВременнаяТаблица1.Поле2 КАК Поле2
    ИЗ
    ВременнаяТаблица1 КАК ВременнаяТаблица1
    ЛЕВОЕ СОЕДИНЕНИЕ ВременнаяТаблица2 КАК ВременнаяТаблица2
    ПО (ИСТИНА)
```

результат в скрине ниже
---
dmt, и зачем внутреннее соединение при запросе двух полей из одной таблицы?
---
alxarz, это временная таблица и весь справочник (можно и левое соединение по врем таблице)
---
alxarz, в (13) я отвечаю на (8).
---
dmt, а убрать дубли можно через
```1c
    ВЫБРАТЬ РАЗЛИЧНЫЕ
```
---
Что бы не так скучно было.
---
Индексировать не предлагать?
---
Еще сотня постов и постановка задачи будет сформулирована! Ну, я на это надеюсь.
---
herfis, в (3) описана задача. Хочу решить ее запросом. Что непонятно?
---
dmt, Непонятно, например, что делать с одинаковыми P2, которым соответствуют различные P1
---
Может как-то так.

```1c
    ВЫБРАТЬ
    РРР.поле1
    ПОМЕСТИТЬ ййй
    ИЗ
    Справочник..... КАК РРР
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ РАЗЛИЧНЫЕ
    ППП.Поле2
    ПОМЕСТИТЬ ывывыв
    ИЗ
    Справочник......КАК ППП
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ывывыв.Поле2,
    ййй.поле1
    ИЗ
    ййй КАК ййй,
    ывывыв КАК ывывыв

    УПОРЯДОЧИТЬ ПО
    поле1
```
---
fomstas, не то.

(27) vovan_victory, в результате всегда будет первая таблица.

(28) herfis, вывести только один. Первый.

(29) tarassov, я слышал про эту специальную фразу.
---
dmt, Если "первый" означает "с минимальным P1", тогда банально:

```1c
    ВЫБРАТЬ
    Таблица.P2 КАК P2,
    МИНИМУМ(Таблица.P1) КАК P1
    ИЗ
    МойТаблиц КАК Таблица
    СГРУППИРОВАТЬ ПО
    Таблица.P2
    УПОРЯДОЧИТЬ ПО
    P1
```
---
herfis, похоже на правду. Щас потестю.
---
herfis, наверное всётаки "с минимальным P1" которому есть соответствие P2, а не из всей таблицы.
для случая
Р1 = "А"
Р2 = 1

Р1 = "В"
Р2 = 2

вернётся
Р1 = "А" Р2 = 1
Р1 = "А" Р2 = 2
а должна исходная таблица :)
---
herfis, Спасибо!
---
dmt, Да не за что :) Как-то не верилось, что задача такая простая, учитывая нечеткую ее постановку.
---
herfis, вроде старался в (3) как можно проще описать ситуацию.
Аж самому интересно стало как ее можно было описать более понятно.
---
dmt, Не, в (3) нормально. Если б ты с "сортировки временных таблиц" сначала не зашел :) Такая формулировка сама по себе недоумение вызывает, плюс слабо относится к сути проблемы - в итоге ищешь какой-то подвох.
---
Внезапно сейчас обнаружил, что при помещении данных во временную таблицу с индексированием по полю, платформа сортирует эти данные по этому полю. Также, теперь есть функция АВТОНОМЕРЗАПИСИ() которая нумерует данные по порядку при помещении во временную таблицу, что даёт возможность нам независимо отсортировать поля таблицы и связать их потом по номеру. Вот пример:

```1c
    ВЫБРАТЬ
    1 КАК ДеньП,
    10 КАК ДеньФ
    ПОМЕСТИТЬ Данные

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

    ВЫБРАТЬ
    1,
    11

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

    ВЫБРАТЬ
    15,
    30

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

    ВЫБРАТЬ
    1,
    30

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

    ВЫБРАТЬ
    1,
    31

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

    ВЫБРАТЬ
    2,
    10

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

    ВЫБРАТЬ
    2,
    11

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

    ВЫБРАТЬ
    2,
    30

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

    ВЫБРАТЬ
    2,
    31

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

    ВЫБРАТЬ
    14,
    10

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

    ВЫБРАТЬ
    14,
    11

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

    ВЫБРАТЬ
    14,
    30

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

    ВЫБРАТЬ
    14,
    31

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

    ВЫБРАТЬ
    15,
    10

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

    ВЫБРАТЬ
    15,
    11

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

    ВЫБРАТЬ
    15,
    31
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ РАЗЛИЧНЫЕ
    Данные.ДеньП КАК ДеньП,
    АВТОНОМЕРЗАПИСИ() КАК ПорядковыйНомер
    ПОМЕСТИТЬ УпорядоченныеДниП
    ИЗ
    Данные КАК Данные

    ИНДЕКСИРОВАТЬ ПО
    ДеньП
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ РАЗЛИЧНЫЕ
    Данные.ДеньФ КАК ДеньФ,
    АВТОНОМЕРЗАПИСИ() КАК ПорядковыйНомер
    ПОМЕСТИТЬ УпорядоченныеДниФ
    ИЗ
    Данные КАК Данные

    ИНДЕКСИРОВАТЬ ПО
    ДеньФ
    ;

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