|
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, но лукап все равно стандартно отрабатывается по Енуму. Чего я мог упустить?
|
|