Фильтрация существующих проводок в Dynamics 365

Рассмотрим один из способов фильтрации существующих проводок на основе набора значений финансовой аналитики в Dynamics 365.

Предположим, что мы хотим видеть остатки на наших банковских счетах, сгруппированные по финансовому набору, который может отличаться от настроенного для ваших транзакций.

 

 

 

 

 

 

 

 

 

 

 

Например, существующие проводки предполагают наличие значений для следующих атрибутов измерения.

 

 

 

 

 

 

 

 

 

Однако, наш выбор может быть разным. Ради этого примера мы выбрали BusinessUnit и Department.

 

 

 

 

 

 

 

Таким образом, вместо одного баланса на весь банковский счет, мы хотим, чтобы он распределялся на каждую комбинацию значений BusinessUnit и Department.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Другой момент, который следует учитывать, заключается в том, что эти атрибуты не являются обязательными; другими словами, у нас нет значений для всех атрибутов во всех транзакциях.

 

 

 

 

 

 

 

 

 

Это может быть легко достигнуто, если мы найдем способ создать столбец со всеми искомыми значениями атрибутов измерения, объединенными, как показано на рисунке.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вообще говоря, это работа BI solution. Однако, это можно сделать в D365 с помощью Views.

Давайте решим эту проблему шаг за шагом.

Первое View предназначено для всех выбранных атрибутов, для которых мы должны заполнить значения, существуют они или нет.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Второе собирает все существующие значения, соответствующие выбранным атрибутам.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Затем группируем все найденные наборы атрибутов измерений.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Теперь мы создаем View на основе последнего и ищем атрибуты без отношения во внешнем соединении. Таким образом, мы получим декартово произведение всех возможных комбинаций между ними.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

На этом этапе мы соединяем последние с найденными (существующими) значениями. Здесь мы можем добавить вычисляемый столбец, если хотим увидеть что-то еще, кроме пустого значения.

 

 

 

 

 

 

 

 

 

 

 

 

 

private static server str displayValueWithNA()   // X++
{
    str         sRet;
    tableName   viewName                = viewstr(CDPDimensionAttributeValuesUnionView);
    str         cDisplayValue  = SysComputedColumn::comparisonField(viewName,
                                                                                viewstr(CDPDimensionAttributeValuesSelectedView),
                                                                                fieldStr(CDPDimensionAttributeValuesSelectedView, DisplayValue));
    
    sRet =
        SysComputedColumn::if(SysComputedColumn::isNotNullExpression(cDisplayValue),
                                cDisplayValue,
                                SysComputedColumn::returnLiteral('n/a')
                            );
 
    return sRet;
}

 

 

 

 

 

 

 

 

 

 

 

Конечное View будет содержать все значения, найденные на предыдущем шаге, сгруппированные по значению атрибута измерения, чтобы в вычисляемом столбце все значения были объединены в требуемом порядке.

 

 

 

 

 

 

 

 

 

 

 

private static server str finDimValues()   // X++
{
    return @"STUFF((SELECT '-' + t3.DisplayValue
                from CDPDimensionAttributeValuesUnionView as t3
                where
                t1.DimensionAttributeValueSet = t3.DimensionAttributeValueSet
                order by t3.DIMENSIONATTRIBUTE
                for xml path('')), 1, 1, '')";
}

 

 

 

 

 

 

 

 

Наличие этого View во внутренней комбинации соединений позволяет фильтровать любые транзакционные данные по набору измерений без кодирования.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Источник: http://alexvoy.blogspot.com/2019/08/how-to-filter-existing-transactions.html

Comments

So empty here ... leave a comment!

Добавить комментарий

Sidebar