Вы можете использовать «Внешнее соединение» вместо «Отложено», а затем программно изменить режим соединения, когда есть поиск полей в HRMVirtualNetworkTable.
Добавьте этот метод в класс SysQuery:
static void updateJoinMode(QueryBuildDataSource qds)
{
Counter r;
if (qds)
{
qds.joinMode(JoinMode::OuterJoin);
for (r = 1; r <= qds.rangeCount(); r++)
{
if (qds.range(r).value() && qds.range(r).status() == RangeStatus::Open)
{
qds.joinMode(JoinMode::InnerJoin);
break;
}
}
}
}
В executeQuery () источника данных EmplTable:
public void executeQuery()
{;
SysQuery::updateJoinMode(this.queryRun() ? this.queryRun().query().dataSourceTable(tableNum(HRMVirtualNetworkTable)) : this.query().dataSourceTable(tableNum(HRMVirtualNetworkTable)));
super();
}
Иногда this.queryRun () возвращает null, поэтому используйте this.query ().
Обновление:
Обратите внимание, что вышеприведенное не относится к AX 2012 и более поздним версиям, где вы можете использовать фильтры запросов во внешних соединениях. См. Как использовать класс QueryFilter с внешними объединениями .