| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			
			Проблемы с OuterJoin
			 
			
			Модифицировал форму SalesTable, добавив в нее новый DataSource с самопальной таблицей RMEPrintHistory. 
		
		
		
			Новый DataSource (RMEPrintHistory) соединяется с DataSource (SalesTable) c типом связи OuterJoin. В таблице RMEPrintHistory в узле Relations, указана таблица SalesTable, далее в условии соединения задано SalesTable.salesid== RMEPrintHistory.salesid and RMEPrintHistory.documentstatus == 28 (Facture_Ru) Отношение между таблицами SalesTable и RMEPrintHistory один ко многим . Все работает без проблем. Но стоит применить фильтрацию к гриду , и условие RMEPrintHistory.documentstatus == 28 (Facture_Ru) словно слетает и вылезают все записи для которых верно SalesTable.salesid== RMEPrintHistory.salesid. Голову сломал, в чем может быть дело ... не пойму. Если кто сталкивался с подобным, помогите!  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			...
		 
		
		
		
			 | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			....
		 
		
		
		
			 | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Можно посмотреть какая команда реально приходит на сервер SQL c помощью монитора SQL Аксапты или профайлера SQL Server
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Посмотрел в профайлере ..... 
		
		
		
		
		
		
		
	До фильтрации PHP код: 
	
			
	PHP код: 
	
			
	Почему ?  | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			По-моему вы строите релейшен не на той таблице. Попробуйте на SalesTable построить рейлейшн на  RMEPrintHistory
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			А в форме запроса для фильтрации есть строка с DocumentStatus = 28 ?
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			2 Bega 
		
		
		
		
		
		
		
	DocumentStatus принадлежит подчиненной таблице. Чтобы отфильтровать по нему явно надо связать таблицы в фильтре и выбирать уже по RMEPrintHistory.DocumentStatus  | 
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			У меня есть похожий случай, в форме фильтра строка с полем по которому есть связь типа "поле ссылки фиксировано" отображается сразу, ее не надо добавлять пользователю
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			может попробовать сбросить настройки пользователя ?
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#11 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			По-моему я делал все правильно (все-таки основной таблицей является SalesTable). 
		
		
		
		
		
		
		
	Но все же попробовал перенести релэйшн в Salestable ... Получил два запроса без условия B.DOCUMENTSTATUS=28 до фильтрации PHP код: 
	
			
	после фильтрации PHP код: 
	
			
	Вопрос в том, почему при фильтрации условие B.DOCUMENTSTATUS=28 словно корова съедает ... Цитата: 
	
		
			А в форме запроса для фильтрации есть строка с DocumentStatus = 28 ?
		
	 
 | 
| 
	
 | 
| 
			
			 | 
		#12 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			DocumentStatus принадлежит подчиненной таблице. Чтобы отфильтровать по нему явно надо связать таблицы в фильтре и выбирать уже по RMEPrintHistory.DocumentStatus
		
	 
 | 
| 
	
 | 
| 
			
			 | 
		#13 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Извиняюсь, что внес сумятицу в вопрос. Невнимательно прочитал вопрос и посчитал, что много записей в SalesTable 
		
		
		
		
		
		
		
	 
		 | 
| 
	
 | 
| 
			
			 | 
		#14 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Я расчитывал, что выборка будет идти по следующему алгоритму 
		
		
		
		
		
		
		
	без фильтрации PHP код: 
	
			
	PHP код: 
	
			
	 | 
| 
	
 | 
| 
			
			 | 
		#15 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Сейчас проверил. Поле связи фиксировано действительно присутствует в фильтре и устанавливатеся явно. При этом связанная таблица также явно указывается. Т.е. возможно вы убираете этот критерий из запроса? Могли бы вы показать скриншот самого запроса?
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#16 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Спасибо за помощь. 
		
		
		
			Да, фиксированное поле присутсвует в виде условия ( которое можно удалить). Проблемы были из-за настроек пользователя. Подхватывался ранее настроенный запрос. После сброса настроек и удаления ранее сохраненных запросов фиксированное поля появилось. Вот бы его еще удалять нельзя было =)  | 
| 
	
 | 
| 
			
			 | 
		#17 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Изначально опубликовано ATimTim  
Нет там такого условия. Но там также нет и условия равенства salesid, однако оно попадает запрос ... Цитата: 
	
		
			Изначально опубликовано ATimTim  
Вот бы его еще удалять нельзя было =)  | 
| 
	
 | 
| 
			
			 | 
		#18 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Посмотрите здесь http://www.axforum.info/forums/showt...8623#post78623 это обсуждалось только вчера для журналов
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#19 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Чтобы его нельзя было удалить необходимо ему установить статус Locked или Hidden
		
	 
 | 
| 
	
 | 
| 
			
			 | 
		#20 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			К сожалению без программирования я не знаю способа. Но могу предложить как это сделать для всей системы. 
		
		
		
		
		
		
		
	Класс SysQueryForm, метод buildRange 1. Необходимо добавить следующую вложенную функцию PHP код: 
	
			
	PHP код: 
	
			
	PHP код: 
	
			
	 | 
| 
	
 |