|  30.11.2007, 10:09 | #1 | 
| Участник |  Засада с позиционированием при переходе к основной таблице. В чем дело? 
			
			Всем привет   Подскажите с такой ситуацией. Необходимо сделать в форме закупок сортировку по умолчанию не по номеру закупки, а по дате прихода. Сделал новый индекс DeliveryDateIdx в таблице PurchTable, выставил в форме закупок сортировку по этому индексу, все ок. Но при переходе из поля "Закупка" журнала отборочных накладных по меню "Перейти к основной таблице" открывается не та запись в форме закупок. Прочитал, что для того, чтобы открывалась нужная запись нужно в рилэйшнз таблицы добавить еще один. Создаю в таблице PurchTable рилэйшены PurchTable.PurchId == PurchTable.PurchId и PurchTable.DeliveryDate == PurchTable.DeliveryDate, но все остается как прежде  Что я делаю не так? Можно, конечно, перегрузить jumpRef в журнале ОН, но закупки много из каких форм вызываются, все замучаешься перегружать... Axapta 3.0 SP4 | 
|  | 
|  30.11.2007, 10:20 | #2 | 
| SAP | Цитата: 
		
			 Сделал новый индекс DeliveryDateIdx в таблице PurchTable, выставил в форме закупок сортировку по этому индексу, все ок. Но при переходе из поля "Закупка" журнала отборочных накладных по меню "Перейти к основной таблице" открывается не та запись в форме закупок.
		
	 | 
|  | 
|  30.11.2007, 10:31 | #3 | 
| Участник | 
			
			да, работало нормально. дело не в запросе, а в том, что я, похоже, не так рилэйшны выставляю, а вот как их правильно поставить, чего-то недопру. Вроде делаю как написано здесь http://erpkb.com/Axapta/PerexodKOsnovnojjTablice | 
|  | 
|  30.11.2007, 11:04 | #4 | 
| Участник | 
			
			собственно оно так и есть. Насколько я помню AndyD разьяснял, что происходит просмостр записей в порядке индекса. Мне кажется, стоит обрабатывать на вызываемой форме - если заполнен args.lookupField то менять сортировку на обычную
		 | 
|  | 
|  30.11.2007, 11:33 | #5 | 
| Участник | 
			
			Упс. Переситал свою же страницу - понял. В принципе, проблема в том, что отношения на таблице не перебивают, насколько я понял отношения на EDT (но я щас не уверен, надо пожкспериментировать) попробуйте сделать свой EDT без отношений а не использовать PurchID
		 | 
|  | 
|  30.11.2007, 12:13 | #6 | 
| Участник | |
|  | 
|  30.11.2007, 12:18 | #7 | 
| Участник | 
			
			можете показать query.xml() в вызываемой таблице и посмотреть, какие дайналинки там есть? Происходит фильтрация или позиционирование?
		 | 
|  | 
|  30.11.2007, 13:15 | #8 | 
| Участник | 
			
			ммм, честно говоря не совсем понял о чем идет речь, вы это имеете в виду? X++: <Query Name="" Title="" Form="SysQueryForm" UserUpdate="Yes" Version="4" Literals="Default" Interactive="Yes" AllowCheck="Yes" RecordLevelSecurity="Yes" NextUniqueId="1001" > <methods /> <Data_Sources> <datasource Name="PurchTable" Table="PurchTable" UniqueId="1000" Company="" FirstOnly="No" FirstFast="Yes" AllowAdd="All_fields" OrderMode="Order_by" FetchMode="1:n" JoinMode="InnerJoin" Update="No" Relations="No" Enabled="Yes" > <fieldlist Dynamic="Yes" > </fieldlist> <order> <DeliveryDateIdx> </DeliveryDateIdx> </order> <Ranges> </Ranges> <Data_Sources> </Data_Sources> </datasource> </Data_Sources> </Query> | 
|  | 
|  30.11.2007, 13:38 | #9 | 
| Участник | 
			
			Таки Максим правильно написал в первом сообщении При переходе к основной таблице делается запрос вида >= Значение поля PurchId И если записи отсортированы не по этому полю, то переход к основной таблице пойдет лесом. Дело в том, как выполняется поиск этой записи - как только АХ натыкается на значение МЕНЬШЕ чем Значение поля PurchId, она думает, что уже все - дальше искать смысла нет. Что при использовании другой сортировки может быть неправдой | 
|  | 
|  30.11.2007, 13:41 | #10 | 
| Участник | 
			
			А Relation тут вроде как вообще не при чем. Он используется для диналинков, а переход к основной таблице использует другой подход | 
|  | 
|  30.11.2007, 13:50 | #11 | 
| Участник | 
			
			хм, ну я исходил из вышеуказанной статьи http://erpkb.com/Axapta/PerexodKOsnovnojjTablice а про то, что условие позиционирования будет по типу >= purchId я читал. Вот вроде как эту то проблему рилэйшны и должны решить, как я понял из статьи. | 
|  | 
|  30.11.2007, 13:52 | #12 | 
| Участник | 
			
			"Следует учесть, что позиционирование работает не правильно, если порядок сортировки в форме на которую осуществляется переход не начинается с ключевого поля. В этом случае надо добавить в отношение второе поля, чтобы осуществлялась фильтрация. (пример можно найди в Таблица / Vend Invoice Jour — там задано отношение Vend Invoice Jour? из нескольких полей и при переходе к основной таблице на поле «Номер накладной» происходит фильтрация формы перехода)" Ну вот я и добавил в отношения две записи: PurchTable.PurchId == PurchTable.PurchId PurchTable.DeliveryDate == PurchTable.DeliveryDate | 
|  | 
|  30.11.2007, 13:57 | #13 | 
| Участник | 
			
			Проблема в том, что не происходит фильтрация (показывается больше 1 записи) или в том, что фильтрует неправильно?
		 | 
|  | 
|  30.11.2007, 14:05 | #14 | 
| Участник | 
			
			происходит следующее. например есть, например, закупки ЗК123 с датой прихода 13.11.2007 и ЗК124 тоже с датой прихода 12.11.2007. Если в журнале отборочных накладных встать на накладную по ЗК123, и из поля "Закупка" перейти к основной таблице, то получим форму закупок, с курсором, стоящим на ЗК124.
		 | 
|  | 
|  30.11.2007, 14:09 | #15 | 
| Участник | 
			
			Происходит так потому, что сортировка в форме стоит по дате прихода, а при получается при переборе первой записью со значением purchId >= ЗК123 мы находим ЗК124, так как дата прихода у нее раньше. | 
|  | 
|  30.11.2007, 14:14 | #16 | 
| Участник | 
			
			так релейшены ты настроил на PurchTable или на журнале отборочных накладных? Вот это будет работать только при переходе с PurchTable на PurchTable PurchTable.PurchId == PurchTable.PurchId и PurchTable.DeliveryDate == PurchTable.DeliveryDate | 
|  | 
|  30.11.2007, 14:21 | #17 | 
| Участник | 
			
			да я уже и там, и там пробовал... вроде должно работать, ан нет    | 
|  | 
|  30.11.2007, 14:42 | #18 | 
| Участник | 
			
			Чек лист: 1. Убедитесь, что на таблице, с которой вы переходите есть relation c двумя полями на PurchTable 2. Убедитесь что на таблице, с которой вы переходите, отсутствуют поля, EDT которых имеют relation на PurchTable. И у предков EDT до седьмого колена 3. Наугад: попробуйте перестроить перекрестные ссылки по структуре данных Проверка: При переходе к основной таблице должнене быть не поиск а фильтрация, то есть в вызываемой форме должна отображаться ровно одна запись. | 
|  |