| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			
			Поиск источника исключения
			 
			
			Доброе время суток! 
		
		
		
		
		
		
		
	AX 2012, /Расчеты с поставщиками/Обычный/Заказы на покупку/Договоры покупки/Создать договор покупки, при включенной настройке ручного ввода НН, выдает такое сообщение в инфологе X++: (15:28:27) " Код договора покупки" . (15:28:27) " Код договора" .  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Гость 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Может попробовать поставить брекпоинт в Info на метод add?
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Поставил. Срабатывает 2 раза, но не понятно где. Делаю в дебаггере выход вверх, оно меня перебрасывает на метод validateWrite где, если верить тому же дебаггеру, все проверки проходят успешно.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Гость 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 X++: public boolean validateWrite() { boolean ret; if (countryRegion_RU) { if (purchAgreementHeader.AgreementClassification) { purchAgreementForm.formMethodDataSourceCreate(purchAgreementHeader_ds); } else { return checkFailed(strFmt("@SYS84753", fieldPName(PurchAgreementHeader, AgreementClassification))); } if (!purchAgreementHeaderExt_RU.AgreementDate) { return checkFailed(strFmt("@SYS84753", fieldPName(PurchAgreementHeaderExt_RU, AgreementDate))); } if (!purchAgreementHeaderExt_RU.checkAgreementUniqueness(purchAgreementHeader)) { return false; } } ret = super(); if (agreementHeaderDefault_ds.object(fieldNum(AgreementHeaderDefault, Project)).mandatory() && !agreementHeaderDefault.Project) { ret = checkFailed(strFmt("@SYS84753", fieldPName(AgreementHeaderDefault, Project))); } if (ret && !purchAgreementForm.formMethodDataSourceValidateWrite(purchAgreementHeader_ds)) { ret = false; } return ret; } Все поля заполнены!  | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Гость 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Если генерит инфолог на validateWrite то видимо не все нормально. 
		
		
		
		
		
		
		
	Может он возвращает в super false?  | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Но где то же он должен записывать strFmt("@SYS84753", fieldPName(PurchAgreementHeader, AgreementClassification)) 
		
		
		
		
		
		
		
		
			Причем точка останова на checkFailed не срабатывает. Последний раз редактировалось syl; 04.08.2015 в 16:43.  | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 Гость 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Смотрим таблицу AgreementHeader которая является предком для PurchAgreementHeader: 
		
		
		
		
		
		
		
	в нем поле AgreementClassification mandatory соответственно возможен вызов infolog если не заполнено на уровне ядра с подобным сообщением.  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: syl (1). | |
| 
			
			 | 
		#9 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Изменил поле AgreementHeader.AgreementClassification mandatory = No. Результат тот же. Не похоже что проблема в нем. При чем данное поле заполняется в нашей форме...
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 Гость 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Можете приложить то что видите в инфологе в дебагере: 
		
		
		
		
		
		
		
		
			стек вызывов и прочее.? И значения поля PurchNumberSequence таблицы PurchAgreementHeader которое обязательно к заполнению. Последний раз редактировалось axm2013; 04.08.2015 в 17:39.  | 
| 
	
 | 
| 
			
			 | 
		#11 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			В кратце в PurchNumberSequence пишется произвольное значение, напр. "65498798456" (поскольку включена настройка "вручную" не имеет значения что там записано). В инфолог выводится только то что я написал выше. Ну а стек вызовов смогу предоставить завтра с утра.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#12 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Стек вызовов на info.add 
		
		
		
		
		
		
		
		
			X++: [c] \Classes\Info\add 1 [c] \Classes\xRecord\validateWrite [c] \Classes\FormDataSource\validateWrite [c] \Forms\PurchAgreement\Data Sources\PurchAgreementHeaderExt_RU\Methods\validateWrite 18 [c] \Classes\FormDataSource\leaveRecord [c] \Classes\FormRun\selectControl [c] \Classes\FormRun\canClose Последний раз редактировалось syl; 05.08.2015 в 10:41.  | 
| 
	
 | 
| 
			
			 | 
		#13 | 
| 
			
			 Гость 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Замечательно 
		
		
		
		
		
		
		
	У таблицы PurchAgreementHeaderExt_RU предок AgreementHeaderExt_RU: смотрим обязательные к заполнению поля для этой таблицы (AgreementId к примеру - это код договора). Заполнены ли они в purchAgreementHeaderExt_RU?  | 
| 
	
 | 
| 
			
			 | 
		#14 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			(PurchAgreementHeader).PurchNumberSequence - наше произвольное значение, как раз и является AgreementId в AgreementHeaderExt_RU. 
		
		
		
		
		
		
		
	По сути все поля заполняются так же как и при автоматическом присвоении номера, за исключением самого номера, но если выключена опция "вручную" то все работает нормально, но значение в это поле присваивается на форме автоматически...  | 
| 
	
 | 
| 
			
			 | 
		#15 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			На форме, внизу, есть кнопка закрыть. В дизайне ее нету, как узнать какие действия выполняются при ее нажатии? Можно ли отслеживать стек вызовов без точки останова, что бы проследить всю последовательность действий не зная точки входа?
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
	
	 | 
	
			 
			Похожие темы
		 | 
	||||
| Тема | Ответов | |||
| Как сделать в lookup поиск по нескольким полям | 6 | |||
| Поиск набором в выпадающем списке.. | 0 | |||
| "поиск" | 6 | |||
| Поиск источника ошибки | 11 | |||
| Поиск по подстроке | 8 | |||
		
  |