Имя: Пароль:
1C
1С v8
Не получается сортировка в зависимости от выбора пользователя
0 1CNachalo
 
20.02.18
13:00
Задача: организовать сортировку в зависимости от выбора пользователя.
Возможность выбора порядка сортировки для пользователя организовываю через поле переключателя.
Прописываю процедуру при изменении в поле переключателя:

Процедура СортировкаПриИзменении(Элемент)
Если Объект.Сортировка = "2"
            Тогда Объект.ПолеСортировки = "Номер"
    ИначеЕсли    Объект.Сортировка = "3"
            Тогда Объект.ПолеСортировки = "Номер УБЫВ"
    ИначеЕсли    Объект.Сортировка = "4"
            Тогда Объект.ПолеСортировки = "Дата"
    ИначеЕсли    Объект.Сортировка = "5"
            Тогда Объект.ПолеСортировки = "Дата УБЫВ"

КонецЕсли;

В запросе указываю:

|УПОРЯДОЧИТЬ ПО
        |&ПолеСортировки";

После запроса прописываю:
Запрос.УстановитьПараметр("ПолеСортировки", Объект.ПолеСортировки);


Ставлю точку останова. Вижу, что в Объект.ПолеСортировки попадает нужное значение. Ошибок не выдает. Но и порядок вывода инфы никак не меняется.

Почему?
1 dezss
 
20.02.18
13:03
а что ты потом с результатом запроса делаешь?
2 dezss
 
20.02.18
13:04
И вообще не понятно, где ты пытаешься эту сортировку прикрутить?
В форме документа сортируешь таб. часть?
3 1CNachalo
 
20.02.18
13:26
Потом результат запроса вывожу как сообщения:

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
            
            Если Объект.ВыводитьТолькоПроведенныеДокументы И Не ВыборкаДетальныеЗаписи.Проведен
                Тогда Продолжить;
                КонецЕсли;
                     Номер1=ВыборкаДетальныеЗаписи. Номер;
            НомерНовый=УбратьЛидирующиеНулиВНомере( Номер1);
            Сообщить (НомерНовый
        +"  |  "
        +Формат(ВыборкаДетальныеЗаписи.Дата,"ДФ= dd.MM.yyyy")
        +"  |  "
        +ВыборкаДетальныеЗаписи.Поставщик);

            
            
            КонецЦикла;
4 1CNachalo
 
20.02.18
13:28
При этом сообщения выводятся, но их порядок, от того, что была добавлена сортировка, не меняется
5 catena
 
20.02.18
13:34
(4)Ну еще бы.
Вставляй в текст, а не параметром.
ПолеСортировки = "номер убыв";

|УПОРЯДОЧИТЬ ПО
        |"+ПолеСортировки;
6 Darych
 
20.02.18
13:37
НЕ  
Запрос.УстановитьПараметр("ПолеСортировки", Объект.ПолеСортировки);
А
Текстзапроса + "УПОРЯДОЧИТЬ ПО "+Объект.ПолеСортировки
или стрзаменить("&ПолеСортировки", Объект.ПолеСортировки)
7 Darych
 
20.02.18
13:38
(6)+или стрзаменить(текстзапроса,"&ПолеСортировки", Объект.ПолеСортировки)
8 1CNachalo
 
20.02.18
17:09
Спасибо! сейчас буду пробовать
9 1CNachalo
 
20.02.18
17:32
Не работает так, выдает ошибки
10 1CNachalo
 
20.02.18
18:44
Если делаю вот так, как в 6
Текстзапроса + "УПОРЯДОЧИТЬ ПО "+Объект.ПолеСортировки

выдает ошибку, что Объект.ПолеСортировки не найден.
Мной же процедура при изменении переключателя выбора способа сортировки производилась на клиенте. А запрос - на сервере - может поэтому
11 h-sp
 
20.02.18
18:48
(10) это без разницы. Объект виден во всей форме.
12 1CNachalo
 
20.02.18
19:22
(11) Тогда почему?
13 1CNachalo
 
20.02.18
19:23
(6) стрзаменить("&ПолеСортировки", Объект.ПолеСортировки)

Вот это куда надо писать?
14 1CNachalo
 
20.02.18
19:27
(5) Как, если по заданию пользователь нажатием кнопки выбирает способ сортировки.
Варианты, которые пользователь может выбрать:
а) сортировать по номеру по возрастанию,
б) по номеру по убыванию,
в) по дате возрастание,
г) по дате убывание,
д) без сортировки.

Тут же одно поле в "Упорядочить как" не пропишишь, как я понимаю
15 Franchiser
 
гуру
20.02.18
19:28
Запрос.Текст = стрзаменить(запрос.текст,твойпараметр,твоеполе)
16 1CNachalo
 
20.02.18
20:48
Работает!!! Спасибо ВСЕМ!