| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			 
			
			Начну немного издалека... Метки для значений enum'ов не всегда являются допустимыми с точки зрения использования в расширенных запросах - к примеру, в них могут содержаться круглые скобки, запятые, восклицательные знаки. Метод Global::enum2Value(), который вызывается из SysQuery::value(), "знает" об этом и в таких случаях возвращает не метку значения enum'а, а соотв. число. 
		
		
		
		
		
		
		
	Так вот, в работе формы расширенного фильтра запроса была замечена одна неприятная особенность: если в запросе есть такой "числовой" фильтр по полю типа enum, то при открытии формы фильтра его значение всегда преобразуется в метку, даже если она не является допустимым с т.з. использования в запросе, при этом еще и в инфологе вылезает "Ошибка расширенного диапазона запроса: Синтаксическая ошибка рядом с ...". Пользователей формы, где это проявляется, уже начинают порядком раздражать, объяснять им, что "левую" метку надо в фильтре перебивать обратно, скажем, на нолик, тоже как-то неудобно. Я сперва думал, может, это в приложении где делается, но найти такое место не смог, из чего сделал вывод, что самоуправством занимается ядро. Воспроизводится ли это еще у кого-нить? Может, все же это где-то в приложении делается, и можно такое преобразование подправить? Ядро AX 2009 SP1 5.0.1500.3968, приложение AX 2009 SP1 EE RU5 5.0.1500.2985  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			А в стандарте где такое можно проверить? Или речь идет про самописные enum?
		 
		
		
		
		
		
		
			
				__________________ 
		
		
		
		
	Ivanhoe as is..  | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Enum Тип со значениями 0 = Approve!,,), и 1 = Reject 
		
		
		
		
		
		
		
	Накладывая фильтр на поле Тип = Approve!,,), сообщение об ошибке не выдается, но в форме расширенного фильтра в поле Критерии значение такое "Approve!,,), __ILLEGAL_VALUE__" Причем сколько бы раз не открывали форму фильтра столько раз будет добавляться "__ILLEGAL_VALUE__" )) Но фильтр отрабатывает правильно! Если значение enum без "," а только ! или ) значение критерия не переделывается. Ax 2009 KV 5.0.1000.52 AV 5.0.1001.176 И Ax 2009 KV 5.0.1500.3761 AV 5.0.1500.3761  | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Виной всему Query.pack()! 
		
		
		
		
		
		
		
	X++: static void JobTestQueryPack20110316(Args _args) { QueryRun qr; Query q = new Query(); QueryBuildDataSource qbds = q.addDataSource(tableNum(InventTable)); QueryBuildRange qbr = qbds.addRange(fieldNum(InventTable, ItemType)); container BLOB; ; qbr.value('0'); // -->> // преобразование присходит где-то здесь BLOB = q.pack(); qr = new QueryRun(BLOB); // <<-- q = qr.query(); qbds = q.dataSourceTable(tableNum(InventTable)); qbr = qbds.findRange(fieldNum(InventTable, ItemType)); info(qbr.value()); }  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: mazzy (2), gl00mie (2). | |
| Теги | 
| ax2009, enum, баг, ошибка, расширенный фильтр | 
| 
	
	 | 
	
		
  |