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