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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.09.2020, 12:07   #1  
VORP is offline
VORP
Участник
Аватар для VORP
 
146 / 95 (4) ++++
Регистрация: 26.05.2006
Conditional breakpoint в D365 по Voucher строки
Добрый день,
не получается сделать условие для брейкпойнта в D365:
taxTrans.Voucher =="MKG-PP038446-CD001"

Выдаёт при выполнении что не удалось выполнить условие и сообщение:
An object reference is required for non-static field, method or property TaxTrans.Voucher.

Как правильно писать условия в таких случаях?
Старый 11.09.2020, 13:25   #2  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,322 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Без Attach to Process отладки не будет .... А с ней можно точку останова куда угодно поставить...
__________________
Возможно сделать все. Вопрос времени
Старый 11.09.2020, 14:12   #3  
VORP is offline
VORP
Участник
Аватар для VORP
 
146 / 95 (4) ++++
Регистрация: 26.05.2006
Вопрос не в том как запустить отладку а как работать с условными брейкпойнтами, то есть которые срабатывают при выполнении некого условия, например при обработке TaxReport не попадает некий ваучер, который судя по всему должен попадать. Чтобы не нажимать F5 32000 раз.
Старый 11.09.2020, 15:21   #4  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,322 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
А ... я понял. Что-то у меня с условными бреакпойнтами тоже как-то не все хорошо было... Надо будет посмотреть при случае....
__________________
Возможно сделать все. Вопрос времени
Старый 13.09.2020, 14:42   #5  
pitersky is offline
pitersky
северный Будда
Аватар для pitersky
Ex AND Project
Соотечественники
 
1,510 / 435 (18) +++++++
Регистрация: 26.09.2007
Адрес: Солнечная система
X++:
if (condition) breakpoint;
пробовали?
если есть возможность дебажить, то и такое можно сделать
__________________
С уважением,
Вячеслав
Старый 13.09.2020, 21:34   #6  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,322 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от pitersky Посмотреть сообщение
X++:
if (condition) breakpoint;
пробовали?
если есть возможность дебажить, то и такое можно сделать
Такой подход в D365 не подойдет - там же код править нельзя. А расширение не везде возможно создать. Конечно, не на рабочей базе - можно в дескрипторе модели поставить свойство <Customization>Allow</Customization>, затем подправить код, модель перебилдить и проверить. Но это уж слишком жесткий вариант...
__________________
Возможно сделать все. Вопрос времени

Последний раз редактировалось sukhanchik; 13.09.2020 в 21:40.
За это сообщение автора поблагодарили: EVGL (10).
Старый 14.09.2020, 11:24   #7  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,322 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Проверил. Условная точка останова нормально работает.
Проверял на PU36 и Visual Studio 2017
Имеем форму SalesTable, метод run().
Вот такой код:
X++:
    void  run()
    {
        int designatedTabNo = 1;
        SalesTable salesTableLocal;

        if (TradeFormHelper::isCalledFromListPage(element.args()))
        {
            designatedTabNo = 3;
        }

        // Set proper TAB explicitly.
        lineViewTab.tab(designatedTabNo);

        super();
// Остальной код я не стал копировать сюда
    }
Форма SalesTable вызывается из формы SalesTableListPage, когда происходит переход из списка заказов на продажу в карточку заказа на продажу (для сравнения - в закупках нет формы ListPage - там единая форма PurchTable для отображения списка и отображения карточки и переход от списка к карточке с технической т.з. осуществляется путем скрытия лишней вкладки TabPage)

В методе run() переменная designatedTabNo принимает значение 1 изначально, но если форма SalesTable была вызвана из формы SalesTableListPage, то ее значение меняется на 3.
Форма SalesTable также может быть вызвана не из формы списка, а при переходе к заказу на продажу из, допустим формы накладной при выборе пункта меню "Показать подробности". В этом случае переменная designatedTabNo не меняет своего значения на 3.

Тестируем. Ставим точку останова на строку lineViewTab.tab(designatedTabNo);
Можно до присоединения к процессу (Attach to process), можно после этого.
Наводим мышкой на красную точку, всплывает менюшка
Название: SNAG_Program-0056.png
Просмотров: 662

Размер: 8.0 Кб
Выбираем шестеренку и вводим условие designatedTabNo == 3.

Нажмите на изображение для увеличения
Название: SNAG_Program-0058.png
Просмотров: 52
Размер:	27.6 Кб
ID:	12935
Жмем Close и тестируем. Система сваливается в отладку, если мы пытаемся открыть карточку заказа на продажу из списка заказов на продажу (формы SalesTableListPage) и не сваливается в отладку, если мы пытаемся перейти к заказу на продажу из формы накладной клиента. Само собой, если мы отсоединимся от процесса - то в отладку мы не свалимся
__________________
Возможно сделать все. Вопрос времени

Последний раз редактировалось sukhanchik; 14.09.2020 в 13:01.
За это сообщение автора поблагодарили: trud (2), raz (5).
Старый 15.09.2020, 09:16   #8  
Stitch_MS is offline
Stitch_MS
Участник
Аватар для Stitch_MS
Соотечественники
 
397 / 478 (16) +++++++
Регистрация: 27.02.2006
Адрес: Дания
С простыми переменными-то оно работает, а вот с составными, типа табличной, похоже что нет. Между тем, именно условие по значению поля обычно интересует.
За это сообщение автора поблагодарили: sukhanchik (4).
Старый 15.09.2020, 18:15   #9  
pitersky is offline
pitersky
северный Будда
Аватар для pitersky
Ex AND Project
Соотечественники
 
1,510 / 435 (18) +++++++
Регистрация: 26.09.2007
Адрес: Солнечная система
Цитата:
Сообщение от sukhanchik Посмотреть сообщение
Такой подход в D365 не подойдет - там же код править нельзя. А расширение не везде возможно создать. Конечно, не на рабочей базе - можно в дескрипторе модели поставить свойство <Customization>Allow</Customization>, затем подправить код, модель перебилдить и проверить. Но это уж слишком жесткий вариант...
я знаю, что это не бест практис)))))))
но иногда другого варианта просто не остаётся
главное - не зачекинить это
__________________
С уважением,
Вячеслав
Старый 18.09.2020, 18:19   #10  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
674 / 512 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
ты, часом, не batch отлаживаешь? тогда надо цепляться к batch процессу
__________________
Felix nihil admirari
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
patrickmouwen: How to Unlock Many Hidden D365 Retail Features! Blog bot DAX Blogs 0 13.05.2020 22:13
patrickmouwen: D365 Retail APIs Part III: How to use the Retail APIs from Power Automate (Flow) and Logic App Blog bot DAX Blogs 0 28.01.2020 02:15
patrickmouwen: D365 Retail APIs Part II: How to know exactly what happens inside D365 Retail Blog bot DAX Blogs 0 14.12.2019 01:17
dynamicsaxtraining: Purchase Blog bot DAX Blogs 0 11.03.2012 05:25
X++: Conditional breakpoint workaround Blog bot DAX Blogs 0 11.10.2009 12:07

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

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

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