| 
			
			 | 
		#1 | 
| 
			
			 Модератор 
		
			
	 | 
	
	
	
		
		
			
			 
			
			Из \Data Dictionary\Tables\InventTable\ беру поле  ItemType в свою табличку.  
		
		
		
			В таблице у поля ItemType выставляю свойство Mandatory = Yes. На форме вывожу поле на Grid. В выпадающем списке исчезает значение "Номенклатура" У поля ItemType выставляю Mandatory = No. Перехожу на форму, открываю lookup, и вижу ![]() При чем данный глюк не появляется, если Mandatory = Yes выставить у поля в Data Source формы. DAX 2009 SP1 GLS EE Rollup 5 
				__________________ 
		
		
		
		
	This posting is provided "AS IS" with no warranties, and confers no rights.  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: kornix (2). | |
| 
			
			 | 
		#2 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Для обязательного поля нельзя будет устанавливать значение, равное 0 - вот лукап и не показывать "Номенклатуру" (Value=0) 
		
		
		
		
		
		
			PS На трешке ровно такое же поведение 
				__________________ 
		
		
		
		
	Axapta v.3.0 sp5 kr2  | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Axapta 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Поле с типом 'Энум' не должно быть мандатори. Но если программист все-таки сделал его мандатори, то умная Аксапта убирает из энума нулевое значение. Так всегда было.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Модератор 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Нет ничего удивительного. Отрабатывает штатный механизм - запрещает пустой элемент, с типом ноль. К уму акспты отношения мало имеет  
		
		
		
		
		
		
		
	![]() С Уважением, Георгий  | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Либо делать enum со значением "пусто" и id равным 0. Тогда можно указывать mandatory
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Axapta 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 Axapta 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Потому, что это не соответствует тому, что принято в Аксапте. Потому, что программист, который будет потом с этим работать, не будет этого ожидать. Потому, что в разных случаях в лукапе этот энум будет показывать разный список значений. Зачем вообще Бест Практис нужен? Энум - он на то и энум. У него всегда какое-то значение есть.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: sukhanchik (4). | |
| 
			
			 | 
		#9 | 
| 
			
			 Administrator 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
А вообще в свое время участник db очень грамотно сказал в отношении отклонения от Best Practice: 
				__________________ 
		
		
		
		
	Возможно сделать все. Вопрос времени  | 
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 MCTS 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Теряется фильтр из-за того, что не задан label 
				__________________ 
		
		
		
		
	Dynamics AX Experience  | 
| 
	
 | 
| 
			
			 | 
		#11 | 
| 
			
			 Модератор 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Делали бы тогда однотипно. 
				__________________ 
		
		
		
		
	This posting is provided "AS IS" with no warranties, and confers no rights.  | 
| 
	
 | 
| 
			
			 | 
		#12 | 
| 
			
			 Axapta 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Не знаю. Да и не хочу знать, честно говоря. Так ли это важно? Как выше уже сказали, если в Best Practices написано "Острожно! злая собака" значит за порванные штаны и порванное то что под штанами претензии предъявлять почти бесполезно.  
		
		
		
		
		
		
		
	 
		 | 
| 
	
 | 
| 
			
			 | 
		#13 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
В бизнес-логике много ситуаций, когда необходимо при изменениях, например статуса записи, ОБЯЗАТЕЛЬНО указать значение перечисления (подразумевается есть 0 = пусто = неопределено - до смены статуса записи). Так вот по бест-практик и надо подсветить такое поле красным, мало того не контрол, а объект-поле на дата-соурсе, чтобы не сломать механизм, когда пользователь может через настройки пользователя добавить свой контрол в произвольную группу контролов на форме. Вот второй дубль контрол также станет обязательным. В данном примере форма - форма смены статуса записи и указания нужного значения перечисления. При этом до этой формы - смены статуса значение перечисления может быть неопределено, а записи создаются на другой форме, где значение поля НЕОБЯЗАТЕЛЬНО и это требование бизнес-логики. Насчет возможности сделать поле енум на таблице обязательным - да бест практик РЕКОМЕНДУЕТ не делать чего-то, а как бы Аксапта разрешает. Пример - две таблицы - первая имеет запись с полем енум - необязательно, вторая - история этой записи - вот там енум ставим обязательно, да отходим от бест-практик - в истории не может быть неопределенного статуса записи - тут приоритет другого требования бест-практик - в таблице не должно быть записи с некорректным значением, и закрывается такая ситуация именно на таблице. Смысл такой - если вторую таблицу открыть даже в обозревателе (что делается консультантами часто), то не смогут создать, изменить там запись некорректно. Здесь как раз ситуация что программист ожидает такого поведения, потому-что во второй таблице она логична.  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: Poleax (1). | |
| 
			
			 | 
		#14 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#15 | 
