|
вывести запрос в обратном порядке | ☑ | ||
---|---|---|---|---|
0
MrZLO
23.01.15
✎
14:02
|
Как вывести результаты запроса в обратном порядке
, что-то вроде АВТОУПОРЯДОЧИВАНИЕ УБЫВ, есть ли такое?... т.е. есть запрос Запрос.Текст = "ВЫБРАТЬ | ЗаказыПокупателейОстатки.Номенклатура, | ЗаказыПокупателейОстатки.Номенклатура.СтавкаНДС КАК СтавкаНДС, | ЗаказыПокупателейОстатки.ХарактеристикаНоменклатуры, | ЗаказыПокупателейОстатки.ЗаказПокупателя, | ЗаказыПокупателейОстатки.ЕдиницаИзмерения КАК ЕдиницаИзмерения, | ЗаказыПокупателейОстатки.ЕдиницаИзмерения.Коэффициент КАК Коэффициент, | ЗаказыПокупателейОстатки.СуммаУпрОстаток КАК Сумма, | ЗаказыПокупателейОстатки.КоличествоОстаток КАК Заказано, | ЗаказыПоставщикамОстатки.КоличествоОстаток КАК ЗаказаноПоставщику, | ТоварыВРезервеНаСкладах.КоличествоОстаток КАК Зарезервировано |ИЗ | РегистрНакопления.ЗаказыПокупателей.Остатки(&ДатаОстатков, ЗаказПокупателя = &ЗаказПокупателя | И СтатусПартии = &СтатусПартии) КАК ЗаказыПокупателейОстатки | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РазмещениеЗаказовПокупателей.Остатки(&ДатаОстатков, ЗаказПокупателя = &ЗаказПокупателя | И ЗаказПоставщику <> &Ссылка | И ТоварТара = &ТоварТара) КАК ЗаказыПоставщикамОстатки | ПО ЗаказыПокупателейОстатки.Номенклатура = ЗаказыПоставщикамОстатки.Номенклатура | И ЗаказыПокупателейОстатки.ХарактеристикаНоменклатуры = ЗаказыПоставщикамОстатки.ХарактеристикаНоменклатуры | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&ДатаОстатков, ДокументРезерва = &ЗаказПокупателя) КАК ТоварыВРезервеНаСкладах | ПО ЗаказыПокупателейОстатки.Номенклатура = ТоварыВРезервеНаСкладах.Номенклатура | И ЗаказыПокупателейОстатки.ХарактеристикаНоменклатуры = ТоварыВРезервеНаСкладах.ХарактеристикаНоменклатуры | |ГДЕ | НЕ ЗаказыПокупателейОстатки.Номенклатура.Услуга"; мне нужно, чтобы этот запрос выводил данные в обратном порядке |
|||
1
ДенисЧ
23.01.15
✎
14:03
|
выгрузи в ТЗ и перебирай, как хочешь
|
|||
2
MrZLO
23.01.15
✎
14:03
|
если данные из таблиц, то там все понятно, а тут данные берутся из РегистрНакопления.ЗаказыПокупателей, вот как раз мне и надо результат вывода отобразить в обратном порядке
|
|||
3
Господин ПЖ
23.01.15
✎
14:04
|
автоупорядочивание - на уровне скуля это все равно sort by по каким-то полям. отсортируй по ним в обр. порядке
|
|||
4
MrZLO
23.01.15
✎
14:04
|
(1)
Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл т.е. этот цикл наоборот проходить только... |
|||
5
Господин ПЖ
23.01.15
✎
14:05
|
можешь в явном цикле (по количеству записей) обойти в обратном порядке...
|
|||
6
MrZLO
23.01.15
✎
14:06
|
(3) в том то и дело, что порядок сортировки можеть быть разным и неизвестным, запрос выводит по мере поступления данных в регистр, вот мне как раз и надо по мере убывания из регистра как бы
|
|||
7
MrZLO
23.01.15
✎
14:06
|
(5) спс, ща попробую
|
|||
8
kosts
23.01.15
✎
14:12
|
А что так не работает?
|
|||
9
MrZLO
23.01.15
✎
14:29
|
(8) нет тут такого поля по которому явно упорядочить можно было
|
|||
10
kosts
23.01.15
✎
14:34
|
(9) Добавь явно поля со словом Убыв
|
|||
11
kosts
23.01.15
✎
14:35
|
Технически проще конечно выгрузить в ТЗ и обработать в обратном порядке.
|
|||
12
MrZLO
26.01.15
✎
09:04
|
(11)
Делаю так, он пишет, что "Значение индекса выходит за границы диапазона" Выборка = Запрос.Выполнить().Выгрузить(); Сч = Выборка.Количество(); Пока Сч > 0 Цикл Строка = Выборка.Получить(Сч); Количество = ?(Строка.Заказано = NULL, 0, Строка.Заказано) - ?(Строка.Зарезервировано = NULL, 0, Строка.Зарезервировано) - ?(Строка.ЗаказаноПоставщику = NULL, 0, Строка.ЗаказаноПоставщику); Если Количество > 0 Тогда СтрокаТабличнойЧасти = ТабличнаяЧасть.Добавить(); СтрокаТабличнойЧасти.Номенклатура = Строка.Номенклатура; СтрокаТабличнойЧасти.Заказ = Строка.ЗаказПокупателя; Если ЭтоТовары Тогда СтрокаТабличнойЧасти.ХарактеристикаНоменклатуры = Строка.ХарактеристикаНоменклатуры; СтрокаТабличнойЧасти.ЕдиницаИзмерения = Строка.ЕдиницаИзмерения; СтрокаТабличнойЧасти.СтавкаНДС = Строка.СтавкаНДС; СтрокаТабличнойЧасти.Коэффициент = Строка.Коэффициент; СтрокаТабличнойЧасти.Количество = Количество * Строка.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / Строка.Коэффициент; Иначе СтрокаТабличнойЧасти.Количество = Количество; КонецЕсли; КонецЕсли; Сч = Сч - 1; КонецЦикла; |
|||
13
Челбас
26.01.15
✎
09:06
|
Сч = Выборка.Количество()-1;
Пока Сч >= 0 Цикл |
|||
14
MrZLO
26.01.15
✎
09:11
|
спасибо, точно
|
|||
15
Simod
26.01.15
✎
11:00
|
(0) В исходном запросе нет явного упорядочивания. О каком обратном порядке идет речь?
|
|||
16
kosts
26.01.15
✎
12:06
|
(15) Речь про обратный порядок прямого порядка.
|
|||
17
Simod
26.01.15
✎
12:13
|
C ИТС:
Главная - Разработка и администрирование - Система стандартов и методик разработки конфигураций для платформы 1С:Предприятие 8: "Упорядочивание результатов запроса 1.1. Если алгоритм обработки результатов запроса зависит от порядка записей в запросе или если результат обработки запроса в той или иной форме представляется пользователю, то в тексте запроса следует использовать предложение УПОРЯДОЧИТЬ ПО. В отсутствие выражения УПОРЯДОЧИТЬ ПО невозможно сделать никаких предположений о том, в каком порядке будут представлены записи в результатах запроса." |
|||
18
kosts
26.01.15
✎
12:44
|
(17) Не подходит к (0)
"Предложение АВТОУПОРЯДОЧИВАНИЕ позволяет включить режим автоматического формирования полей для упорядочивания результата запроса." |
|||
19
Simod
26.01.15
✎
13:21
|
От туда же:
"Ограничения на использование конструкции АВТОУПОРЯДОЧИВАНИЕ 3. Использование конструкции ПЕРВЫЕ совместно с конструкцией АВТОУПОРЯДОЧИВАНИЕ запрещено. В остальных случаях конструкцию АВТОУПОРЯДОЧИВАНИЕ также не рекомендуется использовать, так как разработчик не контролирует, какие именно поля будут использованы для упорядочивания. Применение такой конструкции оправдано только в тех случаях, когда получаемый порядок записей не важен, но при этом он должен быть одинаковым в не зависимости от применяемой СУБД. Причины использования конструкции АВТОУПОРЯДОЧИВАНИЕ следует указывать в комментарии, размещенном непосредственно перед тестом запроса." |
|||
20
vhl
26.01.15
✎
13:30
|
(0) У тебя нет упорядочивания вообще. Тебе возвращается результат так, как SQL выбрал для себя удобнее, а не как тебе надо. Если тебе надо упорядочивать - определись по какому полю сначала и добавь его в регистр. Потому что сейчас SQL тебе вернул так, а завтра у него будет по другому. Ты же не контролируешь этот процесс.
И слово "АВТОУПОРЯДОЧИВАНИЕ" вообще не для этого нужно. Читай документацию |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |