Показать сообщение отдельно
Старый 07.07.2016, 14:50   #9  
Music is offline
Music
Участник
 
33 / 10 (1) +
Регистрация: 01.07.2014
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));
}
Как то так, лишнее убрал ибо привязываю еще толпу таблиц и полей

Последний раз редактировалось Music; 07.07.2016 в 14:54.