| 
			
			 | 
		#1 | 
| 
			
			 MCTS 
		
			
	 | 
	
	
	
		
		
			
			
			Lookup form, OuterJoin и фильтр
			 
			
			Помогите разобраться. 
		
		
		
		
		
		
			Cоздал Lookup form на основе таблицы InventTable и CustVendExternalItem. Т.е. необходимо отобразить в выпадающем списке строки таблицы InventTable и колонку Внешняя номенклатура CustVendExternalItem.ExternalItemId. Если установить связь между таблицами InnerJoin - фильтр по всем колонкам работает как и надо. Если OuterJoin - фильтр работает только по столбцам таблицы InventTable, а по полю Внешняя номенклатура не работает. Что за багофича? 
				__________________ 
		
		
		
		
	![]() В глухомани, в лесу Несмотря на красу Дни проводит Лиса Патрикевна. Я никак не пойму Отчего, почему Не пускают куму На деревню  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Ну да, а как фильтровать, если наличие записи по условиям связи в принципе необязательно? 
		
		
		
		
		
		
		
	С уважением, itfs.  | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Встречный вопрос -а зачем в лукаме устанавливать outerJoin?  
		
		
		
		
		
		
			
		
		
		
		
	 
		 | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 MCTS 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Чтобы в список попадали не только строки таблицы CustVendExternalItem, но и InventTable. (Не каждая строка InventTable имеет соответствие CustVendExternalItem)
		 
		
		
		
		
		
		
			
				__________________ 
		
		
		
		
	![]() В глухомани, в лесу Несмотря на красу Дни проводит Лиса Патрикевна. Я никак не пойму Отчего, почему Не пускают куму На деревню  | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от Russland
			
			 
Чтобы в список попадали не только строки таблицы CustVendExternalItem, но и InventTable. (Не каждая строка InventTable имеет соответствие CustVendExternalItem) 
		
	 | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 MCTS 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Возможно не совсем точно объяснил 
		
		
		
		
		
		
			Первичен InventTable В выпададающий список должны попасть все строки из InventTable. Кроме того, если одна строка в InventTable имеет отображение n-строками в CustVendExternalItem, в списке должны отобразиться n-строк этой номенклатуры. Классический Outer. Или я что-то упускаю? 
				__________________ 
		
		
		
		
	![]() В глухомани, в лесу Несмотря на красу Дни проводит Лиса Патрикевна. Я никак не пойму Отчего, почему Не пускают куму На деревню  | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 MCTS 
		
			
	 | 
	
	
	
		
		
		
		 
			
			если в CustVendExternalItem строки нет, всё равно строка должна быть отображена
		 
		
		
		
		
		
		
			
				__________________ 
		
		
		
		
	![]() В глухомани, в лесу Несмотря на красу Дни проводит Лиса Патрикевна. Я никак не пойму Отчего, почему Не пускают куму На деревню  | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Да, классический outerJoin - ну, тогда придется отказаться от фильтрации. ;(
		 
		
		
		
		
		
		
			
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 MCTS 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Абыдно  
		
		
		
		
		
		
			 
		
				__________________ 
		
		
		
		
	![]() В глухомани, в лесу Несмотря на красу Дни проводит Лиса Патрикевна. Я никак не пойму Отчего, почему Не пускают куму На деревню  | 
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от itfs
			
			 
Ну да, а как фильтровать, если наличие записи по условиям связи в принципе необязательно? 
		
	С уважением, itfs.  | 
| 
	
 | 
| 
			
			 | 
		#11 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			А что мешает добавить в форме фильтра еще раз таблицу "Внешнее описание номенклатуры" ч/з 1:n и отфильтровать по полю уже этой таблицы?
		 
		
		
		
		
		
		
			
				__________________ 
		
		
		
		
	Axapta v.3.0 sp5 kr2  | 
| 
	
 | 
| 
			
			 | 
		#12 | 
| 
			
			 MCTS 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Да вроде пока не вопрос. 
		
		
		
		
		
		
			А разве View в аксапте умеют работаь с outerJoin? Они вроде только только под inner заточены. 
				__________________ 
		
		
		
		
	![]() В глухомани, в лесу Несмотря на красу Дни проводит Лиса Патрикевна. Я никак не пойму Отчего, почему Не пускают куму На деревню  | 
| 
	
 | 
| 
			
			 | 
		#13 | 
| 
			
			 MCTS 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от AndyD
			
			 
А что мешает добавить в форме фильтра 
		
	Просто пользуюсь функциональностью правая кнопка мыши -Найти -Фильтр а про добавление ч/з 1:n - что-то я сообразить не могу 
				__________________ 
		
		
		
		
	![]() В глухомани, в лесу Несмотря на красу Дни проводит Лиса Патрикевна. Я никак не пойму Отчего, почему Не пускают куму На деревню  | 
| 
	
 | 
| 
			
			 | 
		#14 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от AndyD
			
			 
А что мешает добавить в форме фильтра еще раз таблицу "Внешнее описание номенклатуры" ч/з 1:n и отфильтровать по полю уже этой таблицы? 
		
	Последний раз редактировалось MironovI; 08.06.2006 в 18:18.  | 
| 
	
 | 
| 
			
			 | 
		#15 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от Russland
			
			 
Да вроде пока не вопрос. 
		
	А разве View в аксапте умеют работаь с outerJoin? Они вроде только только под inner заточены.  
		 | 
| 
	
 | 
| 
			
			 | 
		#16 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			2 MironovI 
		
		
		
		
		
		
			Да, уверен. Вот запрос в первом случае X++: SELECT * FROM {oj INVENTTABLE A LEFT OUTER JOIN CUSTVENDEXTERNALITEM B ON ((B.DATAAREAID='dem') AND ((B.EXTERNALITEMID='121') AND (A.ITEMID=B.ITEMID)))} WHERE (A.DATAAREAID='dem') Вот запрос с добавлением еще одной таблицы X++: SELECT * FROM {oj INVENTTABLE A LEFT OUTER JOIN CUSTVENDEXTERNALITEM B ON ((B.DATAAREAID='dem') AND (A.ITEMID=B.ITEMID))}, CUSTVENDEXTERNALITEM C(NOLOCK) WHERE (A.DATAAREAID='dem') AND ((C.DATAAREAID='dem') AND ((C.EXTERNALITEMID='121') AND (A.ITEMID=C.ITEMID))) ORDER BY A.DATAAREAID,A.ITEMID 
				__________________ 
		
		
		
		
	Axapta v.3.0 sp5 kr2  | 
| 
	
 | 
| 
			
			 | 
		#17 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Каюсь что сразу не допонял, позже дошло, аж пост переделал - вобщем респект, хоть это и не работа с гридом лукапа, но - даже без программирования  
		
		
		
		
		
		
		
	 
		 | 
| 
	
 | 
| 
			
			 | 
		#18 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от MironovI
			
			 
Ну кстати нормальный Transact SQL с этим справляется - если это вопрос жизни и смерти - сделайте "поддельную" таблицу, на скуле описаную как view. 
		
	  Как это так? Покажи мне всех, неважно есть у них хвост или нет. И тут же, а теперь спячь из них всех у кого он не зеленый. Спрашивается у кого хвоста нет вообще он зеленый или нет? С уважением, itfs.  | 
| 
	
 | 
| 
			
			 | 
		#19 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			По-видимому, имелось в виду что-то типа этого 
		
		
		
		
		
		
			X++: SELECT * FROM {oj INVENTTABLE A LEFT OUTER JOIN CUSTVENDEXTERNALITEM B ON ((B.DATAAREAID='dem') AND (A.ITEMID=B.ITEMID))} WHERE (A.DATAAREAID='dem') and (B.EXTERNALITEMID='121') 
				__________________ 
		
		
		
		
	Axapta v.3.0 sp5 kr2  | 
| 
	
 | 
| 
			
			 | 
		#20 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от AndyD
			
			 
По-видимому, имелось в виду что-то типа этого 
		
	X++: SELECT * FROM {oj INVENTTABLE A LEFT OUTER JOIN CUSTVENDEXTERNALITEM B ON ((B.DATAAREAID='dem') AND (A.ITEMID=B.ITEMID))} WHERE (A.DATAAREAID='dem') and (B.EXTERNALITEMID='121') С уважением, itfs.  | 
| 
	
 |