Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Объединение запросов и упорядочивание
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование обычных форм 1С 8.2 и не интерфейсной логики
RinLis
Вот есть у меня запрос:

ВЫБРАТЬ "Это" КАК Фраза
ОБЪЕДИНИТЬ

ВЫБРАТЬ "правильный"
ОБЪЕДИНИТЬ

ВЫБРАТЬ "порядок"
ОБЪЕДИНИТЬ

ВЫБРАТЬ "!"

В итоге я ожидаю получить вот такое:
  • Это
  • правильный
  • порядок
  • !

А получаю вот такое:
  • !
  • порядок
  • правильный
  • Это

А мне крайне важно, чтобы запрос выдавал в том порядке в котором нужно мне, а не ему.
Что делать, подскажите?
П.С. По заданию нужно выбрать суммы по нескольким регистрам и расположить их в том порядке в котором указывает пользователь. На основании его выбора строю запрос и тут такая радость diablo.gif
Vofka
Вообще странно. Но раз такое дело, можно задать порядок явно:

ВЫБРАТЬ Фраза, Порядок
ИЗ
(
ВЫБРАТЬ "Это" КАК Фраза, 1 КАК Порядок
ОБЪЕДИНИТЬ

ВЫБРАТЬ "правильный", 2
ОБЪЕДИНИТЬ

ВЫБРАТЬ "порядок", 3
ОБЪЕДИНИТЬ

ВЫБРАТЬ "!", 4
) КАК ВложенныйЗапрос

УПОРЯДОЧИТЬ ПО Порядок
RinLis
Цитата(Vofka @ 09.08.13, 12:39) необходимо зарегистрироваться для просмотра ссылки
Вообще странно. Но раз такое дело, можно задать порядок явно

Спасибо! Буду пробовать.
Agapov_Stas
а где код упорядочивания ?
приведи что у Вас после
УПОРЯДОЧИТЬ ПО
Petre
Цитата(Agapov_Stas @ 09.08.13, 19:04) необходимо зарегистрироваться для просмотра ссылки
а где код упорядочивания ?

Если я правильно понял, нет ни упорядочивания, ни автоупорядочивания. Но оно все равно происходит...
Agapov_Stas
Цитата(Petre @ 10.08.13, 10:58) необходимо зарегистрироваться для просмотра ссылки
Если я правильно понял, нет ни упорядочивания, ни автоупорядочивания. Но оно все равно происходит...

Нет - не видно как он упорядочивает - может он по убыванию упорядочивает ...
Petre
Упорядочивание в запросе не определено.
Вобщем-то все правильно, сортировка по умолчанию тут идет по алфавиту.
RinLis
Цитата(Agapov_Stas @ 09.08.13, 19:04) необходимо зарегистрироваться для просмотра ссылки
а где код упорядочивания ?
приведи что у Вас после
УПОРЯДОЧИТЬ ПО


Я весь код уже привела. Мне не нужно упорядочивание! Мне нужно, чтобы выводило как есть. Я сделала как подсказал Vofka.

Цитата(Petre @ 11.08.13, 20:29) необходимо зарегистрироваться для просмотра ссылки
Упорядочивание в запросе не определено.
Вобщем-то все правильно, сортировка по умолчанию тут идет по алфавиту.


Ну нельзя же указать УПОРЯДОЧИТЬ ПО "Произвольно" или "Как я хочу". Там только по убыванию или возрастанию.

Цитата(Petre @ 10.08.13, 10:58) необходимо зарегистрироваться для просмотра ссылки
Если я правильно понял, нет ни упорядочивания, ни автоупорядочивания. Но оно все равно происходит...

Да, все правильно Вы поняли.
Petre
Цитата(RinLis @ 12.08.13, 9:12) необходимо зарегистрироваться для просмотра ссылки
Ну нельзя же указать УПОРЯДОЧИТЬ ПО "Произвольно" или "Как я хочу". Там только по убыванию или возрастанию.

При запросе выборка сортируется всегда, независимо от указания. Если необходимо сделать "как я хочу", надо создавать собственный индекс (Vofka во 2-м сообщении привел один из вариантов).
sava1
Цитата(Petre @ 12.08.13, 9:23) необходимо зарегистрироваться для просмотра ссылки
При запросе выборка сортируется всегда

Громко сказано. Зачем сортировать?
Petre
Соврал.
Неявная сортировка происходит в режиме "без дубликатов". В данном примере достаточно добавить ключевое слово "ВСЕ".
alex040269
Цитата(Petre @ 12.08.13, 14:43) необходимо зарегистрироваться для просмотра ссылки
Соврал.
Неявная сортировка происходит в режиме "без дубликатов". В данном примере достаточно добавить ключевое слово "ВСЕ".


