|  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 | 
|  | 
|  | 
| 
 |