|
Упорядочить запрос | ☑ | ||
---|---|---|---|---|
0
ZloyRafa
15.09.16
✎
07:04
|
Имею такой код, как упорядочить по возрастанию только 2 запрос 2 пакета?
Процедура ОбработкаПроведения(Отказ, Режим) //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! // регистр ВзаиморасчетыСПокупателями Расход Движения.ВзаиморасчетыСПокупателями.Записывать = Истина; //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ВзаиморасчетыСПокупателямиОстатки.Контрагент КАК Контрагент, | ВзаиморасчетыСПокупателямиОстатки.Документ КАК Документ, | ВзаиморасчетыСПокупателямиОстатки.СуммаОстаток КАК СуммаОстаток |ПОМЕСТИТЬ ДокИзТЧ |ИЗ | РегистрНакопления.ВзаиморасчетыСПокупателями.Остатки( | &МоментВремени, | Контрагент = &Контрагент | И Документ В (&Документ)) КАК ВзаиморасчетыСПокупателямиОстатки |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ДокИзТЧ.Контрагент КАК Контрагент, | ДокИзТЧ.Документ КАК Документ, | ДокИзТЧ.СуммаОстаток КАК СуммаОстаток |ИЗ | ДокИзТЧ КАК ДокИзТЧ | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | ВзаиморасчетыСПокупателямиОстатки.Контрагент, | ВзаиморасчетыСПокупателямиОстатки.Документ, | ВзаиморасчетыСПокупателямиОстатки.СуммаОстаток |ИЗ | РегистрНакопления.ВзаиморасчетыСПокупателями.Остатки( | &МоментВремени, | Контрагент = &Контрагент | И НЕ Документ В (&Документ)) КАК ВзаиморасчетыСПокупателямиОстатки | |УПОРЯДОЧИТЬ ПО | Документ"; Запрос.УстановитьПараметр("МоментВремени", МоментВремени()); Запрос.УстановитьПараметр("Контрагент",Контрагент); РезультатЗапроса = Запрос.Выполнить(); Выборка = РезультатЗапроса.Выбрать(); Оплата=Оплачено; Пока Выборка.Следующий() И Оплата>0 Цикл Если Выборка.Сумма<Оплата Тогда Движение = Движения.ВзаиморасчетыСПокупателями.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Контрагент = Выборка.Контрагент; Движение.Документ = Выборка.Накладная; Оплата=оплата-выборка.сумма; Движение.Сумма=Выборка.Сумма; Иначе Движение = Движения.ВзаиморасчетыСПокупателями.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Контрагент = Выборка.Контрагент; Движение.Документ = Выборка.Накладная; Движение.Сумма=Оплата; Оплата=0; КонецЕсли; КонецЦикла; //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ КонецПроцедуры |
|||
1
ZloyRafa
15.09.16
✎
07:05
|
(0) В таком варианте упорядочивание происходит по всему пакету
|
|||
2
KishMish
15.09.16
✎
07:23
|
Возможно.
Сделать новое поле ЗначениеУпорядочивания в первом запросе оно будет равно "КакаятоЗаглушка" во втором равно ВзаиморасчетыСПокупателямиОстатки.Документ и по нему сделать сортировку |
|||
3
jsmith
15.09.16
✎
07:27
|
И чему равна заглушка?
|
|||
4
KishMish
15.09.16
✎
07:28
|
(3) например пустая ссылка
|
|||
5
jsmith
15.09.16
✎
07:29
|
Пустая ссылка любого регистратора?
|
|||
6
KishMish
15.09.16
✎
07:34
|
возможно просто строка "КакаятоЗаглушка"
|
|||
7
ZloyRafa
15.09.16
✎
08:04
|
Предложили создать поле индекс, 0 в запрос 1, 1 в запрос в запрос 2, но как по ним потом упорядочить не понял
|
|||
8
KishMish
15.09.16
✎
08:09
|
(7) если ты сделаешь так, то у тебя вторая часть не будет упорядочиваться по документу.
тебе действительно надо сделать поле индекс. В первом запросе оно будет равно какой-то строке, например "Заглушка" Во втором запросе оно будет равно значению ВзаиморасчетыСПокупателямиОстатки.Документ Назови его ПолеИндекс и в конце УПОРЯДОЧИТЬ ПО ПолеИндекс |
|||
9
ZloyRafa
15.09.16
✎
08:41
|
Забавная штука вышла, он упорядочил по возрастанию документы, но: по времени только, дату не брал в учет
|
|||
10
ZloyRafa
15.09.16
✎
08:44
|
пришлось вытянуть еще и дату
|
|||
11
ZloyRafa
15.09.16
✎
08:51
|
что-то не получилось(
|
|||
12
jsmith
15.09.16
✎
08:52
|
Не мучайся, сделай еще одну ВТ.
|
|||
13
napagokc
15.09.16
✎
09:00
|
(0) Всё просто:
второй запрос преобразуй в что-то типа: ВЫБРАТЬ * ИЗ (ТвойТекущийВторойЗапрос) УПОРЯДОЧИТЬ ПО Документ |
|||
14
napagokc
15.09.16
✎
09:02
|
+(13) и еще стоит учитывать, что упорядочивание по документу не всегда равно упорядочиванию по Документ.Дата. Ты, скорее всего, хочешь как раз по дате упорядочить.
|
|||
15
ZloyRafa
15.09.16
✎
09:03
|
Я уже вынес поле дата документа,
|
|||
16
jsmith
15.09.16
✎
09:03
|
Ну тогда пиши в первом запросе нулевую дату.
|
|||
17
ZloyRafa
15.09.16
✎
09:05
|
у меня оба запроса должны быть упорядоченны по дате.
Получается что: Запрос1(Упорядоченный по дате возр) Объединить все Запрос2(Упорядочить по дата возр) |
|||
18
jsmith
15.09.16
✎
09:09
|
РАЗНОСТЬДАТ(ДАТАВРЕМЯ(1000, 1, 1, 0, 0, 0), Документ.Дата, СЕКУНДА) КАК Дата
|
|||
19
ZloyRafa
15.09.16
✎
09:18
|
А если сделать индекс, а по индексу итоги? Упорядочить по Дате?
|
|||
20
jsmith
15.09.16
✎
09:20
|
(19) Не мучайся. Пиши как в (18) и будет тебе счастье.
|
|||
21
jsmith
15.09.16
✎
09:21
|
Зачем тебе индекс?
|
|||
22
ZloyRafa
15.09.16
✎
09:22
|
Запрос свернется по ним, а дата по возрастанию так и будет.
Результат желаемый достигнут, только теперь обход по итогам надо сделать |
|||
23
jsmith
15.09.16
✎
09:24
|
Судя по коду, тебе никакие индексы не нужны.
|
|||
24
jsmith
15.09.16
✎
09:28
|
В первом запросе, если сделать по (18) разница по времени будет на 1000 лет как минимум. Че те еще надо-то.
|
|||
25
trad
15.09.16
✎
09:30
|
может быть так сойдет:
|ВЫБРАТЬ | 0 КАК НомерЗапроса, | ДокИзТЧ.Документ КАК Документ, |... | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | 1 КАК НомерЗапроса, | ВзаиморасчетыСПокупателямиОстатки.Документ, |... | |УПОРЯДОЧИТЬ ПО | НомерЗапроса, Документ"; |
|||
26
hhhh
15.09.16
✎
09:30
|
(22) +еще есть такое супершаманство: в упорядочить по можешь написать 2 поля через запятую.
|
|||
27
ZloyRafa
15.09.16
✎
09:32
|
(26) я пробывал эти варианты, он перекрывает их почему-топервое упорядочивание вторым
|
|||
28
Ёпрст
15.09.16
✎
09:32
|
(25) тока по дате нужно, а не по ссылке
|
|||
29
Vladal
15.09.16
✎
09:32
|
пробЫвал.
|
|||
30
Ёпрст
15.09.16
✎
09:33
|
И, если он не хочет упорядочивать один из запросов - пихать пустую дату туда
|
|||
31
hhhh
15.09.16
✎
09:33
|
(27) руки напильником подправь.
|
|||
32
ZloyRafa
15.09.16
✎
09:34
|
(28)по дате и делаю .
(29)Обязательно) |
|||
33
Ёпрст
15.09.16
✎
09:47
|
(32) показывай
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |