Вход | Регистрация



Упорядочить запрос

Упорядочить запрос
Я
   ZloyRafa
 
15.09.16 - 07:04
Имею такой код, как упорядочить по возрастанию только 2 запрос 2 пакета?
Процедура ОбработкаПроведения(Отказ, Режим)
    
    

    //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ

    // Данный фрагмент построен конструктором.

    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!


    // регистр ВзаиморасчетыСПокупателями Расход

    Движения.ВзаиморасчетыСПокупателями.Записывать = Истина;
                           //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА

    // Данный фрагмент построен конструктором.

    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

    
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |    ВзаиморасчетыСПокупателямиОстатки.Контрагент КАК Контрагент,
        |    ВзаиморасчетыСПокупателямиОстатки.Документ КАК Документ,
        |    ВзаиморасчетыСПокупателямиОстатки.СуммаОстаток КАК СуммаОстаток
        |ПОМЕСТИТЬ ДокИзТЧ
        |ИЗ
        |    РегистрНакопления.ВзаиморасчетыСПокупателями.Остатки(
        |            &МоментВремени,
        |            Контрагент = &Контрагент
        |                И Документ В (&Документ)) КАК ВзаиморасчетыСПокупателямиОстатки
        |;
        |
        ////////////////////////////////////////////////////////////////////////////////

        |ВЫБРАТЬ
        |    ДокИзТЧ.Контрагент КАК Контрагент,
        |    ДокИзТЧ.Документ КАК Документ,
        |    ДокИзТЧ.СуммаОстаток КАК СуммаОстаток
        |ИЗ
        |    ДокИзТЧ КАК ДокИзТЧ
        |
        |ОБЪЕДИНИТЬ ВСЕ
        |
        |ВЫБРАТЬ
        |    ВзаиморасчетыСПокупателямиОстатки.Контрагент,
        |    ВзаиморасчетыСПокупателямиОстатки.Документ,
        |    ВзаиморасчетыСПокупателямиОстатки.СуммаОстаток
        |ИЗ
        |    РегистрНакопления.ВзаиморасчетыСПокупателями.Остатки(
        |            &МоментВремени,
        |            Контрагент = &Контрагент
        |                И НЕ Документ В (&Документ)) КАК ВзаиморасчетыСПокупателямиОстатки
        |
        |УПОРЯДОЧИТЬ ПО
        |    Документ";
     Запрос.УстановитьПараметр("МоментВремени", МоментВремени());
    Запрос.УстановитьПараметр("Контрагент",Контрагент);

    РезультатЗапроса = Запрос.Выполнить();
    
    Выборка = РезультатЗапроса.Выбрать();
        Оплата=Оплачено;
    Пока Выборка.Следующий() И Оплата>0 Цикл
         Если Выборка.Сумма<Оплата Тогда
        Движение = Движения.ВзаиморасчетыСПокупателями.Добавить();
        Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
        Движение.Период = Дата;
        Движение.Контрагент = Выборка.Контрагент;
        Движение.Документ = Выборка.Накладная;
        Оплата=оплата-выборка.сумма;
        Движение.Сумма=Выборка.Сумма;

        Иначе
        Движение = Движения.ВзаиморасчетыСПокупателями.Добавить();
        Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
        Движение.Период = Дата;
        Движение.Контрагент = Выборка.Контрагент;
        Движение.Документ = Выборка.Накладная;
        Движение.Сумма=Оплата;
        Оплата=0;
                 КонецЕсли;
         
    КонецЦикла;

    //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ

КонецПроцедуры
 
 
   ZloyRafa
 
1 - 15.09.16 - 07:05
(0) В таком варианте упорядочивание происходит по всему пакету
   KishMish
 
2 - 15.09.16 - 07:23
Возможно.
Сделать новое поле ЗначениеУпорядочивания
в первом запросе оно будет равно "КакаятоЗаглушка"
во втором равно ВзаиморасчетыСПокупателямиОстатки.Документ
и по нему сделать сортировку
   jsmith
 
3 - 15.09.16 - 07:27
И чему равна заглушка?
   KishMish
 
4 - 15.09.16 - 07:28
(3) например пустая ссылка
   jsmith
 
5 - 15.09.16 - 07:29
Пустая ссылка любого регистратора?
   KishMish
 
6 - 15.09.16 - 07:34
возможно просто строка "КакаятоЗаглушка"
   ZloyRafa
 
7 - 15.09.16 - 08:04
Предложили создать поле индекс, 0 в запрос 1,  1 в запрос в запрос 2, но как по ним потом упорядочить не понял
   KishMish
 
