AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 20.09.2004, 17:19   #1  
demID is offline
demID
Участник
 
61 / 12 (1) ++
Регистрация: 16.08.2004
Адрес: Москва
? Фильтрование записей при "переходе к основной таблице"
Привет всем!

В форме InventTable есть поле ItemGroupId. Если в этом поле выполнить "переход к основной таблице", то откроется справочник номенклатурных групп. При этом текущей станет номенклатурная группа, которой принадлежит активная номенклатура в форме InventTable. И в то же время выводится полный список всех имеющихся номенклатурных групп.

Я создал свою собственную форму, основанную на моей (нестандартной) таблице. В этой форме есть грид. В одном из полей этого грида есть также функционал "перейти к основной таблице".
Проблема: у меня при переходе к основной таблице открывается основная таблица, но при этом в ней записи фильтруются, то есть отображается только одна запись. Мне же нужно, чтобы отображались все записи справочника.

Вопрос: как это сделать? Как сделать, чтобы при переходе к основной таблице записи в этой таблице не фильтровались, а выводился весь справочник?
__________________
Когда гестапо перекрыло все выходы, Штирлиц вышел через вход!
Старый 20.09.2004, 17:26   #2  
sassas
Гость
 
n/a
главная таблица фильтруется из-за того, что на вызывающей таблице (или EDT поля) установлен релайшн. Снятие его даст искомый эффект полной главной таблицы. Как избежать подфильтровывания гт иным способом без программирования я не знаю.

Для установления в общем списке курсора на запись, соответствующую коду в поле вызывающей таблицы, используйте findRecord() датасорса вызываемой таблицы.
Старый 20.09.2004, 17:42   #3  
demID is offline
demID
Участник
 
61 / 12 (1) ++
Регистрация: 16.08.2004
Адрес: Москва
2sassas: Спасибо за ответ.

Однако в таблице InventTable поле ItemGroupId тоже строится на EDT, у которого есть релэйшн на таблицу InventItemGroup.
Я для экспериментов вставил в свою таблицу поле, основанное на EDT ItemGroupId - там при переходе к основной таблице выводятся все записи.

А при переходе к основной таблице из созданного мной поля записи в основной таблице фильтруются
__________________
Когда гестапо перекрыло все выходы, Штирлиц вышел через вход!
Старый 20.09.2004, 17:50   #4  
sassas
Гость
 
n/a
посмотрите таки релайшн на Вашей таблице. Для эксперимента можете добавить релайшн на InventItemGroup и открыть ее из соответствующего поля.

Посмотрите также обработчик init() (run и др методы при вызове) формы и датасорса (где-то возможно подфильтровывание), указанной в MenuItem FormRef Вашей таблицы
Старый 20.09.2004, 17:50   #5  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
А нет ли в relation Вашего EDT связей типа "Поле ссылки фиксировано"? Из-за этого записи и фильтруются.
__________________
Андрей.
Старый 20.09.2004, 17:51   #6  
demID is offline
demID
Участник
 
61 / 12 (1) ++
Регистрация: 16.08.2004
Адрес: Москва
Заработало, но не совсем.

У меня ссылка на основную таблицу по EDT, у которого был пелейшн типа "поле ссылки фиксировано". Я убрал "поле ссылки фиксированно", и теперь при переходе к основной таблице выводятся все записи подряд.

Но не все так просто. Мне-то надо, чтобы в основной таблице выводились только те записи, у которых в определенном поле содержится значение "1". Для этого я и делал релейшн "поле ссылки фиксировано".

Получается, что релейшн типа "поле ссылки фиксированно" на EDT работает только на лукапах, а при переходе к основной таблице наличие такой связи приводит к отображению только одной записи.
__________________
Когда гестапо перекрыло все выходы, Штирлиц вышел через вход!
Старый 20.09.2004, 18:44   #7  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
Да, вот такая вот фича.
__________________
Андрей.
Старый 13.11.2015, 14:21   #8  
abark is offline
abark
Участник
 
14 / 10 (1) +
Регистрация: 26.06.2013
Адрес: Волгоград
Подскажите пожалуйста есть ли способ как то обойти эту "фичу"?
Переопределить какие то методы может быть?

Нужно сделать чтобы при переходе из дочерней таблице по полю, у которого в его EDT есть relation в том числе со связью "Поле ссылки фиксировано", к основной таблице - та фильтровалась не по одной записи, а по всем записям подходящего типа (заданного фиксированной частью связи), а уже конкретная запись делалась текущей.
__________________
Ax 3.0 SP5 FP2 kr2
Старый 13.11.2015, 15:03   #9  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,322 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Не помню уже, как в 3.0, но в 2009 есть методы args.lookupField() и args.lookupValue(). Если их заполнить, то переход будет осуществляться с позиционированием. А фильтрацию можно сделать на открываемой форме, анализируя либо через args.record(), либо через args.caller() - откуда произошел вызов.
__________________
Возможно сделать все. Вопрос времени
Старый 14.11.2015, 19:18   #10  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
Цитата:
Сообщение от abark Посмотреть сообщение
Подскажите пожалуйста есть ли способ как то обойти эту "фичу"?
Переопределить какие то методы может быть?

Нужно сделать чтобы при переходе из дочерней таблице по полю, у которого в его EDT есть relation в том числе со связью "Поле ссылки фиксировано", к основной таблице - та фильтровалась не по одной записи, а по всем записям подходящего типа (заданного фиксированной частью связи), а уже конкретная запись делалась текущей.
Ну если я вас правильно понимаю, то вам поможет перекрытие jumpRef() на форме с дочерней таблицей с последующим позиционированием уже при открытии формы основной таблицы через findRecord().
__________________
Zhirenkov Vitaly
Старый 18.11.2015, 12:52   #11  
abark is offline
abark
Участник
 
14 / 10 (1) +
Регистрация: 26.06.2013
Адрес: Волгоград
Спасибо за ответы.

Сделал так:
1. в источнике данных вызываемой формы в методе init() отключил dynalink через
X++:
this.query().datasourceNo(1).clearDynaLinks()
2. в источнике данных вызываемой формы в методе executeQuery() воссоздал нужную фильтрацию по типу записи, которое ограничивается в relation в EDT через "Поле ссылки фиксировано":
X++:
QueryBuildRange     qbr;
;
qbr = this.query().dataSourceNo(1).addRange(fieldnum(MyTable, MyTableFixedTypeField));
qbr.value(int2str(_myValueForFilterFixedTypeField));
3. а затем в том же методе executeQuery(), но уже после super(), спозиционировался на нужную запись через
X++:
MyTable record;
;
...
record = MyTable::find(_myRecordId);
if(record)
    this.findRecord(record);
__________________
Ax 3.0 SP5 FP2 kr2
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Засада с позиционированием при переходе к основной таблице. В чем дело? AK9 DAX: Программирование 17 30.11.2007 14:42
Переход к основной таблице договоров KolesOlya DAX: Программирование 12 11.04.2007 10:28
Переход на правильную запись при Переходе к основной таблице. - 2 Anais DAX: Программирование 2 01.11.2004 17:14
Переход на правильную запись при Переходе к основной таблице. Anais DAX: Программирование 11 29.06.2004 19:16
Позиционирование при переходе к основной таблице dn DAX: Программирование 2 29.01.2004 18:35

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 20:46.