Показать сообщение отдельно
Старый 24.05.2013, 18:35   #30  
maldini is offline
maldini
Участник
 
103 / 30 (2) +++
Регистрация: 06.03.2007
Адрес: москва
Цитата:
Сообщение от user_ax Посмотреть сообщение
Уважаемый maldini , если бы там было 3 таблицы, было бы более наглядно, с двумя у меня замечательно выходит и так.
Вот пример из 3 таблиц, так же можно ещё добавить таблицы

X++:
void main_query(boolean _count_query = false)
{
    VendInvoiceJour     VendInvoiceJour;
    VendInvoiceTrans    VendInvoiceTrans;
    InventTable         inventTable;
    QueryRun            QueryRun;
    Query query   =      new Query();
    QueryBuildDataSource qbds;
    QueryBuildRange      qbr;
    ;
    qbds  = query.addDataSource(tablenum(VendInvoiceJour));
    qbds.addSortField(fieldnum(VendInvoiceJour,purchId));
    qbds.addSelectionField(fieldnum(VendInvoiceJour,Qty), SelectionField::Sum);
    qbds.orderMode(OrderMode::GroupBy);
    qbds.addRange(fieldnum(VendInvoiceJour,purchId)).value('ЗП-000006');
 
    qbds  = qbds.addDataSource(tablenum(VendInvoiceTrans));
    qbds.addSortField(fieldnum(VendInvoiceTrans,purchId));
    qbds.orderMode(OrderMode::GroupBy);
    qbds.addLink(fieldnum(VendInvoiceJour,purchId),fieldnum(VendInvoiceTrans,purchId));
    qbds  = qbds.addDataSource(tablenum(InventTable));
    qbds.addSortField(fieldnum(InventTable,ItemId));
    qbds.orderMode(OrderMode::GroupBy);
    qbds.addLink(fieldnum(InventTable,ItemId),fieldnum(VendInvoiceTrans,ItemId));
    qbds.relations(true);
 
    QueryRun = new QueryRun(query);
    while (queryRun.next())
    {
        VendInvoiceJour = QueryRun.get(tablenum(VendInvoiceJour));
        VendInvoiceTrans    = QueryRun.get(tablenum(VendInvoiceTrans));
        inventTable         = QueryRun.get(tablenum(InventTable));
        info(strFmt("%1  %2",VendInvoiceJour.PurchId,VendInvoiceJour.Qty));
        info(strFmt("%1",VendInvoiceTrans.PurchId));
        info(strFmt("%1",InventTable.itemId));
    }
}
Если в запросе есть группировка то доступными будут только сгруппированные данные. Так работает любой sql. Выводится только то что присутствует в группировке, например InventTable.ItemGroup будет пустым так как его нет в группировке

Последний раз редактировалось maldini; 24.05.2013 в 19:18.