| 
			
			 Axapta 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от titov
			 
 
			При этом до этой формы - смены статуса значение перечисления может быть неопределено, а записи создаются на другой форме, где значение поля НЕОБЯЗАТЕЛЬНО и это требование бизнес-логики. 
		
	... вот там енум ставим обязательно, да отходим от бест-практик - в истории не может быть неопределенного статуса записи - тут приоритет другого требования бест-практик - в таблице не должно быть записи с некорректным значением, и закрывается такая ситуация именно на таблице. Upd. У BaseEnum любое значение - уже "непустое". Просто потому, что это "перечисление". Даже если вы некое из значений почему-то рассматриваете "пустым". И если по бизнес-логике в какой-то ситуации какое-то из значений не должно иметь место быть, то проверка на это должна быть прозрачно видна из кода, а не переложена в неожиданное место, на свойство поля. Свойство "мандатори" проверяет заполненность поля, а в вашем случае поле будет заполнено. Аналогично, например, нехорошо для поля с типом Энум (за исключением, возможно, типа NoYes), писать 'if (table.enumField)' вместо 'if (table.enumField != BaseEnum::None). Последний раз редактировалось oip; 12.08.2010 в 13:18. Причина: Добавил  | 
| 
	
 | 
| 
			
			 | 
		#16 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			джоб нашел 100 объектов для ах2009 
		
		
		
		
		
		
		
	X++: static void EnumTypeMandatory(Args _args) { Dictionary dictionary = new Dictionary(); DictTable dictTable; DictField dictField; int countFiledsTotal; tableId tableId; fieldId fieldId; ; setprefix('Сканирование АОТ. Таблицы, имеющие поле enum mandatory'); for (tableId = dictionary.tableNext(0);tableId;tableId = dictionary.tableNext(tableId)) { dictTable = new DictTable(tableId); if ( (! dictTable.isMap()) && (! dictTable.isTmp()) && (! dictTable.isView())) { setPrefix(dictTable.name() + '-' + dictTable.label()); for (fieldId = dictTable.fieldNext(0);fieldId;fieldId = dictTable.fieldNext(fieldId)) { dictField = dictTable.fieldObject(fieldId); if( dictField.type() == types::Enum && dictField.mandatory() == true ) { info(dictField.name() + '-' + dictField.label()); countFiledsTotal++; } } } } info(strFmt("Total found %1 objects",countFiledsTotal)); }  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: oip (1). | |
| 
			
			 | 
		#17 | 
| 
			
			 MCP 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Столкнулся с таким же поведением enum'а в существующей нестандартной таблице. Не догадался обратить внимание на свойство mandatory табличного поля, почему-то казалось что что-то хитрое с enum'ом или EDT. Респект за тему  
		
		
		
		
		
		
		
	 
		 | 
| 
	
 | 
| Теги | 
| ax2009, enum | 
| 
	
	 | 
	
			 
			Похожие темы
		 | 
	||||
| Тема | Ответов | |||
| Как получить из элемента enum-а код типа (enum-а)? | 12 | |||
| Странный баг при расширении Enum | 1 | |||
| Глюк компилятора | 5 | |||
| Enum: глюк? | 11 | |||
| Фильтрация по полю Enum в Query | 8 | |||
		
  |