Лучше сделать так
X++:
if (_p1 == 260/* #taskNew*/)
SysSetupFormRun::GRD_NewRecordMode(this.hWnd(), true);
if (_p1 == 2840 && SysSetupFormRun::GRD_NewRecordMode(this.hWnd()))
ret = 1;
else
ret = super(_p1);
if (_p1 == 260 /* #taskNew*/)
SysSetupFormRun::GRD_NewRecordMode(this.hWnd(), false);
и еще добавить вот такой метод
X++:
// pkoz 27.07.2007
static boolean GRD_NewRecordMode(int _hwnd, boolean _parm = false)
{
SysGlobalCache SysGlobalCache = infolog.globalCache();
boolean ret;
;
if (prmIsDefault(_parm)) // читаем
{
ret = SysGlobalCache.get(funcName(), _hWnd, false);
}
else
{
if (_parm)
{
SysGlobalCache.set(funcName(), _hWnd, _parm);
}
else
{
SysGlobalCache.remove(funcName(), _hWnd); // значение false не кладем
// а просто чистим кеш - чтобы не флудить его ненужными значениями - все равно
// hwnd почти всегда новый выделяется
}
ret = _parm;
}
return ret;
}
При таком подходе нет ошибок выполнения при фильтрации в лукапах.