Тема: Query.pack()
Показать сообщение отдельно
Старый 24.01.2011, 13:55   #9  
Denicce is offline
Denicce
Участник
 
62 / 54 (2) ++++
Регистрация: 22.03.2005
Адрес: Москва
Можно так сделать. Хоть какое-то "удобство".

новый метод \Classes\Global\queryValueEnum
X++:
static str queryValueEnum(int _value, Name _dsName, FieldName _fieldName)
{
    return strfmt("(%1.%2 == %3)", _dsName, _fieldName, _value);
}
X++:
static void testQueryPack(Args _args)
{
    Query                q1, q2;
    QueryBuildDataSource qbds1, qbds2;
    container            con;
    ;
    q1    = new Query();
    qbds1 = q1.addDataSource(tablenum(InventTrans));

    qbds1.addRange(fieldnum(InventTrans, StatusIssue)).value(queryValueEnum(StatusIssue::None, qbds1.name(), "StatusIssue"));
    qbds1.addRange(fieldnum(InventTrans, StatusIssue)).value(queryValueEnum(StatusIssue::Sold, qbds1.name(), "StatusIssue"));

    qbds1.addRange(fieldnum(InventTrans, StatusReceipt)).value(queryValueEnum(StatusReceipt::None,      qbds1.name(), "StatusReceipt"));
    qbds1.addRange(fieldnum(InventTrans, StatusReceipt)).value(queryValueEnum(StatusReceipt::Purchased, qbds1.name(), "StatusReceipt"));

    info(qbds1.toString());
    con = q1.pack();
    q2  = new Query(con);
    qbds2 = q2.dataSourceTable(tablenum(InventTrans));
    info(qbds2.toString());
}