Job:
X++:
int enumNumber = 0;
HcmPosition position,
parentPosition;
HcmPositionHierarchy hierarchy;
QueryRun queryRun;
Query ret = new Query();
QueryBuildDataSource qbdsPosition,
qdbsParentPosition,
qbdsHierarchy;
qbdsPosition = ret.addDataSource(tableNum(HcmPosition));
qbdsHierarchy = qbdsPosition.addDataSource(tableNum(HcmPositionHierarchy));
qbdsHierarchy.clearLinks();
qbdsHierarchy.addLink(fieldNum(HcmPosition, RecId), fieldNum(HcmPositionHierarchy, Position));
qbdsHierarchy.joinMode(JoinMode::OuterJoin);
qbdsHierarchy.fetchMode(QueryFetchMode::One2One);
qdbsParentPosition = qbdsHierarchy.addDataSource(tableNum(HcmPosition));
qdbsParentPosition.clearLinks();
qdbsParentPosition.addLink(fieldNum(HcmPositionHierarchy, ParentPosition), fieldNum(HcmPosition, RecId));
qdbsParentPosition.joinMode(JoinMode::InnerJoin);
qdbsParentPosition.fetchMode(QueryFetchMode::One2One);
queryRun = new QueryRun(ret);
while (queryRun.next())
{
enumNumber++;
position = queryRun.get(TableNum(HcmPosition), 1);
parentPosition = queryRun.get(TableNum(HcmPosition), 2);
info(strFmt('%1: %2 / %3)', enumNumber,
position.PositionId,
parentPosition.PositionId
));
}
info(int2str(enumNumber));
}
Как то так, лишнее убрал ибо привязываю еще толпу таблиц и полей