Имя: Пароль:
1C
1С v8
СКД и рейтинг значенией ресурсов внутри произвольной вышестоящей группировки
, , ,
0 SiAl-chel
 
04.07.17
14:23
Доброго дня, коллеги. Дайте совет, пжл.

Есть отчет на СКД, например "количество" и "сумма" в разрезе "клиентов", "организаций", "номенклатуры". Причем пользователь произвольно меняет порядок группировок.

Вопрос в том, что имея внутри группировки, например "контрагенты", данные о том какая номенклатура, в каком количество и за какую сумму была продана, нужно узнать рейтинг по сумме данной номенклатуры среди покупок этого клиента, т.е. какая номенклатура на первом месте по сумме продаж, какая на втором.

Выглядеть это должно примерно так:

Пупкин    | 120 шт. |  3300 р. |
  Утюг    |  20 шт. |  1800 р. | 1
  Кирпич  | 100 шт. |  1500 р. | 2

Как этого добиться в СКД? Нужно как-то получить таблицу значений из записей вышестоящей группировки, но функция СКД ВычислитьВыражениеСГруппировкойТаблицаЗначений() требует жесткого порядка группировок, и потому я уже голову сломал, как такое сделать, так как с СКД работаю недавно и немного.

У кого есть мысли в какую сторону рыть?
2 SiAl-chel
 
05.07.17
05:56
Ап. Тема еще актуальна.
3 ВРедная
 
05.07.17
06:34
(2) Я использовала принцип добавления порядкового номера в запросе.
Соединяешь с этой же таблицей по СуммаОсн > СуммаПорядок или (СуммаОсн = СуммаПорядок и КоличествоОсн > КоличествоПорядок) или (СуммаОсн = СуммаПорядок и КоличествоОсн = КоличествоПорядок и НоменклатураОсн > НоменклатураПорядок)

В поля выводишь все поля основной таблицы и еще одно поле номенклатуры из таблицы порядок.
а потом суммируешь количество различных НоменклатурПорядок запихнув в группировку все поля из основной таблицы. Получишь свою таблицу упорядоченную по сумме, потом по количеству и потом по номенклатуре.
4 SiAl-chel
 
05.07.17
07:04
(3) Спасибо за ответ. Но это решение ведь оперирует с набором данных, и значит решение жестко привязано к определенному составу и порядку группировок. Ведь так? Я бы так и и сделал, если бы не СКД, а был бы простой запрос.
5 SiAl-chel
 
05.07.17
10:52
Ап. Может появились спецы по СКД, использовавшие ВычислитьВыражениеСГруппировкойТаблицаЗначений()?
6 patria0muerte
 
05.07.17
11:06
Может неправильно понял задачу, но а просто сортировку настроить для группировки по убыванию суммы? И вывести поле "Номер по порядку"
7 SiAl-chel
 
05.07.17
13:00
Всё. Вопрос решен. Почти решен.
Вернулся к использованию функции МестоВПорядке(). Проблема изначально была в том, что функция МестоВПорядке("Количество") выдавала бред. Но потом я понял, что раз у нас поле в ресурсах, то надо использовать агрегирование - МестоВПорядке("Количество"). Теперь все показывает близко к идеалу, но имеет ту же беду что и РАНГ() в Excel: один и тот же ранг (рейтинг) у одинаковых значений.
То есть, если при сортировке по нужному полю идет 7 разных значений нужного ресурса, то функция вернет номера от 1 до 7, если потом идут 3 записи с одним значение ресурса, то функция вернет 10.
Осталось придумать как теперь сделать, чтобы вместо ранга = 10, выводились ранги 8,9,10.
Для Excel это решается использованием коррекции с помощью функции СЧЕТЕСЛИ(). А что использовать в СКД вместо такой функции, я пока не понял.
8 SiAl-chel
 
05.07.17
13:02
(6) Нет, не подойдет. Выводится три ресурса, и по каждому надо показать рейтинг, то есть номер порядка по убыванию значения ресурса. А вот сортировка в группировках должна быть по основному представлению. Если это номенклатура, то значит по наименованию, и  т.д. и т.п.
9 ВРедная
 
05.07.17
15:20
(7) а если так:
МестоВПорядке("Количество, Номенклатура")
10 SiAl-chel
 
06.07.17
06:55
(9) Нет. Порядок группировок и их состав могут быть разными, нужен рейтинг записи из текущей группировки. Группировки "Номенклатура" может вообще не быть.
+(7) Опечатка была. Вместо выражения ресурса "Рейтинг по количеству"
МестоВПорядке(Количество)
нужно использовать
МестоВПорядке(Сумма(Количество))