| 
    
            
         
         | 
    
  | 
Упорядочить запрос | ☑ | ||
|---|---|---|---|---|
| 
    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) показывай     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |