УФ. динамический список, группировка, сортировка.
Здравствуйте, уважаемые коллеги.
Возникла следующая задача:
а) динамический список на управляемой форме
б) используется произвольный запрос с группировками (с удовольствием бы отказался от них, но увы)
в) ряд реквизитов источника данных специально проиндексирован во избежание.
Необходимо включить возможность сортировки списка по ряду проиндексированных реквизитов щелчком на заголовке колонки, но вот как это сделать - волосы уже шевелятся. Может пнете в нужную сторону?
Возникла следующая задача:
а) динамический список на управляемой форме
б) используется произвольный запрос с группировками (с удовольствием бы отказался от них, но увы)
в) ряд реквизитов источника данных специально проиндексирован во избежание.
Необходимо включить возможность сортировки списка по ряду проиндексированных реквизитов щелчком на заголовке колонки, но вот как это сделать - волосы уже шевелятся. Может пнете в нужную сторону?
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
ну что ж. Все многочисленные примеры показывают, что сделать быструю сортировку штатными средствами, в том числе через настройку списка в пользовательском режиме в случае, если используется оператор "группировать по" в тексте запроса динамического списка - невозможны.
Решение - програмная сортировка
Решение - програмная сортировка
&НаКлиенте
Процедура СортироватьСписокПоПолю(Список, ПолеНаименование)
Список.Порядок.Элементы.Очистить();
Порядок = Список.Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных"));
Порядок.Поле = Новый ПолеКомпоновкиДанных (ПолеНаименование);
Порядок.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный;
Порядок.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Возр;
Порядок.Использование = Истина;
КонецПроцедуры
Показать
(7)
А вложенный запрос (с группировкой во вложенном запросе) как вариант не подходит?
&НаКлиенте
Процедура СортироватьСписокПоПолю(Список, ПолеНаименование)
Список.Порядок.Элементы.Очистить();
Порядок = Список.Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных"));
Порядок.Поле = Новый ПолеКомпоновкиДанных (ПолеНаименование);
Порядок.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный;
Порядок.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Возр;
Порядок.Использование = Истина;
КонецПроцедуры
Процедура СортироватьСписокПоПолю(Список, ПолеНаименование)
Список.Порядок.Элементы.Очистить();
Порядок = Список.Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных"));
Порядок.Поле = Новый ПолеКомпоновкиДанных (ПолеНаименование);
Порядок.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный;
Порядок.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Возр;
Порядок.Использование = Истина;
КонецПроцедуры
А вложенный запрос (с группировкой во вложенном запросе) как вариант не подходит?
Прошло 7 лет... 8.3.18.. я с этой же проблемой.
скажу сразу у меня получилось.
опытным путем я выяснил что "группировать по" нельзя делать с участием "основной таблицы".
если группировать во вложенном запросе- то быстрая сортировка не пропадает.
в итоге я "заколхозил" запрос следующим образом.
весь его впихнул во вложенный запрос. там сгруппировал.
а в верхнем уровне запроса снова выбрал свой документ. и связал его с вложенным запросом.
Я не знаю насколько это получилось оптимально.. но сработало
скажу сразу у меня получилось.
опытным путем я выяснил что "группировать по" нельзя делать с участием "основной таблицы".
если группировать во вложенном запросе- то быстрая сортировка не пропадает.
в итоге я "заколхозил" запрос следующим образом.
весь его впихнул во вложенный запрос. там сгруппировал.
а в верхнем уровне запроса снова выбрал свой документ. и связал его с вложенным запросом.
Я не знаю насколько это получилось оптимально.. но сработало
(13) oldfornit,
Разницу то я чую. Но запрос внутри динамического списка и нужен для получения данных, которые потом отображаются. В другом месте результатом этого запроса воспользоваться невозможно. Так сделайте запрос без группировки, а группировку опишите в настройках динамического списка.
Разницу то я чую. Но запрос внутри динамического списка и нужен для получения данных, которые потом отображаются. В другом месте результатом этого запроса воспользоваться невозможно. Так сделайте запрос без группировки, а группировку опишите в настройках динамического списка.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот