|
СКД. Выбрать первые. |
☑ |
0
Lama12
04.09.14
✎
15:50
|
Сломал голову. Хрень выходит :)
Есть регистр накопления "Продажи".
Строим отчет за несколько лет, по годам.
Т.е. измерения контрагент, года.
Ресурс - СтоимостьБезСкидок.
Все вроде просто. Но хотят что б выводилось 10 первых по общей сумме за выбранный период. Причем количество первых должно меняться в параметрах.
Что сделал.
Сделал два набора данных.
Один полноценный.
Второй обрезанный в котором есть группировка оборотов по контрагенту и больше ничего нет. Этот сортируется и выбирается первые 10 контрагентов.
Два этих набора данных связываю по контрагентам. Второй слева первый справа.
Почему-то выбираются не те контрагенты которые во втором наборе данных.
Если не понятно объяснил, могу выложить всю схему полностью.
|
|
1
AHuk87
04.09.14
✎
15:58
|
А что мешает сделать всё в одном запросе?
|
|
2
Lama12
04.09.14
✎
16:04
|
(1) Итоги отсортировать нельзя в одном запросе :)
|
|
3
Kalambur
04.09.14
✎
16:11
|
да четне понятно вообще
|
|
4
AHuk87
04.09.14
✎
16:14
|
Я потом понял, что тебе количество записей тоже нужен параметром. Так как мне лень думать. Я бы запросом получил записи с итогом по годам. Обходя в цикле нужное количество записей добавлял бы в таблицу и её уже как внешний источник передал в СКД.
|
|
5
AHuk87
04.09.14
✎
16:18
|
Ну или если более экономично подходить к ресурсами системы, тогда бы собирал текст запроса через объединение по годам с выбором сразу нужного количества записей и получил бы сразу готовую таблицу. Но опять же - внешний источник.
|
|
6
Lama12
04.09.14
✎
16:35
|
(5) Да... с внешним источником вариант. Но лень :)
Хочется внутри сделать.
Хотя...
|
|
7
Kalambur
04.09.14
✎
16:42
|
(6) чем пакетный запрос не устраивает? с 2 одинаковыми запросами?
|
|
8
Lama12
04.09.14
✎
16:47
|
(7) Разве в пакетном можно сортировку результата сделать?
|
|
9
Necessitudo
04.09.14
✎
16:50
|
Изврат. Не проще ПриКомпоновкеРезультата в зависимости от значения параметра править текст запроса?
|
|
10
Lama12
04.09.14
✎
16:56
|
(9) Правлю :)
Как иначе сделать "Первые NN"?
Но это во вспомогательном наборе данных.
На основном такую штуку лучше не делать. Пользователь может так искарежить настройки отчета, что он будет выводить всякую фигню. А мне надо что б контрагенты всегда выбирались только те, которые являются лидерами по покупкам за выбранный период.
|
|
11
brznzglwgn
04.09.14
✎
17:11
|
(10) Можно сделать нумерацию строк в запросе. А в настройки добавить отбор с фильтром на нумератор...
|
|
12
Lama12
04.09.14
✎
18:07
|
Обошел проблему криво.
Сделал в запросе СКД фильтр на список контрагентов.
Перед построением отчета делаю аналогичный запрос без СКД, с выборкой топ NN контрагентов. Их передаю в параметр СКД.
Скорость практически не упала.
|
|
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший