AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 25.01.2011, 22:07   #1  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,940 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
это одна из идей, которую я хочу пропихнуть в АХ 2012.
**** выделено отсюда Используете ли вы @SYS метки при создании своих партнерских расширений? ****

Цитата:
Сообщение от kashperuk Посмотреть сообщение
Да, это одна из идей, которую я хочу пропихнуть в АХ 2012.
Посмотрим, или получится.
Идея хорошая.

Иван, было бы неплохо пропихнуть еще парочку :
1. В отладчике выходить из метода не по последней строчке, а по закрывающей скобке "}" - очень этого не хватает. Сейчас приходится иногда вставлять в конце метода вызов метода пустышки - неудобно. Тем более что в других продуктах MS, именно так и работает. (Например, когда отлаживаешь в Excel макрос на VBA)
2. Облегчить каким-нибудь способом поиск мест в коде, в которых меняются свойства контрола или датасорса или поля датасорса. Поясню подробнее. Иногда разбираешь чужие модифы, ошибки и происходит вызов ядреного метода, например xRecord.insert() или xRecord_ds.active() - чтобы найти кто и откуда гадит, достаточно поставить точку останова внутри метода, воткнуть туда, например, простенький if с проверкой на некорректные значения и точкой останова и таким образом быстро найти проблему. Если метод не перекрыт, то перекрыть его и добавить свой код с проверками. А вот со свойствами датасорсов и контролов такой номер не прокатит, так как их перекрывать нельзя. А иногда очень нужно. Например выяснить, из-за чего же все-таки дизейблится поле и т.п. Возможно, решать надо совсем по другому, не так как я описываю. Например, чтобы отладчик мог задавать условные точки останова, по значению переменной или по значению свойства объекта. - Но в любом случае это очень нужная вещь - могла бы сэкономить кучу времени. Проще всего по-моему дать возможность обрабатывать любое свойство как метод, перекрывая его в код X++. Или сделать что-то по аналогии с использованием \System Documentation\Classes\FormRun\controlMethodOverload т.е. сделать настройку в ядре, которая вызывала бы определенный программистом метод при изменении заданного свойства объекта. Т.е. нужно мне поймать кто дизейблит контрол Object, я вызываю FromRun.XXXcontrolMethodOverload("MyMethodName4Invoke", Object, "Object_PropertyName") и при изменении свойства PropertyName ядро дергает мой метод MyMethodName4Invoke() передавая в него Object, а я ставлю в своем методе MyMethodName4Invoke() точку останова и вижу стек вызовов и быстро нахожу проблему.

Последний раз редактировалось Logger; 25.01.2011 в 22:19.
За это сообщение автора поблагодарили: Pustik (1), S.Kuskov (3).
Старый 25.01.2011, 22:32   #2  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,940 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Также отладчик не позволяет смотреть свойства объектов, а хотелось бы. Хотя это можно обойти программированием на X++ (например, перекрыть метод toString() в котором возвращать в строковом виде значения свойств), но как-то лениво...
Старый 26.01.2011, 13:27   #3  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
мне кажется, что хотелки с отладчиком и со средой разработки лучше формулировать так:
хочу чтобы разработка велась в Visual Studio и все инструменты этой среды разработки работали бы с аксаптовским кодом.
__________________
полезное на axForum, github, vk, coub.
За это сообщение автора поблагодарили: player (1), Deepoint (1).
Старый 26.01.2011, 13:41   #4  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,907 / 5717 (196) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Цитата:
Сообщение от mazzy Посмотреть сообщение
хочу чтобы разработка велась в Visual Studio и все инструменты этой среды разработки работали бы с аксаптовским кодом.
"Боги карают нас исполнением наших сокровенных желаний"
Боюсь что вместе с отладочно/программерскими феньками из VS, ты в нагрузку получишь жесткую "модель водопада", от которой не поздоровиться не только кодерам, но и консам, администраторам и тп...
Хотя это офтопик для данной темы.
За это сообщение автора поблагодарили: macklakov (2), aidsua (2), MikeR (3).
Старый 26.01.2011, 13:44   #5  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от fed Посмотреть сообщение
"Боги карают нас исполнением наших сокровенных желаний"
Ох... ты прав...

но все равно - хочу одну среду для разработки всего. задолбался прыгать из одной в другую.
__________________
полезное на axForum, github, vk, coub.
Старый 26.01.2011, 13:48   #6  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,907 / 5717 (196) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Цитата:
Сообщение от mazzy Посмотреть сообщение
Ох... ты прав...

но все равно - хочу одну среду для разработки всего. задолбался прыгать из одной в другую.
Обезьянья лапка

Давайте все таки формулировать пожелания правильно: "Хочу чтобы среда разработки была КАК в Visual Studio", а не "Хочу разрабатывать в Visual Studio"
Старый 26.01.2011, 14:46   #7  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от fed Посмотреть сообщение
Боюсь что вместе с отладочно/программерскими феньками из VS, ты в нагрузку получишь жесткую "модель водопада", от которой не поздоровиться не только кодерам, но и консам, администраторам и тп...
Как это связано?
Старый 26.01.2011, 15:04   #8  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,907 / 5717 (196) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Цитата:
Сообщение от belugin Посмотреть сообщение
Как это связано?
VS навязывает жесткую модель билда.А в аксапте можно, во первых переносить изменения проектами (хотя это и не лучший в плане стабильности способ), во вторых - запросто можно вообще жить с некомпилируемыми классами, в стадии отладки. Конечно при условии, что их никакая фунцкиональность пока не вызывает.
Старый 26.01.2011, 17:59   #9  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,940 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от mazzy Посмотреть сообщение
мне кажется, что хотелки с отладчиком и со средой разработки лучше формулировать так:
хочу чтобы разработка велась в Visual Studio и все инструменты этой среды разработки работали бы с аксаптовским кодом.
Вот это как раз непринципиально. а то так они задумают очередного слона и его ждать до следующей пятилетки.
Старый 26.01.2011, 18:01   #10  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,940 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Кроме того небольшие изменения всегда проще пропихнуть, чем глобальные.
Старый 02.02.2011, 14:46   #11  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Как вы все должны понимать, мы уже на финальной стадии выпуска продукта, поэтому, помимо фиксов каких-то мелких багов и оптимизации производительности, я бы не стал ожидать больших изменений в редакторе в сравнении с тем, как он работает сейчас (недавно был блог пост с видео).

Раз уж все пишут про новые возможности системы, позволю и себе привести скриншот дебаггера.

Название: Debugger.png
Просмотров: 1446

Размер: 24.9 Кб

Ваше первое желание исполнено.

Условные точки останова, к сожалению, не дождетесь
За это сообщение автора поблагодарили: Logger (15), S.Kuskov (1).
Старый 02.02.2011, 15:49   #12  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Раз уж все пишут про новые возможности системы, позволю и себе привести скриншот дебаггера. Ваше первое желание исполнено.
Т.е. теперь, если в коде написано
X++:
return a + b - this.func(c) * 10;
в отладчике можно будет где-то посмотреть, что же реально будет возвращено?
Старый 02.02.2011, 15:52   #13  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от gl00mie Посмотреть сообщение
Т.е. теперь, если в коде написано
X++:
return a + b - this.func(c) * 10;
в отладчике можно будет где-то посмотреть, что же реально будет возвращено?
Такого не просили. Просили только, чтоб на закрывающей скобке останавливался
Старый 02.02.2011, 16:03   #14  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,437 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Такого не просили. Просили только, чтоб на закрывающей скобке останавливался
А если return будет в середине метода, после него будет остановка на последней скобке?
Старый 02.02.2011, 16:11   #15  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
А если return будет в середине метода, после него будет остановка на последней скобке?
Да.
См. скриншот с ответом и на вопрос gl00mie

Название: Debugger2.png
Просмотров: 1563

Размер: 13.6 Кб
Старый 19.05.2011, 16:06   #16  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,940 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Как вы все должны понимать, мы уже на финальной стадии выпуска продукта...
Не смотря на это можно пропихнуть еще одну хотелку ?

Есть проблема - когда код написан на clicked() методе формы, то в стеке вызовов он отображается как
(C)\Classes\FormButtonControl\Clicked
что естественно неудобно, так как не дает понимания в какой же именно форме исполнялся код. Иногда приходится разбираться с чужим проблемным кодом, смотришь логи со стеками вызовов, а они как дразнят!
Вроде и стек вызовов есть, но фиг поймешь откуда же эта гадость лезет. (В случае если код исполняется в методе формы, класса или таблички, то все нормально - мы можем в стеке вызовов определить объект на котором сидит метод)

