15.12.2006, 13:27 | #21 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: sukhanchik (3). |
15.12.2006, 13:34 | #22 |
Banned
|
|
|
15.12.2006, 16:42 | #23 |
Участник
|
также там есть подобия sidax, axpath, axunit2, правда табакса нет (хотя оригинальный портирован) - вобщем юзабилити улучшается, что не может не радовать.
|
|
15.12.2006, 19:07 | #24 |
Administrator
|
Ну во-первых спасибо belugin за его выложенный код по стеку вызовов.
Во-вторых есть возможность решить тоже самое более простым путем (без создания кучи классов), причем решить также и для случая когда SysInfoAction определен в строке инфолога Итак: 1. Добавляем в табличку SysInfolog поле типа контейнер xppCallStack 2. В Info\add пишем код (в конце метода): X++: if (_helpUrl || _sysInfoAction) { tmpInfoTable.helpUrl = _helpUrl; if (_sysInfoAction) { tmpInfoTable.action = _sysInfoAction.pack(); tmpInfoTable.actionClassId = classIdGet(_sysInfoAction); } else { tmpInfoTable.action = conNull(); tmpInfoTable.actionClassId = 0; } // Построение стека вызовов --> tmpInfoTable.xppCallStack = xSession::xppCallStack(); // Построение стека вызовов <-- tmpInfoTable.insert(); tmpActionId[this.line()+1] = tmpInfoTable.recId; } // Построение стека вызовов --> else { tmpInfoTable.clear(); tmpInfoTable.xppCallStack = xSession::xppCallStack(); tmpInfoTable.insert(); tmpActionId[this.line()+1] = tmpInfoTable.recId; } // Построение стека вызовов <-- 3. Добавляем в форму SysInfologBrowser - в метод context новый menuItem - стек вызовов и кнопку "Стек". На самом деле кнопки достаточно - если она всегда будет отображаться. 4. Создаем свою форму, в данном случае - Dev_StackTrace, с listBox-ом для отображения стека (в Dev_StackTrace есть еще поля - о них речи я не веду, т.к. они не участвуют в отображении стека вызовов) 5. Нехитрый код заполнит listBox (с названием контрола StackListbox): X++: int i; #define.lineToken(' - line ') ; for (i = 1; i <= conlen(xppCallStack); i += 2) { StackListbox.add(strfmt('%1%2%3', conpeek(xppCallStack, i), #lineToken, conpeek(xppCallStack, i + 1))); } 6. Стандартный класс из таким образом заполненного listbox-а на форме перейдет к коду: X++: SysTraceJumpToSource::doJumpToSource(StackListbox.getText(StackListbox.selection())); В общем вот так. Нюансы: 1. Форма SysInfologBrowser всегда загружена - поэтому для ее отладки требуется перезаход в Аксапту 2. После добавления поля в табличку требуется перезаход в Аксапту 3. Не дай Бог вливать все это добро под включенным АОСом - вылетят все и сразу 2EVGL: Дык не у всех же 4.0 Поэтому и облегчают себе жизнь не дожидаясь, когда это будет сделано в ядре 3.0
__________________
Возможно сделать все. Вопрос времени Последний раз редактировалось sukhanchik; 15.12.2006 в 19:16. |
|
|
За это сообщение автора поблагодарили: belugin (10). |
18.12.2006, 09:43 | #25 |
Мрачный тип
|
|
|
18.12.2006, 10:40 | #26 |
Участник
|
|
|
19.01.2007, 11:43 | #27 |
Участник
|
еще одну штуку выложил http://erpkb.com/Axapta/RegExearch
|
|
19.01.2007, 11:54 | #28 |
Member
|
Цитата:
Сообщение от EVGL
...
Извините за скепсис, но если бы программисты с тем же рвением занимались тем, что можно продать, а не интересными "приблудами", уровень благосостояния сообщества повысился бы. ... Так что не стоит так категорично.
__________________
С уважением, glibs® |
|