Имя: Пароль:
1C
1С v8
СКД. ВычислитьВыражение с отбор по полю текущей записи.
0 Classic
 
26.06.20
19:04
В последнее время часто сталкиваюсь с задачей, которую никак в общем виде добить не могу.

В общем виде задача такая - посчитать итоги на уровне группировки, которой в отчете нет :)

Пример:

У нас есть данные в таком виде

Подразделение
Должность
ФизЛицо

Мне для каждого физлица необходимо вывести количество людей, работающих в его подразделении на его должности.

Если в отчете есть группировки Подразделение-+-Должность-+-Физлицо в виде дерева по одному элементу на каждое поле, то задача тривиальная
ВЫЧИСЛИТЬВЫРАЖЕНИЕ("КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ФизЛицо)", "Должность")

Но если мы в отчете убираем из дерева группировок Должность и оставляем только Подразделение-+-ФизЛицо, как сразу возникают проблемы.

Решил ли кто-то подобную задачу именно агрегатными функциями СКД? Потому как модифицировать набор данных под каждую подобную задачу надоело.

Ход моих мыслей, которые зашли в тупик:
1. Каким-то образом передать в ВЫЧИСЛИТЬВЫРАЖЕНИЕ значения текущей строки. Что-то типа ВЫЧИСЛИТЬВЫРАЖЕНИЕ("СУММА(ВЫБОР КОГДА Должность = ТекущиеДанные.Должность ТОГДА 1 ИНАЧЕ 0 КОНЕЦ", "Подразделение"). Но ни ТекущиеДанные, ни НаборДанных, ни что-то другое не отработало. Хотя подозреваю, что что-то обязательно должно быть.
2. Я смог получить таблицу значений с должностями и количеством
ВЫЧИСЛИТЬВЫРАЖЕНИЕ("ВЫЧИСЛИТЬВЫРАЖЕНИЕСГРУППИРОВКОЙТАБЛИЦАЗНАЧЕНИЙ(""Должность КАК Должность, КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ФизЛицо)"", ""Должность"", ""ДолжностьУпр = Должность"")", "Подразделение")
Она хорошо на уровне каждого физлица выводить информацию по текущим должностям с количество работников. Как бы теперь эту таблицу отсортировать по текущей должности? Если ли какие-то возможности отбора по таблице значений?

В целом, если как-то получится передать в вышестоящие расчеты значения из текущей группировки это решило бы целый пласт задач.
Заранее спасибо за идеи