16.03.2007, 19:26 | #1 |
Участник
|
saveUserSettings/loadUserSettings на форме
Понадобилось мне сохранять/восстанавливать кое-какие настройки, которые пользователь меняет на форме. В tutorial_SysLastValue настройки сохраняются в методе close(), а загружаются и применяются в методе run(). Непонятно, конечно, почему бы не восстанавливать настройки в методе init(), но это мелочи. Между тем у FormRun есть два метода - loadUserSettings() и saveUserSettings(), которые логично было бы использовать для загрузки и сохранения различных параметров с использованием SysLastValue.
При создании экземпляра формы, если посмотреть в отладчике, видно, что this на самом деле указывает на экземпляр SysSetupFormRun, производный от FromRun. Таким образом, класс SysSetupFormRun делает какую-то свою работу и, вызывая в нужных местах super(), выполняет, помимо прочего, соотв. методы нашей формы. SysSetupFormRun.init() вызывает init() формы, SysSetupFormRun.loadUserSetting() loadUserSetting() формы и т.д. Метод формы loadUserSettings() вызывается из метода init() примерно в такой последовательности: PHP код:
PHP код:
Axapta 3.0 KR2 |
|
17.03.2007, 09:56 | #2 |
Участник
|
Причина проста. В классе sysSaveSetup в методе Pack() есть такой вызов
X++: return setupRunForm.design().packUserSetting(); По-этому происходит вываливание из метода SysSetupFormRun.saveUserSettings() без вызова super(). В принципе, для обхода этой проблемы достаточно просто обрабатывать эксепшен. Единственно, придется править системные классы (SysSetupFormRun или sysSaveSetup). Почему вызывается эксепшен сказать не могу, пока не разобрался PS Разобрался. В общем, ошибка вызвана режимом отладки. Когда в форме стоит брейкпойнт не грузятся и не сохраняются пользовательские настройки. Но, при этом, метод design().hasUserSettings() возвращает TRUE. При вызове design().packUserSettings() происходит вызов эксепшена WARNING. Достаточно просто убрать точки останова из формы и вставить, к примеру, в перекрытом saveUserSettings() info, чтобы убедиться, что метод вызывается нормально PPS В четверка это проблема не воспроизводится. Там пользовательские настройки работают и с брейкпойнтами
__________________
Axapta v.3.0 sp5 kr2 Последний раз редактировалось AndyD; 17.03.2007 в 10:42. |
|
|
За это сообщение автора поблагодарили: _AnK_ (1), gl00mie (4). |