| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			
			фильтр Base Enum-a
			 
			
			Нужно в гриде формы фильтровать base enum в зависимости от значения другого поля записи. То есть если значение одного поля А , то в другом поле вываливаются для выбора значения a, b, c, п если значение B, то в энуме должны появляться только b, d, e, f  значения.  
		
		
		
		
		
		
		
		
			Привязала edit метод к контролу, при сохранении - заполняю нужное поле в таблице. Думала вот сейчас на modified or selectionChange combobox-a , динамически открывать нужный набор значений, но эти методы не вызываются при выборе значения в combobox-e!    Фильтрование Перечислимого типа - читала .... , но чот так тож не получаицца - как в гриде установить значения в этом контроле для каждой строки свои при открытии формы ..... если он не привязан к edit -методу.... Помогите плз .... Последний раз редактировалось kitty; 24.04.2008 в 15:20.  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 совсем зелен 
		
			
	 | 
	
	
	
		
		
		
		 
			
			есть книга Алексея Еременко разработка бизнес-приложений??? там чет такое видел...отдельной темой...переписывать сюда много а сам не пробовал..,  
		
		
		
		
		
		
		
	 
		 | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			А не проще ли будет заменить Base Enum на EDT c relation на таблицу и потом перекрыть метод lookup. Если нужен именно ComboBox, то наверное только так как описано в теме Фильтрование Перечислимого типа
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: mazzy (2). | |
| 
			
			 | 
		#4 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Вместо enum создайте справочник, содержащий два поля 1. Поле со значениями поля A 2. Поле со значениями enum'ов. Создайте сложный relaion на таблице, который учитывает два поля Пример - любой журнал, который показывает разные значения и даже разные таблицы в зависимости от выбранного типа счета Способ 2 См. очень сложный для реализации, но уже готовый функционал для финансовых аналитик http://axapta.mazzy.ru/lib/dimension_hierarchy/ Способ 3 Создайте два enum enum1: a:1, b:2, c:3 enum2: b:2, d:4, e:5, f:6 при изменении значения в поле А подменяйте lookup в контроле. Этот вариант требует очень внимательного программирования и соблюдения соглашений в дальнейшем при развитии системи. например, если появится еще одно значение в A или в первом enum'е добавится элемент. При всей кажущейся простоте этот способ самый рисковый с точки зрения труднообнаружимых багов в будущем. Мне кажется, что будет конструктивным, если вы измените свое ТЗ и "другое поле" будет иметь тип код другого справочника, а не enum. реализовать будет намного легче  | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 MCTS 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Могу предложить извращенный метод  
		
		
		
		
		
		
		
	 , на каждый элемент енума вешаем конфигурационный ключ, и далее в зависимости от значения поля, программно вкл./выкл конф. ключи, в результате будут появляться только те енумы, у которых конф. ключ включен.
		 | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
не видел пока писал.  | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
А здесь нужны разные вписки в зависимости от значения в другом поле.  | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 MCTS 
		
			
	 | 
	
	
	
		
		
		
		 
			
			действительно, разные пользователи....
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			еще вариант -edit метод, перекрыть лукап в котором выводить темповую таблицу, набивая в нее по ситуации значения 
		
		
		
		
		
		
		
	PS - еще вариант - вываливать в лукап все подряд, но при выборе ругаться если выбрали не то  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: kitty (1). | |
| 
			
			 | 
		#10 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
В ax3.0 это совсем не хорошо. В ax4.0 это не очень хорошо.  | 
| 
	
 | 
| 
			
			 | 
		#11 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			ну вообще способ 1 от mazzy мне кажется достаточно здравым - создайте таблицу статичную, куда забейте все возможные сочетания первого и второго значений и ее лукапить..
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#12 | 
| 
			
			 Axapta 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Почему? 
		
		
		
		
		
		
		
	Серия RecId для временной таблицы живет в рамках времени жизни табличной переменной. У двух одновременно созданных временных таблиц будут одинаковые recId. X++: static void tempTablesRecId(Args _args) { TmpFrmVirtual t1; TmpFrmVirtual t2; ; t1.Qty = 1; t2.Qty = 1; t1.insert(); t2.insert(); info (int2str(t1.RecId)); info (int2str(t2.RecId)); }  | 
| 
	
 | 
| 
			
			 | 
		#13 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Вот как? Это в 4ке или в 3ке?
		 
		
		
		
		
		
		
			
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#14 | 
| 
			
			 Axapta 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Всегда так было. И в тройке и в четверке. Иначе бы отчеты на основе временных таблиц были бы практически под запретом.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: mazzy (5), kitty (1). | |
| 
			
			 | 
		#15 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Всем огромное спасибо за советы!  
		
		
		
		
		
		
		
	![]() Отлично получилось с помощью временной таблицы на лукапе.  | 
| 
	
 | 
| 
			
			 | 
		#16 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			От енума наследовал EDT  с лукап формой, на поле поставил EDT, но лукап все равно стандартно отрабатывается по Енуму. Чего я мог упустить?
		 
		
		
		
		
		
		
		
	 | 
| 
	
 |