Ключевое слово ВСЕ здесь необходимо, потому что иначе 1С (или SQL Сервер) будет искать дубликаты - лишняя нагрузка.
УПОРЯДОЧИТЬ нужно для упорядочивания, иначе это дело случая. Сегодня 8 так считает в файловом варианте, завтра по другому в клиент-сервере,
после завтра по третьему, потому что сменили СКЛ сервер или еще чего нибудь.
А если стоит УПОРЯДОЧИТЬ - то это железно в таком порядке и не иначе...
Agapov_Stas
Цитата(RinLis @ 12.08.13, 9:12) необходимо зарегистрироваться для просмотра ссылки
Мне не нужно упорядочивание! Мне нужно, чтобы выводило как есть. Я сделала как подсказал Vofka.

но все таки у Vofka есть слова
УПОРЯДОЧИТЬ ПО

и то что подсказал Vofka это "бубен"
RinLis
Цитата(Agapov_Stas @ 12.08.13, 19:10) необходимо зарегистрироваться для просмотра ссылки
и то что подсказал Vofka это "бубен"

И что же тогда делать? Его "бубен" работает, а Вы свой не "бубен" даже не предложили.
Vofka
Цитата(Agapov_Stas @ 12.08.13, 19:10) необходимо зарегистрироваться для просмотра ссылки
и то что подсказал Vofka это "бубен"

А можно поинтересоваться в чем "бубность"?
RinLis
Цитата(Petre @ 12.08.13, 14:43) необходимо зарегистрироваться для просмотра ссылки
В данном примере достаточно добавить ключевое слово "ВСЕ".


Спасибо! Это сработало!
Petre
Цитата(RinLis @ 13.08.13, 13:43) необходимо зарегистрироваться для просмотра ссылки
Спасибо! Это сработало!

Ну и не забывайте слова alex040269. На SQL такое же поведение упорядочивания не гарантируется.
alex040269
То что сказал Vofka, это и есть упорядочивание. SQL не гарантирует никакого порядка, если нет кл. слова УПОРЯДОЧИТЬ. если вам нужно как есть. это и есть упорядочивание. почитайте стандарт СКЛ или поверьте на слово.

ЗЫ
Порядок данных в базе это тоже определенный ПОРЯДОК и СКЛ никак не гарантирует что данные будут выводиться в том порялке, в котором они записаны в базе.

Просто с поиском дубликатов получился один порядок, а без поиска - другой. СКЛ вывел данные как есть, т.к. нет слова УПОРЯДОЧИТЬ.
RinLis
Цитата(Petre @ 13.08.13, 13:50) необходимо зарегистрироваться для просмотра ссылки
Ну и не забывайте слова alex040269. На SQL такое же поведение упорядочивания не гарантируется.

Я попробовала, что со словом "ВСЕ" работает, но оставила как подсказал Vofka. Так оно надежнее smile.gif
Agapov_Stas
Цитата(Vofka @ 13.08.13, 13:40) необходимо зарегистрироваться для просмотра ссылки
А можно поинтересоваться в чем "бубность"?

в том что Вы явно задаете порядок...
а если надо будет упорядочить 100 элементов ? тоже так задавать ?
alex040269
то же
Vofka
Цитата(Agapov_Stas @ 13.08.13, 18:12) необходимо зарегистрироваться для просмотра ссылки
в том что Вы явно задаете порядок...

Ну так и что? Если стоит задача "надо получить точно в таком порядке" - какие ещё варианты могут быть? Кстати, мне очень интересно, а какой вариант вы предлагаете?

Цитата(Agapov_Stas @ 13.08.13, 18:12) необходимо зарегистрироваться для просмотра ссылки
а если надо будет упорядочить 100 элементов ? тоже так задавать ?

Та хоть 100 000. Если мне надо будет получить таблицу в определенном строгом порядке - то да, я буду использовать УПОРЯДОЧИТЬ и тут без вариантов. Если нету инструкции УПОРЯДОЧИТЬ - нету гарантий получить данные в нужном порядке (о чем, кстати, и выше люди пишут). Ваш Кэп.
Ardi
А как сделать как в посте 0, но упорядочить колонки а не группировки.
И на универсальном отчете.
alex040269
Цитата(Ardi @ 13.08.13, 23:01) необходимо зарегистрироваться для просмотра ссылки
А как сделать как в посте 0, но упорядочить колонки а не группировки.
И на универсальном отчете.


а чем это отличается из запроса из обычной физической таблицы?

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