|
![]() |
#1 |
Banned
|
FILTER(TablesAX.LedgerJournalTrans, ...)
Мне вот интересно, как внутри реализована следующая процедура в Electronic Reporting:
X++: $JournalLines: Calculated field = FILTER(TablesAX.LedgerJournalTrans, TablesAX.LedgerJournalTrans.JournalNum='$JournalNum'): Record list |
|
![]() |
#2 |
Banned
|
Ответ самому себе: RTFM. Так и написано, что FILTER работает на уровне БД, в то время как WHERE - на уровне списка в оперативной памяти. Уфф, пронесло.
|
|
![]() |
#3 |
Участник
|
Хм.. Логичнее было бы наоборот сделать.
__________________
// no comments |
|
|
За это сообщение автора поблагодарили: S.Kuskov (2). |
![]() |
#4 |
Участник
|
Filter это подобие LINQ - он находит QueryProvider от исходного списка и передает выражение ему. Т.е. работа зависит от того, что за список.
Если исходный список взят из таблички, то он делает Query и передает работу ему. В отличие от LINQ есть статическая валидация того, что условие может быть транслировано в Query Если исходный список взят из модели данных, он пытается сначала сделать query, но если не получается, молча деградирует до where. Последнее сделать чтобы похзволить менять model mapping и format mapping продолжил работать. Сейчас я думаю, что логичей было не делать новую функцию для кажого случая использования (у нас уже две таких) а сделать одну общую. Query(Where(список, условие)) |
|
|
За это сообщение автора поблагодарили: EVGL (5), dech (3). |
|
|