过滤表达式

简单的过滤器表达式也是一个数组。它包含一个或多个过滤条件,与运算符结合 - ANDORNOT。 (运算符不区分大小写):

[ 
  ['mainline', 'is', 'T'],
  'and', ['type','anyof',['CustInvc','CustCred']],
  'and', 'not', ['amount', 'equalto', '0.00'],
  'or', ['customer.companyname', 'contains', 'ltd']
]

更复杂的过滤器表达式,可以包含过滤器术语嵌套过滤器表达式,以及运算符。不允许超过 3 级嵌套表达式:

[ 
  ['mainline', 'is', 'T'],
  'and', ['type','anyof',['CustInvc','CustCred']],
  'and', [ ['customer.companyname', 'contains', 'ltd'],
           'or', ['customer.companyname', 'contains', 'inc']
         ],
  'and', [ ['subsidiary', 'is', 'HQ'],
           'or', ['subsidiary', 'anyof', '@HIERARCHY@']
         ],
  'and', ['trandate', 'notbefore', 'yesterday']
 ]

最后,让我们将所有这些完全放在 SS2.0 示例中:

var s = search.create({
    type    : 'transaction',        
    columns : [
               'trandate', 
               'tranid',
               'currency',
               'customer.companyname',
               'customer.country', 
               'amount' 
              ],
    filters : [ 
                ['mainline', 'is', 'T'],
                'and', ['type','anyof',['VendBill','VendCred']],
                'and', [ ['customer.companyname', 'contains', 'ltd'],
                         'or', ['customer.companyname', 'contains', 'inc']
                       ],
                'and', [ ['subsidiary', 'is', 'HQ'],
                         'or', ['subsidiary', 'anyof', '@HIERARCHY@']
                       ],
                'and', ['trandate', 'notbefore', 'yesterday']
              ]
});