8 - 15.09.16 - 08:09
(7) если ты сделаешь так, то у тебя вторая часть не будет упорядочиваться по документу.
тебе действительно надо сделать поле индекс.
В первом запросе оно будет равно какой-то строке, например "Заглушка"
Во втором запросе оно будет равно значению ВзаиморасчетыСПокупателямиОстатки.Документ 
Назови его ПолеИндекс
и в конце УПОРЯДОЧИТЬ ПО ПолеИндекс
   ZloyRafa
 
9 - 15.09.16 - 08:41
Забавная штука вышла, он упорядочил по возрастанию документы, но: по времени только, дату не брал в учет
   ZloyRafa
 
10 - 15.09.16 - 08:44
пришлось вытянуть еще и дату
 
 Рекламное место пустует
   ZloyRafa
 
11 - 15.09.16 - 08:51
что-то не получилось(
   jsmith
 
12 - 15.09.16 - 08:52
Не мучайся, сделай еще одну ВТ.
   napagokc
 
13 - 15.09.16 - 09:00
(0) Всё просто:
второй запрос преобразуй в что-то типа:

ВЫБРАТЬ * ИЗ (ТвойТекущийВторойЗапрос)
УПОРЯДОЧИТЬ ПО
    Документ
   napagokc
 
14 - 15.09.16 - 09:02
+(13) и еще стоит учитывать, что упорядочивание по документу не всегда равно упорядочиванию по Документ.Дата. Ты, скорее всего, хочешь как раз по дате упорядочить.
   ZloyRafa
 
15 - 15.09.16 - 09:03
Я уже вынес поле дата документа,
   jsmith
 
16 - 15.09.16 - 09:03
Ну тогда пиши в первом запросе нулевую дату.
   ZloyRafa
 
17 - 15.09.16 - 09:05
у меня оба запроса должны быть упорядоченны по дате.
Получается что:
Запрос1(Упорядоченный по дате возр)
Объединить все
Запрос2(Упорядочить по дата возр)
   jsmith
 
18 - 15.09.16 - 09:09
РАЗНОСТЬДАТ(ДАТАВРЕМЯ(1000, 1, 1, 0, 0, 0), Документ.Дата, СЕКУНДА) КАК Дата
   ZloyRafa
 
19 - 15.09.16 - 09:18
А если сделать индекс, а по индексу итоги? Упорядочить по Дате?
   jsmith
 
20 - 15.09.16 - 09:20
(19) Не мучайся. Пиши как в (18) и будет тебе счастье.
   jsmith
 
21 - 15.09.16 - 09:21
Зачем тебе индекс?
   ZloyRafa
 
22 - 15.09.16 - 09:22
Запрос свернется по ним, а дата по возрастанию так и будет.
Результат желаемый достигнут, только теперь обход по итогам надо сделать
   jsmith
 
23 - 15.09.16 - 09:24
Судя по коду, тебе никакие индексы не нужны.
   jsmith
 
24 - 15.09.16 - 09:28
В первом запросе, если сделать по (18) разница по времени будет на 1000 лет как минимум. Че те еще надо-то.
   trad
 
25 - 15.09.16 - 09:30
может быть так сойдет:

        |ВЫБРАТЬ
        |    0 КАК НомерЗапроса,
        |    ДокИзТЧ.Документ КАК Документ,
        |...
        |
        |ОБЪЕДИНИТЬ ВСЕ
        |
        |ВЫБРАТЬ
        |    1 КАК НомерЗапроса,
        |    ВзаиморасчетыСПокупателямиОстатки.Документ,
        |...
        |
        |УПОРЯДОЧИТЬ ПО
        |    НомерЗапроса, Документ";
   hhhh
 
26 - 15.09.16 - 09:30
(22) +еще есть такое супершаманство: в упорядочить по можешь написать 2 поля через запятую.
   ZloyRafa
 
27 - 15.09.16 - 09:32
(26) я пробывал эти варианты, он перекрывает их почему-топервое упорядочивание вторым
   Ёпрст
 
28 - 15.09.16 - 09:32
(25) тока по дате нужно, а не по ссылке
   Vladal
 
29 - 15.09.16 - 09:32
пробЫвал.
   Ёпрст
 
30 - 15.09.16 - 09:33
И, если он не хочет упорядочивать один из запросов - пихать пустую дату туда
   hhhh
 
31 - 15.09.16 - 09:33
(27) руки напильником подправь.
   ZloyRafa
 
32 - 15.09.16 - 09:34
(28)по дате и делаю .
(29)Обязательно)
   Ёпрст
 
33 - 15.09.16 - 09:47
(32) показывай
 
 


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует