Показать сообщение отдельно
Старый 17.03.2007, 09:56   #2  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2480 (88) +++++++++
Регистрация: 20.08.2005
Причина проста. В классе sysSaveSetup в методе Pack() есть такой вызов
X++:
return setupRunForm.design().packUserSetting();
При этом в нем происходит генерация эксепшена Exception::Warning (судя по всему, просто вызов trow Exception::Warning; ).
По-этому происходит вываливание из метода 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).