Имя: Пароль:
1C
1С v8
Упорядочивание строк в отчете
0 ЛучшийПрограммер1С
 
17.05.16
10:21
Подскажите пожалуйста, как правильно упорядочить строки табличной части отчета без СКД по старинке (Макет типа табличный документ).

И еще здесь такой вопрос - В запросе Упорядочить ПО - там пугает, что надо писать Первые. Насколько правильно писать допустим выбрать первые 99999? И в отчете сортировка сохраняется всегда или нет в таком случае?
1 aleks_default
 
17.05.16
10:23
бросай пить
2 ЛучшийПрограммер1С
 
17.05.16
10:25
(1) спасибо
3 Timon1405
 
17.05.16
10:28
(1) Настоящий программист закодирует что угодно, даже человека от запоя! уважуха!
4 aleks_default
 
17.05.16
10:30
Обращайтесь
5 ЛучшийПрограммер1С
 
17.05.16
10:33
А по теме есть чего полезного сказать?
6 aleks_default
 
17.05.16
10:34
По тому бреду что в топике - мне нечего...
7 Ёпрст
 
гуру
17.05.16
10:34
>>>В запросе Упорядочить ПО - там пугает, что надо писать Первые

И откуда такая ересь  в вашей голове ?
8 ДенисЧ
 
17.05.16
10:35
Ну нельзя же так пить, чтобы ещё и во вторник....

Хотя...
9 ЛучшийПрограммер1С
 
17.05.16
10:35
(7) Ну без ключевого слова "Первые" выдает ошибку
10 Ёпрст
 
гуру
17.05.16
10:36
(9) ну , покажи нам свой шедевр
11 ЛучшийПрограммер1С
 
17.05.16
10:37
(10) Что именно?
12 Ёпрст
 
гуру
17.05.16
10:40
(11) Речь вроде о запросе, разве нет ?
13 ЛучшийПрограммер1С
 
17.05.16
10:45
(12) Да у меня то и проблема в том, что запрос в консоли дает правильный порядок, а в программе в отчете как попало записи.

Запрос такой:

ВЫБРАТЬ 0 КАК колво ПОМЕСТИТЬ Разряд
        ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1  ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 2  ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 3
        ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 4  ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 5  ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 6
        ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 7  ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 8  ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 9;
    
ВЫБРАТЬ
        Сотни.колво * 100 + Десятки.колво * 10 + Единицы.колво КАК Номер
    ПОМЕСТИТЬ Числа
        ИЗ Разряд КАК Сотни
        ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ Разряд.колво) КАК Десятки ПО (ИСТИНА)
        ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ Разряд.колво) КАК Единицы ПО (ИСТИНА);

ВЫБРАТЬ
        УстановленоНаТС.Период КАК ДатаУстановкиШиныНаТС,
        Минимум(СнятоСТС.Период) КАК ДатаСнятияШиныСТС
    ПОМЕСТИТЬ ДатыСменыШин
    ИЗ
        РегистрСведений.уатАгрегатыТС КАК УстановленоНаТС
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.уатАгрегатыТС КАК СнятоСТС
            ПО УстановленоНаТС.СерияНоменклатуры = СнятоСТС.СерияНоменклатуры
                И УстановленоНаТС.ТС = СнятоСТС.ТС
                И (СнятоСТС.СостояниеАгрегата = ЗНАЧЕНИЕ(Перечисление.уатСостоянияАгрегатов.Снято))
                И СнятоСТС.Период>=УстановленоНаТС.Период
    ГДЕ            
        УстановленоНаТС.СерияНоменклатуры = &Шина
        И УстановленоНаТС.СостояниеАгрегата = ЗНАЧЕНИЕ(Перечисление.уатСостоянияАгрегатов.УстановленоВРаботе)
    СГРУППИРОВАТЬ ПО УстановленоНаТС.Период;
    
ВЫБРАТЬ
        Д.ДатаУстановкиШиныНаТС,
        Д.ДатаСнятияШиныСТС,
        Выбор когда Месяцы.Номер=0 Тогда Д.ДатаУстановкиШиныНаТС иначе НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(Д.ДатаУстановкиШиныНаТС, Месяц, Месяцы.Номер), Месяц) конец ДатаУст,
        Выбор когда Месяцы.Номер=РазностьДат(Д.ДатаУстановкиШиныНаТС, Д.ДатаСнятияШиныСТС, Месяц) тогда Д.ДатаСнятияШиныСТС иначе
         КонецПЕРИОДА(ДОБАВИТЬКДАТЕ(Д.ДатаУстановкиШиныНаТС, Месяц, Месяцы.Номер), Месяц) конец ДатаСн
    ПОМЕСТИТЬ ДатыСменыШинПоМесяцам
    ИЗ ДатыСменыШин КАК Д
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ Числа КАК Месяцы
        ПО (ДОБАВИТЬКДАТЕ(Д.ДатаУстановкиШиныНаТС, Месяц, Месяцы.Номер) МЕЖДУ Д.ДатаУстановкиШиныНаТС И КонецПериода(Д.ДатаСнятияШиныСТС, Месяц));

