25.04.2007, 16:33 | #1 |
Постигающий
|
Сохранение пользовательских настроек в диалоге отчета
создал класс, добавляющий в диалог отчета пару полей. Как реализовать сохранение пользовательских настроек в этих полях диалога?
Конкретно : в какой момент (метод) сохранять значения полей? Последний раз редактировалось Андрей К.; 25.04.2007 в 16:35. |
|
25.04.2007, 17:33 | #2 |
Программатор
|
Почитайте про методы Pack() и UnPack(). В первом - данные покуются, во втором наоборот. И класс занаследуйте от RunBase
|
|
25.04.2007, 17:41 | #3 |
Постигающий
|
зачем от RunBase то наследовать ? наследую от RunBaseReportStd.
Объясните Вот так я сохраняю пользовательские настройки... X++: public boolean prompt() { boolean ret; ; ret = super(); if (dialogCanceled && this.batchInfo()) { last = fieldAssetTransDate.value(); xsyslastvalue::saveLast(this); } return ret; } X++: public Object dialog(DialogRunbase _dialog, boolean _forceOnClient) { DialogRunbase dialog = super(_dialog, _forceOnClient); ; fieldAssetTransDate = dialog.addField(typeid(RAssetTransDate), "@SYS4163"); xSysLastValue::getLast(this); fieldAssetTransDate.value(last); return dialog; } Последний раз редактировалось Андрей К.; 25.04.2007 в 17:46. |
|
25.04.2007, 17:58 | #4 |
Участник
|
a Pack() и UnPack() перекрыты?
|
|
25.04.2007, 18:04 | #5 |
Программатор
|
|
|
25.04.2007, 18:09 | #6 |
Участник
|
Скорей всего, вы смешали все в кучу.
И, возможно, то, что вы сохраняете вручную, перетирается тем, что сохраняется системой (сериализация). Соответственно, после распаковки старое значение недоступно |
|
25.04.2007, 18:13 | #7 |
MCT
|
Вообще то
X++: class RunbaseReportStd extends runbaseReport X++: classFactory.lastValuePut(saveList.pack(), #CurrentList); |
|
25.04.2007, 19:11 | #8 |
Участник
|
Есть форма tutorial_SysLastValue
|
|
25.04.2007, 21:18 | #9 |
Постигающий
|
2 ice
нет, pack и unpack оставил родительские. 2 kashperuk по вашему,выход кроется в перекрытии pack и unpack?Или как иначе избежать нежелательных последствий сериализации? 2 fedka вот именно из этой учебной формы я и взял прием сохранения пользовательских настроек.Но там все понятно-сохраняем в close,инициируем в run у формы.Я же имею дело с диалогом. 2 АLL Я правильно понял,что нужно перекрывать pack unpack в своем классе?И именно в этих методах сохранять и восстанавливать пользовательские настройки? |
|
25.04.2007, 21:26 | #10 |
Участник
|
Да. Необходимо перекрыть эти методы.
Более того, в них желательно не только сохранять это одно значение, а добавить его к уже сохраняемым. Форма tutorial_SysLastValue в данном случае как раз плохой пример, так как уже используется движок RunBase Лучше посмотрите код классов tutorial_RunBase* |
|
26.04.2007, 09:59 | #11 |
Постигающий
|
Я уже реально запутался...
какие то косяки с перекрытием pack unpack.. Вот мой ClassDeclaration, наследую от RunBaseReportStd X++: { RAssetTransDate rassetTransDate; DialogField fieldAssetTransDate; NoYes rassetOnlyResults; DialogField fieldassetOnlyResults; #define.CurrentVersion(1) #define.version1(1) #localmacro.CurrentList rassetTransDate, rassetOnlyResults #endmacro } Ошибка вылетает при распаковке. Видимо идет путаница с reportName и датой которую я ввел в поле при последнем запуске диалога |
|
26.04.2007, 10:08 | #12 |
Участник
|
Андрей, почему бы Вам не переделать отчет, взяв за основу класс tutorial_RunBaseReport? Проблемы все сами собой отпадут. Зачем вы пытаетесь навесить все это поверх RunBaseReportStd?
|
|
26.04.2007, 10:12 | #13 |
Постигающий
|
Я переделаю...Но потом снова возникнет проблема с сохранением последних введенных значений в моих полях...
Проблемы как раз в этом Последний раз редактировалось Андрей К.; 26.04.2007 в 10:19. |
|
26.04.2007, 10:42 | #14 |
Постигающий
|
Снова возникает вопрос, который был в начале "КАК СОХРАНЯТЬ ПОЛЬЗОВАТЕЛЬСКИЕ НАСТРОЙКИ?"
|
|
26.04.2007, 10:56 | #15 |
Постигающий
|
разобрался...нашел pack/unpack в каком то готовом классе...
|
|