Есть еще способ, о котором часто забывают
PHP код:
static void Job143(Args _args)
{
Query q = new Query();
QueryRun qr;
int i, j;
str range;
;
q.addDataSource(tableNum(InventTable));
for( i = 0; i < 20; i++)
{
range = '';
for( j = 1; j <= 100; j++)
{
range += (range ? ',' : '') + int2str(i*100 + j);
}
q.dataSourceNo(1).addRange(fieldNum(InventTable, RecId)).value(range);
}
qr = new QueryRun(q);
qr.next();
info(qr.query().dataSourceNo(1).toString());
}
Т.е. на одно поле можно накладывать несколько раз range, которые в запросе будут объединяться по ИЛИ.
Как видно из примера для MS-SQL можно спокойно запихнуть 2000 ограничений, а для Oracle мне удалось и более 5000. И никаких join