26.09.2012, 10:32 | #1 |
Участник
|
добавить поле в dialog класса
Добрый день. Помогите разобраться!
Есть класс для формирования отчёта, всё работает как надо, теперь необходимо добавить возможность фильтрации по валюте. Делаю так: В dialog добавил: X++: ret.addGroup("Валюта"); dialogCurrencyCode = ret.addFieldValue(typeid(CurrencyCode), curCode, "Валюта", "Валюта"); X++: DialogField dialogCurrencyCode; CurrencyCode curCode; Приведу на всякий случай весь код dialog: X++: protected Object dialog(DialogRunbase _dialog, boolean _forceOnClient) { dialog ret; FormstringControl fsc; ret = super(_dialog, _forceOnClient); ret.caption("Расшифровка дебиторской/кредиторской задолженности Развернутая"); ret.addGroup("Дата отчета"); dialogReportDate = ret.addFieldValue(typeid(TransDate), reportDate, "Дата отчета", "Дата отчета"); ret.addGroup("Балансовый счет"); dialogLedgerAccount = ret.addFieldValue(typeid(LedgerAccount), ledgerAccount, "Балансовый счет", "Балансовый счет"); // это то что нужно добавить ret.addGroup("Валюта"); dialogCurrencyCode = ret.addFieldValue(typeid(CurrencyCode), curCode, "Валюта", "Валюта"); // <---- fsc = dialogLedgerAccount.control(); fsc.replaceOnLookup(false); fsc.limitText(200); fsc.displayLength(20); return ret; } |
|
26.09.2012, 10:38 | #2 |
Участник
|
Забыл добавить! Класс наследуется от RunBaseBatch.
|
|
26.09.2012, 10:54 | #3 |
Участник
|
Точно этот класс вызывается при запуске отчёта? Поставьте точку останова на своём коде, проверьте. Частая ошибка - при копипасте в методе main() остаётся код по созданию экземпляра не того класса.
|
|
|
За это сообщение автора поблагодарили: mazzy (5). |
26.09.2012, 10:59 | #4 |
Участник
|
Я вызываю класс не из меню. Щёлкаю по нему в AOT правой кнопкой мыши -> открыть.
Так что думаю именно этот класс вызывается ;-) |
|
26.09.2012, 11:04 | #5 |
Участник
|
Цитата:
|
|
26.09.2012, 11:10 | #6 |
северный Будда
|
Я так понимаю. что здесь всё-таки не копипаст, а дописка методов класса без изменения main. Рекомендую следующее:
1) Посмотрите значение CurrentVersion в ClassDeclaration, увеличьте его на 1 и перекомпилите 2) убейте свой userdata и перезайдите в аксапту
__________________
С уважением, Вячеслав |
|
26.09.2012, 11:17 | #7 |
Участник
|
Проблема решена! Я идиот :-). Продублировал класс, чтобы старый не испортить если что то не так сделаю! А в main вызывается класс от которого делал копию! Заработало!! Всё оказалось именно так как вы сказали. Спасибо ещё раз!!!
|
|
26.09.2012, 11:27 | #8 |
Участник
|
Кстати, на своей практике я встречал интересный приём предназначенный, видимо, во избежании именно таких ситуаций.
X++: #define.ClassName(MyClass) class #ClassName extends RunBaseBatch { //... } static void main(Args args) { #ClassName className = new #ClassName (); ; //... } |
|
|
За это сообщение автора поблагодарили: rusk (1), Pustik (1), Link (3), NickMDAX (1). |
26.09.2012, 16:01 | #9 |
Axapta
|
Часть сообщений перенесена в тему Удобство чтения кода - залог и определенная гарантия его работоспособности
|
|