|
|
#1 |
|
Участник
|
Расширеный фильтр
Добрый день. Кто нить знает алгоритм автоматического добавления полей в расширенный фильтр.
Есть таблица. В ней полей 8 (RefRecId). Создаю простую форму. Кидаю в качестве источника свою таблицу. Запускаю форму, Ctrl+F3 и вижу там 5 полей...одно из них входит в уникальный индекс. Мне нужно чтоб там были все 8 полей. Как сделать? С группами Autolookup играл. Relation смотрел....2 идентичных поля...всё одинаково, но одно попало, другое нет. ![]() Конечно есть выход вручную всё сгенерировать, но тогда нужно на форме линковать таблицы к которым ведут RefRecId поля и по ним уже строить фильтр...но это сильно бьёт по производительности. Ax2012R3 |
|
|
|
|
#2 |
|
Участник
|
Смотрите заполнение группы AutoIdentification в таблицах, на которые построены релейшены
Насчет "вручную сгенерировать" - рейнж или фильтр на поле с форейнкеем будет работать по таблице связи. Таблицы добавлять в датасорс для этого не надо
__________________
Axapta v.3.0 sp5 kr2 |
|
|
|
|
#3 |
|
Участник
|
Цитата:
Если не добавлять датасорс, то на форме запроса в значениях будут RecId, а не поле по ReplecementKey. |
|
|
|
|
#4 |
|
Участник
|
Похоже, у вас связи с некоторыми таблицами не определяются как ForeignKey
Проверьте релейшены и таблицы, для которых связи не установились Для проверки, можно воспользоваться методом DictField.isSurrogateForeignKey()
__________________
Axapta v.3.0 sp5 kr2 |
|
|
|
|
#5 |
|
Участник
|
Цитата:
Сообщение от AndyD
Похоже, у вас связи с некоторыми таблицами не определяются как ForeignKey
Проверьте релейшены и таблицы, для которых связи не установились Для проверки, можно воспользоваться методом DictField.isSurrogateForeignKey() |
|
|
|
|
#6 |
|
Участник
|
Цитата:
Сообщение от AndyD
Для проверки, можно воспользоваться методом DictField.isSurrogateForeignKey()
Попробуйте пересоздать один из отсутствующих в запросе релейшенов руками При этом, обязательно добавляйте новые отношения как ForeignKey
__________________
Axapta v.3.0 sp5 kr2 |
|
|
|
|
#7 |
|
Участник
|
Пробовал конечно...всё имеет связь. релейшены есть. Может есть ограничение на кол-во автоматически добавляемых полей в расширенный фильтр?
|
|
|
|
|
#8 |
|
Участник
|
Т.е. для всех полей, для которых настроены релейшены, DictField.isSurrogateForeignKey() возвращает TRUE?
Вопрос не в том, есть у вас релейшены или нет, а в том, правильные ли они Проверить просто - удалите временно релейшен для таблицы, которая есть в запросе и проверьте, появится ли какой-либо из отсутствующих
__________________
Axapta v.3.0 sp5 kr2 Последний раз редактировалось AndyD; 13.11.2014 в 11:32. |
|
|
|
| За это сообщение автора поблагодарили: raniel (1). | |
|
|
#9 |
|
Участник
|
AndyD Вы похоже правы по поводу релейшенов. В классе SysQyeryForm, в методе buildRange есть такой кусок в самом начале
X++: dataSourceCnt = clientSysQueryEdit.query().dataSourceCount();
rangeNextSortNo = new Map(Types::Integer, Types::Integer);
rangeList = SysQuery::getDimensionRangesFromQuery(clientSysQueryEdit.query());
for(i = 1; i <= dataSourceCnt; i++)
{
queryBuildDataSource = clientSysQueryEdit.query().dataSourceNo(i); |
|
|
|
|
#10 |
|
Участник
|
Проблему решил. Всё было просто.... список полей для фильтра формировался автоматический по всем Ref-полям которые выведены на форму :-)
Спасибо! Вопрос закрыт. |
|
|
|
|
#11 |
|
Участник
|
Вы не туда смотрите
Вас должен интересовать метод buildImplicitReplacementsFromTable() класса SysQueryForm X++: if(dictField && !dictField.isSystem() && dictField.isSurrogateForeignKey() && dictField.visible() && !dictField.isDimensionField()
&& securityRights.fieldAccessRight(dictTable.name(),dictField.name()) != AccessRight::NoAccess
)А так же, стоит посмотреть на права доступа
__________________
Axapta v.3.0 sp5 kr2 |
|
|
| Теги |
| расширенный фильтр |
|
|
Похожие темы
|
||||
| Тема | Ответов | |||
| AX2009 расширеный фильтр | 11 | |||
| Как программно снять "фильтр по выделению" | 7 | |||
| Как сделать фильтр по группе пользователей? | 12 | |||
| ERP-BLOG: Axapta, фильтр по сетке | 26 | |||
| Исполнить сформированный фильтр | 14 | |||
| Опции темы | Поиск в этой теме |
| Опции просмотра | |
|