Цитата:
Сообщение от
АртемМелихов
Судя по всему меня не понимают. если я напишу "001....009,002", то выпадет очень много записей, точнее все от 001 до 009, ибо два условия ("001..009" и "002") соединяются через или. А есть ли возможность объединить через и? Спасибо!
Судя по постановке, речь идет о том, что одно из условий накладывается программно, а второе - прилетает от пользователя? Если так, то пользовательский фильтр может сам оказаться довольно сложным (типа "001..009, 100..109, 777*"). В этом случае формировать запрос через ExtendedQuery - муторно, IMHO. Проще приджойнить таблицу саму к себе по ExistsJoin и наложить разные условия на разные DS.
Пример:
X++:
mainQbds = query.addDataSource(tablenum(InventTable));
mainQbds.addRange(fieldnum(InventTable, ItemId)).value("001..009, 002");
filterQbds = mainQbds.addDataSource(tablenum(InventTable));
filterQbds.relations(true);
filterQbds.joinMode(JoinMode::ExistsJoin);
filterQbds.addRange(fieldnum(InventTable, ItemId)).value("007..020, 006");
В итоге получится "пересечение множеств" (006, 007, 008, 009) - то чего вы и добиваетесь. Главный минус - громоздкость запроса (если нужно несколько таких "И", придется делать несколько джойнов).