Показать сообщение отдельно
Старый 09.02.2006, 10:20   #7  
DreamCreator is offline
DreamCreator
Moderator
Аватар для DreamCreator
Axapta Retail User
 
553 / 45 (3) +++
Регистрация: 04.11.2004
Адрес: Казань
Цитата:
Сообщение от AndyD
Во-вторых, JournalId надо тоже добавлять в расширенный диапазон, иначе соединение получается ч/з OR, а не AND
..
PS. Select можно построить по этому-же принципу
X++:
 while select inventJournalTrans
        where   inventJournalTrans.JournalId == _inventJournalTable.JournalId &&
                inventJournalTrans.Qty - inventJournalTrans.Qty       <   
                inventJournalTrans.Qty + inventJournalTrans.QtyRegistered
С циклом получилось! Написал так:

PHP код:
 while select inventJournalTrans
        where   inventJournalTrans
.JournalId == _inventJournalTable.JournalId &&
                
inventJournalTrans.Qty inventJournalTrans.QtyRegistered 
Через query не получилось -- Ошибка расширенного диапазона запроса: Синтаксическая ошибка рядом с 52.

PHP код:
static void testMatchingFieldsByQuery(Args _args)
{
    
Query                   query = new Query();
    
QueryBuildDataSource    qbds;
    
QueryBuildRange         qbrQty;
    
QueryRun                queryRun;
    
InventJournalTrans      inventJournalTrans;
    
InventJournalTable      inventJournalTable InventJournalTable::find('075221_090');
    ;

    
qbds query.addDataSource(tableNum(InventJournalTrans),"InventJournalTrans");
    
qbds.addRange(fieldNum(InventJournalTrans,JournalId)).value(inventJournalTable.JournalId);
    
qbds.addRange(fieldNum(InventJournalTrans,IncompleteDelivery)).value(queryValue(NoYes::No));
    
qbrQty qbds.addRange(fieldNum(InventJournalTrans,JournalId));
    
qbrQty.value("((inventJournalTrans.JournalId == \"" inventJournalTable.JournalId + @"\) &&
        (inventJournalTrans.Qty - inventJournalTrans.Qty < inventJournalTrans.Qty + inventJournalTrans.QtyRegistered))"
);

    
queryRun = new queryRun(query);

    while (
queryRun.next())
    {
        
inventJournalTrans queryRun.get(tableNum(InventJournalTrans));
        
info(inventJournalTrans.ItemId);
    }

Немного переписал -- но без этого не компилировалось, думаю идею сохранил.