Имя: Пароль:
1C
1С v8
Произвольная сортировка данных в запросе
0 wizards
 
17.10.17
13:54
Добрый день.
Надо объединить 2 выборки данных в запросе с разной сортировкой.
Пример для наглядности (реальный пример намного сложнее, для упрощения  приводить не буду)

ВЫБРАТЬ
    РеализацияТоваровУслуг.Ссылка,
        РеализацияТоваровУслуг.Дивизион
ИЗ
    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
ГДЕ
    РеализацияТоваровУслуг.Контрагент = &Контрагент

УПОРЯДОЧИТЬ ПО
    РеализацияТоваровУслуг.Дата,
        Дивизион,
        РеализацияТоваровУслуг.ДатаОтгрузки
;

//////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    РеализацияТоваровУслуг.Ссылка,
        РеализацияТоваровУслуг.Дивизион
ИЗ
    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
ГДЕ
    РеализацияТоваровУслуг.Контрагент = &Контрагент1
    
УПОРЯДОЧИТЬ ПО
    РеализацияТоваровУслуг.Дата,
        РеализацияТоваровУслуг.ДатаОтгрузки

Данные в 1 запросе должны быть упорядочены по дате, дивизиону (число) и дате отгрузки, во 2 запросе - только по дате и дате отгрузки. В конечном итоге нужно получить объединение выборок с сортировкой по дате и дате отгрузки, но при этом чтобы сортировка 1 запроса по дивизиону "не слетела". Насколько я понимаю, это невозможно, думал о подстановке во 2 запрос (где сортировка по дивизиону не используется) случайного числа как дивизиона, но как генерировать случайное число для каждой строки выборки?
1 Рэйв
 
17.10.17
14:04
Объединить все

Если я правильно стелепатировал
2 azernot
 
17.10.17
14:06
ЯННП.

1. Сортировать надо на уровне выше (т.е. обединение должно быть во вложенном запросе).
2. Нужно определиться как данные второго запроса в объединении должны располагаться по отношению к данным первого. Они должны быть ДО или ПОСЛЕ? Например, во втором запросе вместо дивизиона можно явно указать -10000000, или наоборот 9999999999999999. Т.е. данные второго запроса будут сортированы также по дивизиону, но с заведомо маленьким или огромным значением.
3 wizards
 
17.10.17
14:17
(2) Я тоже так думаю, но явное указание дивизиона не подойдет, т.к. данные 2 запроса должны по дивизиону сортироваться в произвольном порядке
4 azernot
 
17.10.17
14:20
> должны по дивизиону сортироваться в произвольном порядке

Это как? Что значит в произвольном порядке? А почему бы не назвать явное указание дивизиона произвольным порядком?
Иди почему бы тогда не отсортировать собственно по реальному дивизиону и назвать это произвольным порядком?

Мне кажется вы не очень хорошо понимаете, чего хотите.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn