Нет, все-таки и в АХ30 вместо '==' toString выдает '=' и вместо '||' выдает 'or'.
Видимо, я спутал случаи, когда надо кусок кода из Аксапты вырезать и анализировать через SQL Management Studio
Указанный ниже джоб выдает практически одинаковые результаты в АХ30 и в АХ2009
В АХ30 результат такой:
SELECT * FROM InventTable WHERE ((ItemId = 123 OR ItemId = 124)) EXISTS JOIN * FROM InventTableModule WHERE InventTable.ItemId = InventTableModule.ItemId AND ((ModuleType = Склад))
В АХ2009 результат такой:
SELECT FIRSTFAST * FROM InventTable WHERE ((ItemId = N'123' OR ItemId = N'124')) EXISTS JOIN FIRSTFAST * FROM InventTableModule WHERE InventTable.ItemId = InventTableModule.ItemId AND ((ModuleType = 0))
Кстати, очень умно Аксапта2009 добавляет FirstFast, видимо, чувствует, что идет фильтрация по уникальному индексу. И еще удобно, что вместо "Склад" пишет значение 0.
PHP код:
static void Job471(Args _args)
{
Query Query;
QueryRun QueryRun;
QueryBuildDatasource qbds;
;
Query = new Query();
qbds = Query.addDataSource(tableNum(InventTable));
qbds.addRange(fieldNum(InventTable, ItemId)).value("123, 124");
qbds = qbds.addDataSource(tableNum(InventTableModule));
qbds.addRange(fieldNum(InventTableModule, ModuleType)).value(queryValue(ModuleInventPurchSales::Invent));
qbds.addLink(fieldNum(InventTable, ItemId), fieldNum(InventTableModule, ItemId));
qbds.joinMode(JoinMode::ExistsJoin);
QueryRun = new QueryRun(Query);
info(QueryRun.query().dataSourceNo(1).toString());
}