Если на инит датасорса, то выглядит так:
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. При сбросе фильтра тоже остаётся это условие.
Как ни странно (я тоже не ожидал), оба этих варианта оказались с точки зрения пользователя одинаковые.
(Либо я что-то не заметил)