AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
DAX
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 23.09.2010, 13:30   #5  
titov is offline
titov
Участник
 
73 / 87 (3) ++++
Регистрация: 23.12.2005
Адрес: Казань
X++:
static void PurchLineQuery(Args _args)
{
    QueryBuildDataSource        qbdsPurchLineSum,qbdsPurchTable,qbds;
    QueryBuildRange             qbr;
    Query                       q = new Query();
    QueryRun                    qr;
    PurchLine                   PurchLine;
    #define.itemIdParm('123')
    ;
    qbdsPurchLineSum    = q.addDataSource(tableNum(PurchLine));
    qbdsPurchLineSum.addSelectionField(fieldNum(PurchLine,PurchQty),SelectionField::Sum);//внимание на единицы измерения! может даже лучше идти по inventTrans
    qbr                 = sysQuery::findOrCreateRange(qbdsPurchLineSum,fieldNum(PurchLine,PurchStatus));
    qbr.value(queryValue(PurchStatus::Backorder));
    qbr                 = sysQuery::findOrCreateRange(qbdsPurchLineSum,fieldNum(PurchLine,ItemId));
    qbr.value(queryValue(#itemIdParm));

    qbdsPurchTable      = qbdsPurchLineSum.addDataSource(tableNum(PurchTable));
    qbdsPurchTable.joinMode(joinMode::ExistsJoin);
    qbdsPurchTable.fetchMode(QueryFetchMode::One2One);
    qbdsPurchTable.relations(true);
    qbr                 = sysQuery::findOrCreateRange(qbdsPurchTable,fieldNum(PurchTable,PurchStatus));
    qbr.value(queryValue(PurchStatus::Backorder));
    qbds                = qbdsPurchTable.addDataSource(tableNum(PurchLine));
    qbds.joinMode(joinMode::NoExistsJoin);
    qbds.fetchMode(QueryFetchMode::One2One);
    qbds.relations(true);
    qbr                 = sysQuery::findOrCreateRange(qbds,fieldNum(PurchLine,ItemId));
    qbr.value(queryValue(#itemIdParm));
    qbr                 = sysQuery::findOrCreateRange(qbds,fieldNum(PurchLine,RecId));
    qbr.value(strFmt('((%1.%2 != "%3") || (%4.%5 == "%5"))',
                        qbds.name(),
                        fieldId2name(tableNum(PurchLine),fieldNum(PurchLine,PurchStatus)),
                        queryValue(PurchStatus::Backorder),
                        qbds.name(),
                        fieldId2name(tableNum(PurchLine),fieldNum(PurchLine,Blocked)),
                        queryValue(NoYes::Yes)
                     )
             )       ;
    info(qbdsPurchLineSum.toString());
    qr              = new QueryRun(q);
    while (qr.next())
    {
        PurchLine       = qr.get(PurchLine.TableId);
        info(strFmt("%1 %2",PurchLine.PurchId,PurchLine.PurchQty));
    }
}
примерно так (4.0 в т.ч.)
За это сообщение автора поблагодарили: Evgeniy2020 (2), jeky (2).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Слетают SecurityKey. Что можно сделать? chanchala DAX: Программирование 9 16.02.2009 17:14
Где можно почитать про RFID в Аксапте Hans DAX: Функционал 7 19.12.2008 10:43
Можно ли в аксапте реализовать такой SQL запрос: Sergey_1972 DAX: Программирование 14 18.03.2004 16:33
Сводное планирование в Аксапте PSA DAX: Функционал 2 02.02.2004 15:24
можно ли сделать с помощью join следующий запрос: SergAY DAX: Программирование 1 29.07.2003 11:39

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 01:00.