Показать сообщение отдельно
Старый 21.02.2013, 09:41   #1  
Apollon33 is offline
Apollon33
Участник
 
53 / 10 (1) +
Регистрация: 05.10.2007
Помогите с Query
Друзья, всем доброго времени суток
Возможно подобные темы здесь уже не раз обсуждались, но что-то не нашел ничего подходящего.
Помогите, пожалуйста, с запросом. Нужно реализовать формирование отчета по РБП в разрезе групп расхода. Как выбрать подели учета по соответствующей группе я примерно знаю, но вот как выбрать соответствующие проводки? Вот кусок кода метода, который подсчитывает суммы по проводкам
X++:
query = new Query();

    qbds = query.addDataSource(tablenum(RDeferralsTable));
    qbds.orderMode(orderMode::GroupBy);
    qbds.addSortField(fieldNum(RDeferralsTable, DeferralsId));
    qbds.addSortField(fieldnum(RDeferralsTable, Name));
    qbds.addSortField(fieldNum(RDeferralsTable, AcquisitionDate));
    qbds.addSelectionField(fieldNum(RDeferralsTable, Name));
    qbds.addSelectionField(fieldNum(RDeferralsTable, DeferralsId));
    qbds.addSelectionField(fieldNum(RDeferralsTable, AcquisitionDate));

    qbds = qbds.addDataSource(tablenum(RDeferralsTrans));
    qbds.orderMode(orderMode::GroupBy);
    qbds.relations(true);
    qbds.addSortField(fieldNum(RDeferralsTrans, TransDate));
    qbds.addSelectionField(fieldNum(RDeferralsTrans, DeferralsId));
    qbds.addSelectionField(fieldNum(RDeferralsTrans, DeferralsBookId));
    qbds.addSelectionField(fieldNum(RDeferralsTrans, TransDate));
    qbds.addSelectionField(fieldNum(RDeferralsTrans, Amount), SelectionField::Sum);
    qbds.addRange(fieldNum(RDeferralsTrans, TransDate)).value(queryRange(dateStartYr(reportDate), reportDate));
    qbds.addRange(fieldNum(RDeferralsTrans, DeferralsBookId)).value(rDeferralsBookId);
    qbds.addRange(fieldNum(RDeferralsTrans, StornoRecId)).value(int2str(0));

    if (dimensionCriteria5)
    {
        qbr = qbds.addRange(fieldId2Ext(fieldnum(RDeferralsTrans, Dimension), 5));
        qbr.value(dimensionCriteria5);
    }

    qbds = qbds.addDataSource(tablenum(RDeferralsBook));
    qbds.orderMode(orderMode::GroupBy);
    qbds.relations(true);
    qbds.addSelectionField(fieldNum(RDeferralsBook, DeferralsId));
    qbds.addSelectionField(fieldNum(RDeferralsBook, DeferralsBookId));
    qbds.addSelectionField(fieldNum(RDeferralsBook, LifeTime), SelectionField::Sum);
    qbds.addSelectionField(fieldNum(RDeferralsBook, DeferralsAmount), SelectionField::Sum);
    qbds.addRange(fieldNum(RDeferralsBook, Status)).value(queryValue(RDeferralsStatus::Open));

    if (dimensionCriteria5)
    {
        qbr = qbds.addRange(fieldId2Ext(fieldnum(RDeferralsBook, Dimension), 5));
        qbr.value(dimensionCriteria5);
    }

    if (rDeferralsGroupId)
    {
        qbds.addRange(fieldNum(RDeferralsBook, DeferralsGroupId)).value(rDeferralsGroupId);
    }

    qbds = qbds.addDataSource(tablenum(RDeferralsLedger));
    qbds.joinMode(joinMode::ExistsJoin);
    qbds.relations(false);
    qbds.addLink(fieldNum(RDeferralsBook, PostingProfile), fieldNum(RDeferralsLedger, PostingProfile));
Буду очень благодарен за помощь.