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