Долго смотрел этот запрос. Честно говоря, так и не понял, что должно получиться в результате.
Если можно, расскажите словами.
В любом случае, предлагаю альтернативный вариант запроса и пару вопросов:
X++:
public void executeQuery()
{
QueryBuildDataSource qbds;
QueryBuildRange qbdsrange3;
QueryBuildDataSource qbds1;
str _rangeClose;
QueryBuildDataSource qbdsStd;
QueryBuildRange qbrStatus;
;
//запрос по таблице РБП
qbds1 = this.query().dataSourceTable(tableNum(RDeferralsTable));
qbds1.clearRanges();
qbds1.clearLinks();
qbdsStd = this.query().dataSourceTable(tableNum(RDeferralsBook));
if (!qbdsStd)
{
qbdsStd = qbds1.addDataSource(tablenum(RDeferralsBook));
qbdsStd.joinMode(JoinMode::ExistsJoin);
qbdsStd.relations(true);
}
qbrStatus = SysQuery::findOrCreateRange(qbdsStd, fieldnum(RDeferralsBook,Status));
if (Cat_OpenDef.value() == NoYes::No)
{
qbrStatus.value(enum2str(RDeferralsStatus::Open));
}
else
{
qbrStatus.value(SysQuery::valueUnlimited());
}
super();
}
Вопросы:
1. Зачем вы делаете присоединение источника из кода?
2. Почему бы не сделать это присоединение в методe init() источника?