27.09.2012, 06:42 | #1 |
NavAx
|
ловля глюков в AX 2012
Коллеги,
Как вы уже наверное заметили, в AX 2012, от привычных инструментов, таких как table browser или перекрестные ссылки пользы мало, в силу обильного использования динамического мета-программирования, хардкодинга через макросы, ну и, конечно же, суррогатных полей и связок по RecId. Но необходимость дебажить никто не отменял. Более того, местами полностью переписанная логика, возросший уровень сложности и дезориентированность консультантов выводят эту необходимость на новый уровень. В свзяи с чем вопрос. Удалось ли кому либо из вас сформировать какие либо рекомендации или приемы анализа кода и данных в 2012? Может какие-то новые инструменты появились или старые улучшены? Спасибо
__________________
Isn't it nice when things just work? |
|
|
За это сообщение автора поблагодарили: mazzy (2), Greggy (1), perestoronin (1). |
27.09.2012, 11:08 | #2 |
Участник
|
При наведении на Recid в обозревателе или отладчике система подсвечивает код, название элемента. По поводу инструментов - целых два отладчика теперь
|
|
27.09.2012, 13:09 | #3 |
Участник
|
- динамического мета-программирования,
Там не так его много (кроме инициализации AccountungRules и т.д.) решается чтением кода инициализации и XML документации - хардкодинга через макросы, Такого вообще не видел - можно пример? - суррогатных полей и связок по RecId. Дебаггер расширен, показывает поля связей. Еще есть проблема с получением данных из временных таблиц - я ее решаю логгированием. Хотелось бы чтобы в вопросе были конкретные примеры. |
|
|
За это сообщение автора поблагодарили: macklakov (1). |
27.09.2012, 15:26 | #4 |
северный Будда
|
дебаггер - это хорошо
но есть таблицы (типа Dir*) набитые ссылочными полями с RecId. чтобы отфильтровать нужные данные, надо сначала руками найти, какие RecId соответствуют выборке. причём маску на фильтрации не применить поэтому table browser действительно стал куда менее информативным.
__________________
С уважением, Вячеслав |
|
27.09.2012, 15:26 | #5 |
Участник
|
"Не так страшен черт как его малюют."
Проблем с макросами не встречал, да и 4ке и 5ке они (макросы) были тот же #InventDimJoin. Ссылки по RecId есть, но их не стало слишком много. В общем вполне терпимо, кроме тех мест где излишне нормализовали данные и логику например классы EcoRes*. Но ничего сверхъестественного, обычно для понимания хватает дебагера и перекрестных ссылок. Самое неприятное в 2012 это глюки CIL, вот тут остается только надеяться, что подчистят в следующих сервиспаках.
__________________
aLL woRk aNd nO JoY MAKes jAck a dULL Boy |
|
27.09.2012, 16:14 | #6 |
Участник
|
А что там с глюками CIL ?
|
|
27.09.2012, 16:47 | #7 |
Участник
|
А кто-нибудь пробовал понять причину ошибки, например, при разноске накладной по закупке? Когда просто пишется, что счет ГК не найден, а посмотреть в коде можно только до вызова сервиса какого-то?
__________________
Ivanhoe as is.. |
|
27.09.2012, 17:06 | #8 |
Участник
|
Тут целую книгу про сервисы в аксе выпускают http://www.ksaelen.be/wordpresses/dy...2012-services/
А серьезно - снимите галку "Выполнять бизнес-логику в CIL" в параметрах пользователя и облегчатся ваши искания в три с половиной раза. Сервис это просто класс, только выполняется в CIL. Помимо CIL в 2012 есть еще чудесная технология - global cache - это прям черная дыра, поглощающая материю тут и выплевывающая антиматерию где-то там. |
|
|
За это сообщение автора поблагодарили: mazzy (2), macklakov (1), Logger (4), kALVINS (3), Ivanhoe (3). |
27.09.2012, 17:15 | #9 |
Участник
|
Цитата:
осмотреть в коде можно только до вызова сервиса какого-то
|
|
|
За это сообщение автора поблагодарили: Ivanhoe (1). |
27.09.2012, 17:59 | #10 |
Участник
|
Для глупых консультантов - что именно и как открыть надо? Подключится к сервису надо через пункт меню Debug? А дальше что?
__________________
Ivanhoe as is.. |
|
27.09.2012, 22:06 | #11 |
Axapta
|
2 Ivanhoe
|
|
|
За это сообщение автора поблагодарили: Logger (5), Ivanhoe (1). |
27.09.2012, 23:25 | #12 |
Участник
|
Из чего делаю вывод, что для консультантов лучше старый способ и отключение выполнения CIL.
__________________
Ivanhoe as is.. |
|
28.09.2012, 04:31 | #13 |
NavAx
|
\Classes\AccDistFormViewProjectExtension\initializingView и прочие классы из семейства AccountingDistribution
__________________
Isn't it nice when things just work? |
|
28.09.2012, 09:34 | #14 |
Участник
|
Я чо-то вообще там не вижу ничего, что бы выходило за пределы простых констант. Возможно код возник раньше чем появился \System Documentation\Functions\formControlStr
Последний раз редактировалось belugin; 28.09.2012 в 09:42. |
|
28.09.2012, 10:12 | #15 |
NavAx
|
Цитата:
Их и раньше было больше чем следует, но с 2012 стало еще хуже. Это ведь я показал только пример локального макроса. А еще и куча глобальных появилось. Причем совершенно безумных. К примеру: #LedgerConsolidate заменитель обычного Enum #SubledgerJournal и подобные явно созданы чтобы спрятать хардкод от контроля Best Practice И конечно же старый но шедевральный #Characters. Из серии:"на зло маме отморожу уши"
__________________
Isn't it nice when things just work? Последний раз редактировалось macklakov; 28.09.2012 в 10:33. |
|
|
За это сообщение автора поблагодарили: ta_and (2), imir (1). |
28.09.2012, 11:46 | #16 |
Участник
|
Цитата:
Сообщение от imir
Тут целую книгу про сервисы в аксе выпускают http://www.ksaelen.be/wordpresses/dy...2012-services/
А серьезно - снимите галку "Выполнять бизнес-логику в CIL" в параметрах пользователя и облегчатся ваши искания в три с половиной раза. Сервис это просто класс, только выполняется в CIL. Помимо CIL в 2012 есть еще чудесная технология - global cache - это прям черная дыра, поглощающая материю тут и выплевывающая антиматерию где-то там.
__________________
aLL woRk aNd nO JoY MAKes jAck a dULL Boy |
|
28.09.2012, 11:59 | #17 |
Участник
|
>>> #LedgerConsolidate заменитель обычного Enum
По моему в таких случаях макросы используют постоянно (для индексов в контейнерах) - я даже не помню где использзуют энамы. Для энамов надо заполонить кучу свойств связанных с UI, чключая метки. К тому же результат будет менее нагляден (в случае макросов мы сразу видим какому значению соответствует какая позиция, в случае энамов придется лазит по аждому значению) Про остальные, согласен, что не очень хорошо, но не согласен, что это сильно затрудняет понимание |
|
28.09.2012, 12:14 | #18 |
Участник
|
__________________
Ivanhoe as is.. |
|
28.09.2012, 15:35 | #19 |
Участник
|
Пакетные задания, которые выполняются на сервере, работают на CIL коде.
__________________
aLL woRk aNd nO JoY MAKes jAck a dULL Boy |
|
28.09.2012, 16:26 | #20 |
Участник
|
Для отладки можно и не в пакете запустить то же задание.
Явно и всегда в CIL выполняется код, потребляемый порталом, репортингом, воркфлоу(?), благо пока это все не юзается активно. Кстати, CIL еще надо пересобирать отдельно, иначе в CIL код будет старый, что может приводить к интересным последствиям, при этом: Если у вас в приложении хоть где-то есть нескомпилированный метод - CIL не обновится. Если вы забыли нажать кнопку - создать инкрементный CIL - CIL не обновится. Если вы нажмете кнопку - генерировать полный CIL - сервер будет пыхтеть сутки, сожрет кучу памяти, может упасть - и CIL не обновится. Если у вас больше одного AOS - второй и далее надо перегружать, иначе - ну вы поняли (MS кстати пообещал подумать об этом) If you hold back anything, I'll kill ya. If you bend the truth or I think you're bending the truth, I'll kill ya. If you forget anything, I'll kill ya. In fact, you're gonna have to work very hard to stay alive, Nick. Now do you understand everything I've said? Because if you don't, I'll kill ya. (Lock, Stock, and Two Smoking Barrels(С)) ЗЫ CIL-у тем не менее - лучей добра, некоторые алгоритмы отнего сильно выигрывают, а некоторые технологи без него не могут в принципе Последний раз редактировалось imir; 28.09.2012 в 16:36. |
|
Теги |
ax2012, cil, debug, debug code, debug managed code, отладка, отладчик |
|
|