Имя: Пароль:
1C
1С v8
СКД. Выбрать первые.
, ,
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 контрагентов. Их передаю в параметр СКД.
Скорость практически не упала.