20.09.2004, 17:19 | #1 |
Участник
|
Фильтрование записей при "переходе к основной таблице"
Привет всем!
В форме InventTable есть поле ItemGroupId. Если в этом поле выполнить "переход к основной таблице", то откроется справочник номенклатурных групп. При этом текущей станет номенклатурная группа, которой принадлежит активная номенклатура в форме InventTable. И в то же время выводится полный список всех имеющихся номенклатурных групп. Я создал свою собственную форму, основанную на моей (нестандартной) таблице. В этой форме есть грид. В одном из полей этого грида есть также функционал "перейти к основной таблице". Проблема: у меня при переходе к основной таблице открывается основная таблица, но при этом в ней записи фильтруются, то есть отображается только одна запись. Мне же нужно, чтобы отображались все записи справочника. Вопрос: как это сделать? Как сделать, чтобы при переходе к основной таблице записи в этой таблице не фильтровались, а выводился весь справочник?
__________________
Когда гестапо перекрыло все выходы, Штирлиц вышел через вход! |
|
20.09.2004, 17:26 | #2 |
Гость
|
главная таблица фильтруется из-за того, что на вызывающей таблице (или EDT поля) установлен релайшн. Снятие его даст искомый эффект полной главной таблицы. Как избежать подфильтровывания гт иным способом без программирования я не знаю.
Для установления в общем списке курсора на запись, соответствующую коду в поле вызывающей таблицы, используйте findRecord() датасорса вызываемой таблицы. |
|
20.09.2004, 17:42 | #3 |
Участник
|
2sassas: Спасибо за ответ.
Однако в таблице InventTable поле ItemGroupId тоже строится на EDT, у которого есть релэйшн на таблицу InventItemGroup. Я для экспериментов вставил в свою таблицу поле, основанное на EDT ItemGroupId - там при переходе к основной таблице выводятся все записи. А при переходе к основной таблице из созданного мной поля записи в основной таблице фильтруются
__________________
Когда гестапо перекрыло все выходы, Штирлиц вышел через вход! |
|
20.09.2004, 17:50 | #4 |
Гость
|
посмотрите таки релайшн на Вашей таблице. Для эксперимента можете добавить релайшн на InventItemGroup и открыть ее из соответствующего поля.
Посмотрите также обработчик init() (run и др методы при вызове) формы и датасорса (где-то возможно подфильтровывание), указанной в MenuItem FormRef Вашей таблицы |
|
20.09.2004, 17:50 | #5 |
Moderator
|
А нет ли в relation Вашего EDT связей типа "Поле ссылки фиксировано"? Из-за этого записи и фильтруются.
__________________
Андрей. |
|
20.09.2004, 17:51 | #6 |
Участник
|
Заработало, но не совсем.
У меня ссылка на основную таблицу по EDT, у которого был пелейшн типа "поле ссылки фиксировано". Я убрал "поле ссылки фиксированно", и теперь при переходе к основной таблице выводятся все записи подряд. Но не все так просто. Мне-то надо, чтобы в основной таблице выводились только те записи, у которых в определенном поле содержится значение "1". Для этого я и делал релейшн "поле ссылки фиксировано". Получается, что релейшн типа "поле ссылки фиксированно" на EDT работает только на лукапах, а при переходе к основной таблице наличие такой связи приводит к отображению только одной записи.
__________________
Когда гестапо перекрыло все выходы, Штирлиц вышел через вход! |
|
20.09.2004, 18:44 | #7 |
Moderator
|
Да, вот такая вот фича.
__________________
Андрей. |
|
13.11.2015, 14:21 | #8 |
Участник
|
Подскажите пожалуйста есть ли способ как то обойти эту "фичу"?
Переопределить какие то методы может быть? Нужно сделать чтобы при переходе из дочерней таблице по полю, у которого в его EDT есть relation в том числе со связью "Поле ссылки фиксировано", к основной таблице - та фильтровалась не по одной записи, а по всем записям подходящего типа (заданного фиксированной частью связи), а уже конкретная запись делалась текущей.
__________________
Ax 3.0 SP5 FP2 kr2 |
|
13.11.2015, 15:03 | #9 |
Administrator
|
Не помню уже, как в 3.0, но в 2009 есть методы args.lookupField() и args.lookupValue(). Если их заполнить, то переход будет осуществляться с позиционированием. А фильтрацию можно сделать на открываемой форме, анализируя либо через args.record(), либо через args.caller() - откуда произошел вызов.
__________________
Возможно сделать все. Вопрос времени |
|
14.11.2015, 19:18 | #10 |
MCITP
|
Цитата:
Сообщение от abark
Подскажите пожалуйста есть ли способ как то обойти эту "фичу"?
Переопределить какие то методы может быть? Нужно сделать чтобы при переходе из дочерней таблице по полю, у которого в его EDT есть relation в том числе со связью "Поле ссылки фиксировано", к основной таблице - та фильтровалась не по одной записи, а по всем записям подходящего типа (заданного фиксированной частью связи), а уже конкретная запись делалась текущей.
__________________
Zhirenkov Vitaly |
|
18.11.2015, 12:52 | #11 |
Участник
|
Спасибо за ответы.
Сделал так: 1. в источнике данных вызываемой формы в методе init() отключил dynalink через X++: this.query().datasourceNo(1).clearDynaLinks() X++: QueryBuildRange qbr;
;
qbr = this.query().dataSourceNo(1).addRange(fieldnum(MyTable, MyTableFixedTypeField));
qbr.value(int2str(_myValueForFilterFixedTypeField)); X++: MyTable record;
;
...
record = MyTable::find(_myRecordId);
if(record)
this.findRecord(record);
__________________
Ax 3.0 SP5 FP2 kr2 |
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|