20.10.2015, 12:35 | #1 |
Участник
|
Фильтр по финансовой аналитике
Как правильно применить?
на диалоге выбрали фильтр по финансовой аналитике, как его дальше применить? через Range никак ? соединять все таблицы DimensionAttributeValueSetItem; DimensionAttributeValue ; DimensionAttribute; ? а если фильтр по нескольким фин.аналитикам возможен, то такие соединения не слишком "тяжелые"? идти по записям, получать аналитику и сравнивать получается слишком долго. Последний раз редактировалось Start; 20.10.2015 в 12:43. |
|
20.10.2015, 12:52 | #2 |
Участник
|
Для фильтрации по аналитикам в Query есть специальные костыли - SysQuery::addDimensionAttributeRange(...)
|
|
|
За это сообщение автора поблагодарили: Михаил Андреев (3), trud (1), gl00mie (2). |
20.10.2015, 13:28 | #3 |
Участник
|
Спасибо!
Для пустого значения Range не добавится? Последний раз редактировалось Start; 20.10.2015 в 13:35. |
|
20.10.2015, 13:39 | #4 |
Участник
|
увы нет
|
|
20.10.2015, 16:41 | #5 |
Участник
|
Что есть пустое значение? Если фильтр для пустого значения, то нужно использовать SysQuery::valueEmptyString(), если нужно просто добавить Range, не указывая значения, то для этого нужно установить параметр _isDefaultRange = true.
|
|
21.10.2015, 09:10 | #6 |
Участник
|
Пустое значение для фин. аналитике в двенашке - это отсутствие записи с кодом аналитики в таблице DimensionAttributeValueSetItem для соответствующего набора кодов (DefaulDimension)
И, если посмотреть в код метода \Classes\DimensionProvider\addAttributeFilterToQuery (который и вызывается в конечном итоге из SysQuery::addDimensionAttributeRange()), то видно, что для пустого значения аналитики (а это SysQuery::valueEmptyString(), а не пустая строка) добавляется фильтр по JoinMode::NoExistsJoin - т.е. как раз таки будут найдены все комбинации аналитик, для которых нет записей с этой аналитикой Ну и если посмотреть, как добавляется фильтр, если значение отличается от SysQuery::valueEmptyString(), то видно, что датасорс со значениями аналитик подключается через JoinMode::OuterJoin, а сами значения в запрос передаются как фильтр к Query (т.е. попадают в предложение where). Если бы Аксапта поддерживала сиквельный null, то комбинацию "пустой" аналитики ИЛИ с какими-либо значениями можно было бы указать прямо в фильтре. Но, увы, с нашей данностью для этого придется делать юнион
__________________
Axapta v.3.0 sp5 kr2 |
|
|
За это сообщение автора поблагодарили: Михаил Андреев (5), mazzy (63), Владимир Максимов (10), Logger (3), A_BAS (2), arhat (1). |