|  | 
|  24.04.2008, 15:17 | #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. | 
|  | 
|  24.04.2008, 15:26 | #2 | 
| совсем зелен | 
			
			есть книга Алексея Еременко разработка бизнес-приложений??? там чет такое видел...отдельной темой...переписывать сюда много а сам не пробовал..,    | 
|  | 
|  24.04.2008, 15:32 | #3 | 
| Участник | 
			
			А не проще ли будет заменить Base Enum на EDT c relation на таблицу и потом перекрыть метод lookup. Если нужен именно ComboBox, то наверное только так как описано в теме Фильтрование Перечислимого типа
		 | 
|  | |
| За это сообщение автора поблагодарили: mazzy (2). | |
|  24.04.2008, 15:38 | #4 | 
| Участник | Цитата: не видел пока писал. | 
|  | 
|  24.04.2008, 15:37 | #5 | 
| Участник | Цитата: Вместо 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. реализовать будет намного легче | 
|  | 
|  24.04.2008, 15:38 | #6 | 
| MCTS | 
			
			Могу предложить извращенный метод   , на каждый элемент енума вешаем конфигурационный ключ, и далее в зависимости от значения поля, программно вкл./выкл конф. ключи, в результате будут появляться только те енумы, у которых конф. ключ включен. | 
|  | 
|  24.04.2008, 15:40 | #7 | 
| Участник | Цитата: А здесь нужны разные вписки в зависимости от значения в другом поле. | 
|  | 
|  24.04.2008, 15:44 | #8 | 
| MCTS | 
			
			действительно, разные пользователи....
		 | 
|  | 
|  24.04.2008, 15:51 | #9 | 
| Участник | 
			
			еще вариант -edit метод, перекрыть лукап в котором выводить темповую таблицу, набивая в нее по ситуации значения PS - еще вариант - вываливать в лукап все подряд, но при выборе ругаться если выбрали не то | 
|  | |
| За это сообщение автора поблагодарили: kitty (1). | |
|  24.04.2008, 15:54 | #10 | 
| Участник | Цитата: В ax3.0 это совсем не хорошо. В ax4.0 это не очень хорошо. | 
|  | 
|  24.04.2008, 15:57 | #11 | 
| Участник | 
			
			ну вообще способ 1 от mazzy мне кажется достаточно здравым - создайте таблицу статичную, куда забейте все возможные сочетания первого и второго значений и ее лукапить..
		 | 
|  | 
|  24.04.2008, 16:14 | #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)); } | 
|  | 
|  24.04.2008, 16:28 | #13 | 
| Участник | 
			
			Вот как? Это в 4ке или в 3ке?
		 | 
|  | 
|  24.04.2008, 16:30 | #14 | 
| Axapta | 
			
			Всегда так было. И в тройке и в четверке. Иначе бы отчеты на основе временных таблиц были бы практически под запретом.
		 | 
|  | |
| За это сообщение автора поблагодарили: mazzy (5), kitty (1). | |
|  25.04.2008, 23:59 | #15 | 
| Участник | 
			
			Всем огромное спасибо за советы!   Отлично получилось с помощью временной таблицы на лукапе. | 
|  | 
|  15.12.2013, 12:21 | #16 | 
| Участник | 
			
			От енума наследовал EDT  с лукап формой, на поле поставил EDT, но лукап все равно стандартно отрабатывается по Енуму. Чего я мог упустить?
		 | 
|  |