View 如何基于具有动态范围的查询刷新/同步视图?

View 如何基于具有动态范围的查询刷新/同步视图?,view,axapta,synchronized,dynamics-ax-2012,x++,View,Axapta,Synchronized,Dynamics Ax 2012,X++,我有一个带有查询的简单视图,我的自定义查询有一个动态范围 在类SysQueryRangeUtil中,我插入了一个自定义公共静态方法,并将其复制到自定义查询中。 这个范围很好用。但是我有一个问题,当范围条件改变时,如果我想看到新的视图(带有新选择的记录),我必须在AOT我的视图中同步 但是这个操作不能对一个简单的系统用户执行 有没有一种方法可以在视图中使用动态范围而不经常同步 我的动态范围与curUserId()当更改打开表单/视图的用户时,视图必须更改显示的记录有关。如果我想看到差异,我必须每次

我有一个带有查询的简单视图,我的自定义查询有一个动态范围

在类
SysQueryRangeUtil
中,我插入了一个自定义公共静态方法,并将其复制到自定义查询中。 这个范围很好用。但是我有一个问题,当范围条件改变时,如果我想看到新的视图(带有新选择的记录),我必须在AOT我的视图中同步

但是这个操作不能对一个简单的系统用户执行

有没有一种方法可以在视图中使用动态范围而不经常同步

我的动态范围与
curUserId()
当更改打开表单/视图的用户时,视图必须更改显示的记录有关。如果我想看到差异,我必须每次同步,但对我来说,这不是一个可用的解决方案

MyView


谢谢大家

不要在查询中使用范围,请在表单级别移动此逻辑

在表单的
classDeclaration
方法中声明类型为
QueryBuildRange
的变量

重写表单数据源上的
init
方法:

public void init()
{
    ;

    super();

    queryRange = Table1_ds.query().addRange(MyView_ds.queryBuildDataSource(), AccountNum);
    queryRange.status(RangeStatus::Hidden);
}
public void executeQuery()
{
    ;

    queryRange.value(filterBycurUserId());

    super();
}
重写表单数据源上的
executeQuery
方法:

public void init()
{
    ;

    super();

    queryRange = Table1_ds.query().addRange(MyView_ds.queryBuildDataSource(), AccountNum);
    queryRange.status(RangeStatus::Hidden);
}
public void executeQuery()
{
    ;

    queryRange.value(filterBycurUserId());

    super();
}

谢谢@Aliaksandr Maksimau。但是我需要用ctrl+G过滤这个值。用这种方法我不能这样做,但如果我使用RangeStatus::Locked或Open,我允许对表单执行自由查询。请使用
Table1\u ds.query().addQueryFilter()
而不是
addRange
。所有用户ctrl-G都是过滤器,而不是范围。谢谢@Aliaksandr Maksimau。