Показать сообщение отдельно
Старый 30.11.2008, 23:50   #7  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Если на инит датасорса, то выглядит так:

X++:
public void init()
{
    QueryBuildRange qbr;
    ;

    super();

    qbr = this.query().dataSourceNo(1).findRange(fieldNum(InventLocation, InventLocationId));

    if (! qbr )
        qbr = this.query().dataSourceNo(1).addRange(fieldNum(InventLocation, InventLocationId));
    qbr.value(queryValue("ля-ля-ля"));

    //qbr.status(RangeStatus::Locked);
}
Наличие qbr.status(RangeStatus::Locked); не позволит пользователю изменить этот рэндж или добавить новый такой же.

В принципе то же самое можно сделать и на executeQuery(), но этот вариант не считается "бест практис":
X++:
public void executeQuery()
{
    QueryBuildRange qbr;
    ;

   qbr = this.query().dataSourceNo(1).findRange(fieldNum(InventLocation, InventLocationId));

    if (! qbr )
        qbr = this.query().dataSourceNo(1).addRange(fieldNum(InventLocation, InventLocationId));
    qbr.value(queryValue("ля-ля-ля"));

    //qbr.status(RangeStatus::Locked);

    super();
}
И тоже будет работать (2 AndyD). Проверял на 3.0. При сбросе фильтра тоже остаётся это условие.
Как ни странно (я тоже не ожидал), оба этих варианта оказались с точки зрения пользователя одинаковые.
(Либо я что-то не заметил)
__________________
Zhirenkov Vitaly