|  12.11.2014, 20:10 | #1 | 
| Участник | Расширеный фильтр 
			
			Добрый день. Кто нить знает алгоритм автоматического добавления полей в расширенный фильтр.  Есть таблица. В ней полей 8 (RefRecId). Создаю простую форму. Кидаю в качестве источника свою таблицу. Запускаю форму, Ctrl+F3 и вижу там 5 полей...одно из них входит в уникальный индекс. Мне нужно чтоб там были все 8 полей. Как сделать? С группами Autolookup играл. Relation смотрел....2 идентичных поля...всё одинаково, но одно попало, другое нет.  Конечно есть выход вручную всё сгенерировать, но тогда нужно на форме линковать таблицы к которым ведут RefRecId поля и по ним уже строить фильтр...но это сильно бьёт по производительности. Ax2012R3 | 
|  | 
|  12.11.2014, 22:50 | #2 | 
| Участник | 
			
			Смотрите заполнение группы AutoIdentification в таблицах, на которые построены релейшены Насчет "вручную сгенерировать" - рейнж или фильтр на поле с форейнкеем будет работать по таблице связи. Таблицы добавлять в датасорс для этого не надо 
				__________________ Axapta v.3.0 sp5 kr2 | 
|  | 
|  13.11.2014, 09:23 | #3 | 
| Участник | Цитата: Если не добавлять датасорс, то на форме запроса в значениях будут RecId, а не поле по ReplecementKey. | 
|  | 
|  13.11.2014, 09:39 | #4 | 
| Участник | 
			
			Похоже, у вас связи с некоторыми таблицами не определяются как ForeignKey Проверьте релейшены и таблицы, для которых связи не установились Для проверки, можно воспользоваться методом DictField.isSurrogateForeignKey() 
				__________________ Axapta v.3.0 sp5 kr2 | 
|  | 
|  13.11.2014, 10:47 | #5 | 
| Участник | Цитата: 
		
			Сообщение от AndyD
			   Похоже, у вас связи с некоторыми таблицами не определяются как ForeignKey Проверьте релейшены и таблицы, для которых связи не установились Для проверки, можно воспользоваться методом DictField.isSurrogateForeignKey() | 
|  | 
|  13.11.2014, 10:51 | #6 | 
| Участник | Цитата: 
		
			Сообщение от AndyD
			   Для проверки, можно воспользоваться методом DictField.isSurrogateForeignKey() Попробуйте пересоздать один из отсутствующих в запросе релейшенов руками При этом, обязательно добавляйте новые отношения как ForeignKey 
				__________________ Axapta v.3.0 sp5 kr2 | 
|  | 
|  13.11.2014, 11:25 | #7 | 
| Участник | 
			
			 Пробовал конечно...всё имеет связь. релейшены есть. Может есть ограничение на кол-во автоматически добавляемых полей в расширенный фильтр?
		 | 
|  | 
|  13.11.2014, 11:30 | #8 | 
| Участник | 
			
			Т.е. для всех полей, для которых настроены релейшены, DictField.isSurrogateForeignKey() возвращает TRUE? Вопрос не в том, есть у вас релейшены или нет, а в том, правильные ли они Проверить просто - удалите временно релейшен для таблицы, которая есть в запросе и проверьте, появится ли какой-либо из отсутствующих 
				__________________ Axapta v.3.0 sp5 kr2 Последний раз редактировалось AndyD; 13.11.2014 в 11:32. | 
|  | |
| За это сообщение автора поблагодарили: raniel (1). | |
|  13.11.2014, 13:21 | #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); | 
|  | 
|  13.11.2014, 13:31 | #10 | 
| Участник | 
			
			Проблему решил. Всё было просто.... список полей для фильтра формировался автоматический по всем Ref-полям которые выведены на форму :-) Спасибо! Вопрос закрыт. | 
|  | 
|  13.11.2014, 13:32 | #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 | 
|  |