![]() |
#1 |
Участник
|
Как прицепить несколько джоинов к одному датасорсу в динамическом запросе?
Добрый день всем. Что-то голова не варит уже... Объясните пожалуйста, почему нельзя к одному датасорсу подсоединить несколько других. Пытаюсь через OuterJoin взять информацию о клиенте. Версия AX4.
X++: Query q = new SysQuery(); QueryBuildDataSource qbdsCustTable = q.addDataSource(tablenum(CustTable)); QueryBuildDataSource qbds; ; qbds = qbdsCustTable.addDataSource(tablenum(CustTable_APM)); qbds.joinMode(JoinMode::OuterJoin); qbds.fetchMode(QueryFetchMode::One2Many); qbds.relations(true); qbds = qbdsCustTable.addDataSource(tablenum(CustTable_ACM)); qbds.joinMode(JoinMode::OuterJoin); qbds.fetchMode(QueryFetchMode::One2Many); qbds.relations(true); info(q.dataSourceNo(1).toString()); Если оставить соединение только с одной таблицей, все отрабатывает замечательно. И почему запрос подобной сложности отрабатывает к примеру в SysSecurityFormSetup.buildSecurityIdMenuAccessQuery(), где на один DS накидывают OuterJoin и ExistsJoin? См. переменную accessRightsListDataSource: X++: securityFormDataSource = accessRightsListDataSource.addDataSource(tablenum(SysSecurityFormTable)); securityFormDataSource.joinMode(JoinMode::OuterJoin); securityFormDataSource.fetchMode(QueryFetchMode::One2Many); securityFormDataSource.relations(true); queryBuildRange = securityFormDataSource.addRange(fieldnum(SysSecurityFormTable, FormName)); queryBuildRange.value(_formName); queryBuildDataSource = accessRightsListDataSource.addDataSource(tablenum(UserGroupList)); queryBuildDataSource.joinMode(JoinMode::ExistsJoin); queryBuildDataSource.fetchMode(QueryFetchMode::One2One); queryBuildDataSource.addLink(fieldnum(AccessRightsList, GroupId), fieldnum(UserGroupList, GroupId));
__________________
// no comments |
|