| 
			
			 | 
		#1 | 
| 
			
			 Гость 
		
			
	 | 
	
	
	
		
		
			
			
			Как не использовать relations на таблицах
			 
			
			Пишу всего второй месяц, поэтому вопрос может показаться глупым. 
		
		
		
		
		
		
		
	Как я поняла, в Акцапте фильтры по любому документу (например, показать строки текущего журнала) делаются, используя relations на таблицах, в коде нигде эти фильтры не пишутся. Как в таком случае обрабатывается такая ситуация: У меня есть договора и их приложения. Для просмотра оборотов по приложению надо показать обороты только этого приложения, тут все нормально, а при просмотре оборотов основного договора надо показать обороты самого договора и его приложений в одном списке, здесь уже такой строгий relations с текущим договором не нужен. Как делают правильно в таких случаях, убирают как-то эти relations или еще чего?  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от demetra
			
			 
в коде нигде эти фильтры не пишутся 
		
	Вы похоже спрашиваете про кнопки, которые открывают новые формы. Вы хотите, чтобы новые формы открывались с учетом relation или без него. Так? У menuItem есть свойство DataSource. Установите туда значение - будет связь по указанному датасорсу, не установите - не будет связи. Если вас таки интересует код, то у QueryBuildDataSource есть методы clearLinks и clearDynalinks.  | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Гость 
		
			
	 | 
	
	
	
		
		
		
		 
			
			На menuItem нет свойства  DataSource, только на menuItemButton, я убрала оттуда  DataSource, но не помогает, все равно фильтрует, а если в коде на qbds очищать линки и устанавливать новый ранг( я понимаю так надо делать),   то где это делается ? на методе формы? на каком?
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 NavAx 
		
			
	 | 
	
	
	
		
		
		
		 
			
			линки можно чистить в методе Init() датасорса после super(), 
		
		
		
		
		
		
		
	а также в linkActive() датасорса до super()  | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Гость 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Линки почистились, теперь проблема добавить новый ранг, чтобы был фильтр по текущему договору и всем его приложениям. Что-то не соображу, как это в addrange впихнуть несколько значений.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 NavAx 
		
			
	 | 
	
	
	
		
		
		
		 
			
			через запятую! 
		
		
		
		
		
		
		
	...опишите подробнее, какие фильтры и по каким полям нужно повесить на датасорс  | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Гость 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Я стою на строке контракта в RContractTable и вызываю форму оборотов этого контракта RContractVendTrans, там в датасурсах таблица VendTrans. Эти таблицы связаны по трем полям: 
		
		
		
		
		
		
		
	VendTrans.AccountNum == RContractTable.RContractPartnerCode VendTrans.RContractAccount == RContractTable.RContractAccount VendTrans.RContractCode == RContractTable.RContractCode Мне надо, чтобы если я стою на основном контракте, показывались не только его обороты, но и обороты его приложений общим списком. У приложений в поле RContractGeneral находится ссылка на RContractAccount основного контракта. this.query().dataSourceNo(1).addRange(fieldnum(VendTrans,AccountNum)).value(????); this.query().dataSourceNo(1).addRange(fieldnum(VendTrans,RContractAccount)).value(???); this.query().dataSourceNo(1).addRange(fieldnum(VendTrans,RContractCode)).value(???); где ??? должны быть все номера текущего договора и его приложений.  | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 NavAx 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Я так понимаю в этом случае фильтр на поля AccountNum, RContractCode будет одним для главного контракта и его приложений. 
		
		
		
		
		
		
		
	А фильтр на поле RContractAccount можно установить либо несколько раз добавив Range (например, в цикле), либо предварительно составить строку "фильтр1, фильтр2,... фильтрN" и передать ее в value().  | 
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 Гость 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Спасибо, все работает.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 Гость 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Еще один вопрос по этой теме. 
		
		
		
		
		
		
		
	Формирую строку нужных номеров для фильтра: strRContractAccount = "АА1, АА2, АА3 "; this.query().dataSourceNo(1).addRange(fieldnum(VendTrans,RContractAccount)).value(strRContractAccount); Все работает прекрасно. Но если strRContractAccount = "АА1, АА/2, АА/3 "; то в фильтре берутся только записи с номерами, в которых нет /, а АА/1 и АА/2 игнорируются. В чем дело, почему не понимается / ?  | 
| 
	
 | 
| 
			
			 | 
		#11 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			strRContractAccount = QueryValue(“АА/1”) + “,” + QueryValue(“АА/2”);
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#12 | 
| 
			
			 Гость 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Не помогает. Я правда ошиблась, строка  strRContractAccount = "АА1, АА\2, АА\3 ";
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#13 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Нужно вставлять по 2 "\" - backslash 
		
		
		
		
		
		
			
		
		
		
		
	Так как один будет экранировать другой  | 
| 
	
 | 
| 
			
			 | 
		#14 | 
| 
			
			 Гость 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Спасибо, но я выкрутилась только так  
		
		
		
		
		
		
		
	strRContractAccount = QueryValue(@"НСЭ1") + "," + QueryValue(@"НСЭ1\\1") + "," + QueryValue(@"НСЭ1\\2"); без \\ и @ в запросе все равно показывает НСЭ11 и НСЭ12 без \  | 
| 
	
 |