08.07.2022, 13:54 | #1 |
Участник
|
View (DAX2012)
Добрый день!
В процессе реализации отчета потребовалось сделать вьюху, в которой выводится код продукта и продуктовые аналитики. Из-за архитектуры Аксапты, таблицы были естественно добавлены через OUTER JOIN. Но проблема в том, что при таком раскладе невозможно фильтроваться по пустым значениям или делать JOIN с другими таблицами. В качестве эксперимента, в скуле был подправлен запрос так чтобы можно было фильтроваться по пустым значениям. Все заработало как хотелось. Есть ли подобное свойство в Аксапте? |
|
08.07.2022, 14:08 | #2 |
Moderator
|
Цитата:
Сообщение от DesparioN
Добрый день!
В процессе реализации отчета потребовалось сделать вьюху, в которой выводится код продукта и продуктовые аналитики. Из-за архитектуры Аксапты, таблицы были естественно добавлены через OUTER JOIN. Но проблема в том, что при таком раскладе невозможно фильтроваться по пустым значениям или делать JOIN с другими таблицами. В качестве эксперимента, в скуле был подправлен запрос так чтобы можно было фильтроваться по пустым значениям. Все заработало как хотелось. Есть ли подобное свойство в Аксапте? Честно говоря - давно это было, но в DAX2009 решал аналогичную проблему построив два View. Первая - с OUTER JOIN как и у тебя. Вторая - построена вокруг первой вьюхи с мэппингом 1:1. Поскольку вторая вьюха работает с первой как с обычной таблицей, и не знает что там где-то внутри OUTER JOINS, то в итоге все работает правильно (То есть - фильтрутся и сортируется привычным для аксапты образом). Есть шансы что в более поздних версиях DAX семантика View изменилась и подход не взлетит, но попробовать не долго... |
|
|
За это сообщение автора поблагодарили: S.Kuskov (5). |
08.07.2022, 14:19 | #3 |
Участник
|
Не понял в чем именно у вас затруднение.
Но может быть вам поможет QueryFilter Для случая outer join там фильтр попадает в условие where а не ON |
|
08.07.2022, 14:19 | #4 |
Участник
|
Фокус не удался
И при прямом добавлении вьюхи во вьюху, и через query - результат идентичный. |
|
08.07.2022, 14:23 | #5 |
Участник
|
Затруднение в том что я не могу такую вьюху фильтровать и соединять с другими таблицами по пустым аналитикам, т.к. в поле хранится не "" а null
|
|
08.07.2022, 14:33 | #6 |
Moderator
|
Ну - как вариант - наделать кучу computed fields через SysComputedColumn::isNullExpression и возвращать нули, если поле в первой вьюхе равно Null, или само поле в обратном случае.
|
|
|
За это сообщение автора поблагодарили: DesparioN (1). |
08.07.2022, 15:13 | #7 |
Участник
|
В дополнение к сказанному fed - выглядит метод за таким computed field примерно так:
X++: public static str parentPartyIdValue() { str parentPartyIdField = SysComputedColumn::returnField(tablestr(DirPartyRelationshipEntity), dataEntityDataSourceStr(DirPartyRelationshipEntity, DirPartyTableParent), fieldstr(DirPartyTable, PartyNumber)); return SysComputedColumn::if( SysComputedColumn::isNullExpression(parentPartyIdField), SysComputedColumn::returnLiteral(''), parentPartyIdField); } |
|
|
За это сообщение автора поблагодарили: DesparioN (1), Logger (3). |
08.07.2022, 15:23 | #8 |
Участник
|
Благодарю, так получилось.
|
|
Теги |
computed field, view |
|
|