|  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 код: 
			 Кто-нить с этим сталкивался?..  Для проверки достаточно создать пустую форму, перегрузить у нее saveUserSettings() и поставить на него точку останова - у меня не срабатывает ни разу   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). | |