ВЫБРАТЬ
        ДатыСменыШин.ДатаУст,
        ДатыСменыШин.ДатаСн,
        УстановленоНаТС.Период КАК ДатаУстановкиШиныНаТС,
        УстановленоНаТС.СерияНоменклатуры КАК Шины,
        СнятоСТС.Период КАК ДатаСнятияШиныСТС,
        УстановленоНаТС.ТС КАК ТС,
        УстановленоНаТС.ТС.Модель КАК МодельТС,
        УстановленоНаТС.ТС.ГаражныйНомер КАК ИнвНомерТС,
        УстановленоНаТС.ТС.ГосударственныйНомер КАК ГосударственныйНомер,
        СнятоСТС.Регистратор.ПричинаОбращения КАК РегистраторПричинаОбращения,
        УстановленоНаТС.Регистратор УстановленоНаТС_Регистратор,
        СнятоСТС.Регистратор СнятоСТС_Регистратор
    ПОМЕСТИТЬ ШиныПомесячно
    ИЗ
        ДатыСменыШинПоМесяцам КАК ДатыСменыШин
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.уатАгрегатыТС КАК УстановленоНаТС
            ПО ДатыСменыШин.ДатаУстановкиШиныНаТС=УстановленоНаТС.Период
                И УстановленоНаТС.СостояниеАгрегата = ЗНАЧЕНИЕ(Перечисление.уатСостоянияАгрегатов.УстановленоВРаботе)
                И УстановленоНаТС.СерияНоменклатуры = &Шина
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.уатАгрегатыТС КАК СнятоСТС
            ПО ДатыСменыШин.ДатаСнятияШиныСТС=СнятоСТС.Период
            И СнятоСТС.СостояниеАгрегата = ЗНАЧЕНИЕ(Перечисление.уатСостоянияАгрегатов.Снято)
            И СнятоСТС.СерияНоменклатуры = &Шина;
            
ВЫБРАТЬ
            Ш.ТС,
            Ш.ДатаУст,
            Ш.ДатаСн,
            ИзносПробегШин.Организация КАК Организация,
            СУММА(ИзносПробегШин.Пробег) КАК Пробег
        Поместить ПробегЗаМесяц
        ИЗ  ШиныПомесячно как Ш
        Левое соединение
            РегистрНакопления.уатИзносПробегШин КАК ИзносПробегШин
            ПО Ш.Шины = ИзносПробегШин.СерияНоменклатуры
            И Ш.ТС = ИзносПробегШин.ТС
            И ИзносПробегШин.Период>=Ш.ДатаУст
            И ИзносПробегШин.Период<=Ш.ДатаСн

        СГРУППИРОВАТЬ ПО
            Ш.ТС,
            Ш.ДатаУст,
            Ш.ДатаСн,
            ИзносПробегШин.Организация;
                                
ВЫБРАТЬ
            Ш.ТС,
            Ш.ДатаУст,
            Ш.ДатаСн,
            ИзносПробегШин.Организация КАК Организация,
            СУММА(ИзносПробегШин.Пробег) КАК Пробег
        Поместить ОбщийПробег
        ИЗ  ШиныПомесячно как Ш
        Левое соединение
            РегистрНакопления.уатИзносПробегШин КАК ИзносПробегШин
            ПО Ш.Шины = ИзносПробегШин.СерияНоменклатуры
            И Ш.ТС = ИзносПробегШин.ТС
            И ИзносПробегШин.Период<=Ш.ДатаСн

        СГРУППИРОВАТЬ ПО
            Ш.ТС,
            Ш.ДатаУст,
            Ш.ДатаСн,
            ИзносПробегШин.Организация;
            
ВЫБРАТЬ
        ЕСТЬNULL(М.Пробег, 0) КАК ПробегЗаМесяц,
        ЕСТЬNULL(О.Пробег, 0) КАК ПробегОбщий,
        Ш.РегистраторПричинаОбращения,
        Ш.МодельТС,
        выбор когда Ш.ДатаУстановкиШиныНаТС=Ш.ДатаУст тогда Ш.ДатаУст иначе 0 конец КАК ДатаУстановкиШиныНаТС,
        выбор когда Ш.ДатаСнятияШиныСТС=Ш.ДатаСн тогда Ш.ДатаСн иначе 0 конец КАК ДатаСнятияШиныСТС,
        Ш.ДатаУст как МесГод,
        Ш.ИнвНомерТС,
        Ш.ГосударственныйНомер
    Из
        ШиныПомесячно Ш
    Левое соединение
        ПробегЗаМесяц М ПО Ш.ДатаУст=М.ДатаУст И Ш.ДатаСн=М.ДатаСн И Ш.ТС=М.ТС
    Левое соединение
        ОбщийПробег   О ПО Ш.ДатаУст=О.ДатаУст И Ш.ДатаСн=О.ДатаСн И Ш.ТС=О.ТС
14 Ёпрст
 
гуру
17.05.16
10:48
И ? Где ты тут упорядочивание втыкаешь ?
15 ЛучшийПрограммер1С
 
17.05.16
10:54
(14) Ну в результирующем надо получить сортировку по Ш.ДатаУст
16 Ёпрст
 
гуру
17.05.16
10:56
Упорядочить по Ш.ДатаУст
17 Ёпрст
 
гуру
17.05.16
10:57
воткни в конец и привет
18 ЛучшийПрограммер1С
 
17.05.16
10:59
(17) Ща попробую
19 ЛучшийПрограммер1С
 
17.05.16
11:06
(17) Странно, не ругается. А, вот в чем дело - во временной нельзя без первые

При формировании временной таблицы предложение УПОРЯДОЧИТЬ может использоваться только совместно с предложением ПЕРВЫЕ
20 ЛучшийПрограммер1С
 
17.05.16
11:12
(17) Да, всё нормально, спасибо.
21 Ёпрст
 
гуру
17.05.16
11:27
(19) а зачем сдалось упорядочивание во временной табличке ?
22 ЛучшийПрограммер1С
 
17.05.16
11:56
(21) Да это я чего-то правда не проснулся.
23 Тролль главный
 
17.05.16
12:01
во временных и подзапросах упорядочивание только когда нужны ПЕРВЫЕ N
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн