11.09.2020, 12:07 | #1 |
Участник
|
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 |
Administrator
|
Без Attach to Process отладки не будет .... А с ней можно точку останова куда угодно поставить...
__________________
Возможно сделать все. Вопрос времени |
|
11.09.2020, 14:12 | #3 |
Участник
|
Вопрос не в том как запустить отладку а как работать с условными брейкпойнтами, то есть которые срабатывают при выполнении некого условия, например при обработке TaxReport не попадает некий ваучер, который судя по всему должен попадать. Чтобы не нажимать F5 32000 раз.
|
|
11.09.2020, 15:21 | #4 |
Administrator
|
А ... я понял. Что-то у меня с условными бреакпойнтами тоже как-то не все хорошо было... Надо будет посмотреть при случае....
__________________
Возможно сделать все. Вопрос времени |
|
13.09.2020, 14:42 | #5 |
северный Будда
|
X++: if (condition) breakpoint; если есть возможность дебажить, то и такое можно сделать
__________________
С уважением, Вячеслав |
|
13.09.2020, 21:34 | #6 |
Administrator
|
Такой подход в D365 не подойдет - там же код править нельзя. А расширение не везде возможно создать. Конечно, не на рабочей базе - можно в дескрипторе модели поставить свойство <Customization>Allow</Customization>, затем подправить код, модель перебилдить и проверить. Но это уж слишком жесткий вариант...
__________________
Возможно сделать все. Вопрос времени Последний раз редактировалось sukhanchik; 13.09.2020 в 21:40. |
|
|
За это сообщение автора поблагодарили: EVGL (10). |
14.09.2020, 11:24 | #7 |
Administrator
|
Проверил. Условная точка останова нормально работает.
Проверял на 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(); // Остальной код я не стал копировать сюда } В методе run() переменная designatedTabNo принимает значение 1 изначально, но если форма SalesTable была вызвана из формы SalesTableListPage, то ее значение меняется на 3. Форма SalesTable также может быть вызвана не из формы списка, а при переходе к заказу на продажу из, допустим формы накладной при выборе пункта меню "Показать подробности". В этом случае переменная designatedTabNo не меняет своего значения на 3. Тестируем. Ставим точку останова на строку lineViewTab.tab(designatedTabNo); Можно до присоединения к процессу (Attach to process), можно после этого. Наводим мышкой на красную точку, всплывает менюшка Выбираем шестеренку и вводим условие designatedTabNo == 3. Жмем Close и тестируем. Система сваливается в отладку, если мы пытаемся открыть карточку заказа на продажу из списка заказов на продажу (формы SalesTableListPage) и не сваливается в отладку, если мы пытаемся перейти к заказу на продажу из формы накладной клиента. Само собой, если мы отсоединимся от процесса - то в отладку мы не свалимся
__________________
Возможно сделать все. Вопрос времени Последний раз редактировалось sukhanchik; 14.09.2020 в 13:01. |
|
|
За это сообщение автора поблагодарили: trud (2), raz (5). |
15.09.2020, 09:16 | #8 |
Участник
|
С простыми переменными-то оно работает, а вот с составными, типа табличной, похоже что нет. Между тем, именно условие по значению поля обычно интересует.
|
|
|
За это сообщение автора поблагодарили: sukhanchik (4). |
15.09.2020, 18:15 | #9 |
северный Будда
|
Цитата:
Сообщение от sukhanchik
Такой подход в D365 не подойдет - там же код править нельзя. А расширение не везде возможно создать. Конечно, не на рабочей базе - можно в дескрипторе модели поставить свойство <Customization>Allow</Customization>, затем подправить код, модель перебилдить и проверить. Но это уж слишком жесткий вариант...
но иногда другого варианта просто не остаётся главное - не зачекинить это
__________________
С уважением, Вячеслав |
|
18.09.2020, 18:19 | #10 |
Участник
|
ты, часом, не batch отлаживаешь? тогда надо цепляться к batch процессу
__________________
Felix nihil admirari |
|
|
|