Показать сообщение отдельно
Старый 17.09.2010, 09:04   #4  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от lev Посмотреть сообщение
...(но это не всегда возможно из-за определения какое условие подставлять И или ИЛИ. если писать в одном range, тогда в запросе будет условие И, а если в нескольких, то ИЛИ. и на эти грабли наступал ).
забыл добавить главный нюанс! так работает при добавлении отрицания в условие запроса, т.е. "!" или SysQuery::valueNot().

вот джобик для наглядности:
X++:
Query                   query;
    QueryBuildDataSource    qbds;
    QueryBuildRange         qbr;
    InventTable             inventTable;
    str                     filter;
    int                     i;
    ;
    // вариант №1 создаем один range и в него через запятую записываем условие -->
    query   = new Query();
    qbds    = query.addDataSource(tableNum(InventTable));
    qbr     = qbds.addRange(fieldNum(InventTable, ItemId));

    while select inventTable
    {
        i++;

        if (filter != '')
            filter += ', ';

        filter += '!' + inventTable.ItemId;

        if (i == 3)
            break;
    }

    qbr.value(filter);

    info('1-ый вариант -->');
    info(query.dataSourceTable(tableNum(InventTable)).toString());
    info('1-ый вариант <--');
    // <--------------------------------------------------------------------------

    i = 0;

    // вариант №2 для каждой номенклатуры добавляем range -->
    query   = new Query();
    qbds    = query.addDataSource(tableNum(InventTable));

    while select inventTable
    {
        i++;

        qbds.addRange(fieldNum(InventTable, ItemId)).value(SysQuery::valueNot(inventTable.ItemId));

        if (i == 3)
            break;
    }

    info('2-ой вариант -->');
    info(query.dataSourceTable(tableNum(InventTable)).toString());
    info('2-ой вариант <--');
    // <-----------------------------------------------------
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
За это сообщение автора поблагодарили: Logger (3).