|
11.06.2015, 14:44 | #1 |
Участник
|
Получение данных с диалога
Создал такой диалог:
X++: class DialogCommRate extends RunBase { DialogField dialogField; DialogField dialogRate; DialogButton dialogButton; TradeCurencyConversion tcc; BankGroupId bgi; #define.CurrentVersion(1) #localmacro.CurrentList tcc, bgi #endmacro } public Object dialog() { DialogRunbase dlg; ; dlg = super(dlg); dlg.caption("@SYS54755"); dialogField = dlg.addField(typeid(TradeCurencyConversion)); dialogRate = dlg.addFieldValue(typeid(BankGroupId), bgi, "Коммерческий курс", "Коммерческий курс"); dialogRate.visible(false); return dlg; } public void dialogPostRun(DialogRunbase dialog) { ; Super(dialog); dialog.formRun().controlMethodOverload(true); dialog.formRun().controlMethodOverloadObject(this); } protected boolean fld1_1_selectionChange() { ; dialogRate.visible(dialogField.value() == 2); dialogRate.value(bgi); return true; } public container pack() { return [#CurrentVersion, #CurrentList]; } public boolean unpack(container packedClass) { Version version = RunBase::getVersion(packedClass); ; switch (version) { case #CurrentVersion: [version, #CurrentList] = packedClass; break; default: return false; } return true; } public boolean getFromDialog() { ; tcc = dialogField.value(); bgi = dialogRate.value(); return true; } X++: static void myJob(Args _args) { DialogCommRate d = new DialogCommRate(); d.prompt(); //тут ему надо задать начальное значение и получить обратно } Так же у меня не выходит передать ему начальное значение dialogRate, создавал метод parm но он не работает. Последний раз редактировалось syl; 11.06.2015 в 14:47. |
|
11.06.2015, 15:08 | #2 |
Участник
|
основная военная хитрость состоит в том, чтобы dialogField* создавать вне диалога, а не внутри его. тогда переменные dialogField* и будут вашими ручками, за которые можно дергать за вымя содержимое диалога.
см. класс tutorialRunBaseBatch. в частности методы dialog и getFromDialog |
|
11.06.2015, 15:11 | #3 |
Участник
|
что касается вашего класса и вашего вопроса, то диалог тут вообще не причем.
у вас есть класс. внутри класса приватные переменные. вы хотите получить доступ к приватным переменным извне класса. создавайте parm-методы (в Аксапте они заменяют традиционные геттеры и сеттеры). |
|
|
За это сообщение автора поблагодарили: syl (1). |
11.06.2015, 15:12 | #4 |
Молодой, подающий надежды
|
Цитата:
Цитата:
X++: static void myJob(Args _args) { DialogCommRate d = new DialogCommRate(); d.getLast(); d.parmBgi('test') if (d.prompt()) { info(d.parmBgi()); } }
__________________
Кононов Пётр |
|
|
За это сообщение автора поблагодарили: mazzy (2), syl (1). |
11.06.2015, 15:20 | #5 |
Участник
|
Я понимаю что подход в целом не правильный. Но задача в данном случае стоит именно такая.
Мне не разрешают изменять логику которая уже реализована, если передавать значения по ссылке то нету возможности управлять видимостью поля dialogRate в зависимости от значения dialogField. А если делать нормальную обработку в методе Run, то мне придется переписать текущую логику, что мне делать запретили )) |
|
11.06.2015, 15:37 | #6 |
Участник
|
Хм... Ну, если намеки не понимаете, то надо делать так.
1. Создаете в своем классе 2 дополнительных метода X++: TradeCurencyConversion parmTcc(TradeCurencyConversion _tcc = tcc) { ; tcc = _tcc; return tcc; } BankGroupId parmBgi(BankGroupId _bgi = bgi) { ; bgi = _bgi; return bgi; } X++: static void myJob(Args _args) { DialogCommRate d = new DialogCommRate(); // Если переменная, для которой надо задать начальное значение включена в макрос #CurrentList, // или формируется в методе unpack, то предварительно надо достать сохраненные значения d.getLast(); // Собственно передача начального значения ПОСЛЕ вызова getlast() d.parmBgi('test') if (d.prompt()) { // После закрытия диалога с пользователем через нажатие Ok читаем параметры info(strFmt('%1',d.parmBgi())); info(strFmt('%1',d.parmTcc())); } }
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
|
За это сообщение автора поблагодарили: syl (1). |
|
Похожие темы | ||||
Тема | Ответов | |||
Способы получение данных из AX на веб сайт | 6 | |||
AIF - получение данных | 5 | |||
Получение данных из RecordInsertList. | 1 | |||
Получение значений из диалога | 10 | |||
Получение данных из файла Excel | 11 |
|