Или может запретить писать код в Clicked() методах кнопок ...
Старый 19.05.2011, 16:31   #17  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от Logger Посмотреть сообщение
Не смотря на это можно пропихнуть еще одну хотелку ?

Есть проблема - когда код написан на clicked() методе формы, то в стеке вызовов он отображается как
(C)\Classes\FormButtonControl\Clicked
что естественно неудобно, так как не дает понимания в какой же именно форме исполнялся код. Иногда приходится разбираться с чужим проблемным кодом, смотришь логи со стеками вызовов, а они как дразнят!
Вроде и стек вызовов есть, но фиг поймешь откуда же эта гадость лезет. (В случае если код исполняется в методе формы, класса или таблички, то все нормально - мы можем в стеке вызовов определить объект на котором сидит метод)

Или может запретить писать код в Clicked() методах кнопок ...
Я то конечно могу создать, но это не баг. У нас это называется Design Change Request (DCR), а их мы уже давно не делаем для этого релиза. Так что только уже в АХ7, если согласятся чинить.
За это сообщение автора поблагодарили: Logger (5).
Старый 02.02.2011, 15:23   #18  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,940 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Иван, да нам не обязательно видеть это конкретно в 2012-й. Главное чтобы сделали. Если честно я не особо и надеялся. Так что приятная неожиданность сегодня случилась

А с условными точками останова не дождемся в конкретной версии или в принципе такого не будет? На самом деле на них свет клином не сошелся. Хотелось просто иметь какой нить инструмент быстрого нахождения тех мест в коде из которых меняются свойства контролов и датасорса на конкретной форме. Это же все позволит удешевить поддержку и сопровождение системы.
Старый 02.02.2011, 15:33   #19  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от Logger Посмотреть сообщение
Иван, да нам не обязательно видеть это конкретно в 2012-й. Главное чтобы сделали. Если честно я не особо и надеялся. Так что приятная неожиданность сегодня случилась

А с условными точками останова не дождемся в конкретной версии или в принципе такого не будет? На самом деле на них свет клином не сошелся. Хотелось просто иметь какой нить инструмент быстрого нахождения тех мест в коде из которых меняются свойства контролов и датасорса на конкретной форме. Это же все позволит удешевить поддержку и сопровождение системы.
Ну, может когда-то и будет. Мне не известно.
А механизм, который, возможно (я не разбирался, как с ним работать), позволяет отслеживать такие вещи, сделали - events & event handlers добавили. И, если я правильно понимаю, теперь можно подписаться будет на многие из стандартных событий, и делегировать исполнение какому-то своему коду. В нем можно поставить точку останова, которая вызовется в случае, если произошло это событие. Хотя, опять же, я не уверен, как именно это работает и насколько широки возможности, и в том, что таким образом можно будет добиться требуемого результата.
Старый 02.02.2011, 19:47   #20  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Именно что! а то надоедает везде, где можно, сперва присваивать возвращаемое значение локальной переменной и потом уже эту переменную возвращать. В случае со "сложносочиненными" объектами это еще и к тормозам может приводить из-за изменения числа ссылок и необходимости обработки этого дела. В Visual Studio вся прелесть останова на закрывающей скобке и состоит в том, что можно посмотреть возвращаемое значение независимо от того, возвращается ли переменная или какое-то выражение. По идее для X++ это должно быть относительно просто реализовать, ведь там возвращаемое значение вычисляется и кладется на вершину стека, откуда его потом берет вызывающий код...

PS. Но если на закрывающей скобке можно будет хотя бы точку останова поставить и ловить ее независимо от числа return'ов в теле метода, то это тоже неплохо.
Теги
button, clicked, stack trace, stack trace clicked, кнопка, стек вызовов

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
dynamics-ax: SCOM Me this, PowerShell Me that! (Dynamics AX 2012) Blog bot DAX Blogs 0 26.01.2011 04:12
dynamics-ax: Modeling the world, with Microsoft Dynamics AX 2012 Blog bot DAX Blogs 0 25.01.2011 09:11
mfp: Getting to AX 2012 Blog bot DAX Blogs 3 21.01.2011 15:59
Рабочая область в АХ sukhanchik DAX: Функционал 6 15.10.2009 13:10
Общая схема порядка обновления с АХ 3.0 на АХ 4.0 Vadim Korepin DAX: Функционал 11 25.11.2008 17:40

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 02:42.