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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.11.2014, 20:10   #1  
raniel is offline
raniel
Участник
Аватар для raniel
 
239 / 11 (1) +
Регистрация: 20.10.2006
Расширеный фильтр
Добрый день. Кто нить знает алгоритм автоматического добавления полей в расширенный фильтр.
Есть таблица. В ней полей 8 (RefRecId).
Создаю простую форму.
Кидаю в качестве источника свою таблицу.
Запускаю форму, Ctrl+F3 и вижу там 5 полей...одно из них входит в уникальный индекс. Мне нужно чтоб там были все 8 полей. Как сделать?
С группами Autolookup играл. Relation смотрел....2 идентичных поля...всё одинаково, но одно попало, другое нет.
Конечно есть выход вручную всё сгенерировать, но тогда нужно на форме линковать таблицы к которым ведут RefRecId поля и по ним уже строить фильтр...но это сильно бьёт по производительности.
Ax2012R3
Старый 12.11.2014, 22:50   #2  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Смотрите заполнение группы AutoIdentification в таблицах, на которые построены релейшены

Насчет "вручную сгенерировать" - рейнж или фильтр на поле с форейнкеем будет работать по таблице связи. Таблицы добавлять в датасорс для этого не надо
__________________
Axapta v.3.0 sp5 kr2
Старый 13.11.2014, 09:23   #3  
raniel is offline
raniel
Участник
Аватар для raniel
 
239 / 11 (1) +
Регистрация: 20.10.2006
Цитата:
Сообщение от AndyD Посмотреть сообщение
Смотрите заполнение группы AutoIdentification в таблицах, на которые построены релейшены

Насчет "вручную сгенерировать" - рейнж или фильтр на поле с форейнкеем будет работать по таблице связи. Таблицы добавлять в датасорс для этого не надо
Посмотрел AutoIdentification в таблицах...всё идентично, но по одной значение в фильтр попадает по другой нет.
Если не добавлять датасорс, то на форме запроса в значениях будут RecId, а не поле по ReplecementKey.
Старый 13.11.2014, 09:39   #4  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Похоже, у вас связи с некоторыми таблицами не определяются как ForeignKey
Проверьте релейшены и таблицы, для которых связи не установились

Для проверки, можно воспользоваться методом DictField.isSurrogateForeignKey()
__________________
Axapta v.3.0 sp5 kr2
Старый 13.11.2014, 10:47   #5  
raniel is offline
raniel
Участник
Аватар для raniel
 
239 / 11 (1) +
Регистрация: 20.10.2006
Цитата:
Сообщение от AndyD Посмотреть сообщение
Похоже, у вас связи с некоторыми таблицами не определяются как ForeignKey
Проверьте релейшены и таблицы, для которых связи не установились

Для проверки, можно воспользоваться методом DictField.isSurrogateForeignKey()
что всё идентично. Таблицы связанные(справочники) делал вместе, по аналогии, всё просто идентично :-(
Старый 13.11.2014, 10:51   #6  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Цитата:
Сообщение от AndyD Посмотреть сообщение
Для проверки, можно воспользоваться методом DictField.isSurrogateForeignKey()
Так это пробовали?

Попробуйте пересоздать один из отсутствующих в запросе релейшенов руками
При этом, обязательно добавляйте новые отношения как ForeignKey
__________________
Axapta v.3.0 sp5 kr2
Старый 13.11.2014, 11:25   #7  
raniel is offline
raniel
Участник
Аватар для raniel
 
239 / 11 (1) +
Регистрация: 20.10.2006
Цитата:
Сообщение от AndyD Посмотреть сообщение
Так это пробовали?

Попробуйте пересоздать один из отсутствующих в запросе релейшенов руками
При этом, обязательно добавляйте новые отношения как ForeignKey
Пробовал конечно...всё имеет связь. релейшены есть. Может есть ограничение на кол-во автоматически добавляемых полей в расширенный фильтр?
Старый 13.11.2014, 11:30   #8  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Цитата:
Сообщение от raniel Посмотреть сообщение
Пробовал конечно...
Т.е. для всех полей, для которых настроены релейшены, DictField.isSurrogateForeignKey() возвращает TRUE?

Цитата:
Сообщение от raniel Посмотреть сообщение
всё имеет связь. релейшены есть.
Вопрос не в том, есть у вас релейшены или нет, а в том, правильные ли они

Цитата:
Сообщение от raniel Посмотреть сообщение
Может есть ограничение на кол-во автоматически добавляемых полей в расширенный фильтр?
Проверить просто - удалите временно релейшен для таблицы, которая есть в запросе и проверьте, появится ли какой-либо из отсутствующих
__________________
Axapta v.3.0 sp5 kr2

Последний раз редактировалось AndyD; 13.11.2014 в 11:32.
За это сообщение автора поблагодарили: raniel (1).
Старый 13.11.2014, 13:21   #9  
raniel is offline
raniel
Участник
Аватар для raniel
 
239 / 11 (1) +
Регистрация: 20.10.2006
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);
Так там вначале идёт моя таблица, после все другие которые автоматом генерируються как Ref-ы...и среди них нет тех что мне надо...а должны быть. Очень странно
Старый 13.11.2014, 13:31   #10  
raniel is offline
raniel
Участник
Аватар для raniel
 
239 / 11 (1) +
Регистрация: 20.10.2006
Проблему решил. Всё было просто.... список полей для фильтра формировался автоматический по всем Ref-полям которые выведены на форму :-)
Спасибо!
Вопрос закрыт.
Старый 13.11.2014, 13:32   #11  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Вы не туда смотрите
Вас должен интересовать метод buildImplicitReplacementsFromTable() класса SysQueryForm

X++:
            if(dictField && !dictField.isSystem() && dictField.isSurrogateForeignKey() && dictField.visible() && !dictField.isDimensionField()
                && securityRights.fieldAccessRight(dictTable.name(),dictField.name()) != AccessRight::NoAccess
            )
Обратите внимание на условие dictField.isSurrogateForeignKey()
А так же, стоит посмотреть на права доступа
__________________
Axapta v.3.0 sp5 kr2
Теги
расширенный фильтр

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
AX2009 расширеный фильтр Wamr DAX: Программирование 11 18.12.2010 17:27
Как программно снять "фильтр по выделению" GR-VI DAX: Программирование 7 11.08.2010 10:11
Как сделать фильтр по группе пользователей? Zabr DAX: Программирование 12 08.04.2009 11:40
ERP-BLOG: Axapta, фильтр по сетке Blog bot DAX Blogs 26 05.02.2009 15:56
Исполнить сформированный фильтр radya DAX: Программирование 14 26.07.2007 20:47

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

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

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