|  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 | |||
| 
 |