|  23.03.2004, 13:51 | #1 | 
| Участник | Как добавить в addRange условие по "или" на контейнерные поля? 
			
			Добрый день! Необходимо определить следующее ограничение по "или" на поля типа Dimension: this.query().dataSourceTable(tablenum(PurchTable)).addRange(fieldId2Ext(fieldNum(PurchTable,Dimension),1)).value(strfmt('((%2.%4 == "%1") || (%2.%3 == "%1"))', "10-000", this.query().dataSourceTable(tablenum(PurchTable)).name(), "ExecuterDimension[1]", "Dimension[1]", )); Sql запрос на сколько я вижу корректный, но проблема в следующем - Система пишет, что не хватает правой круглой скобки и ничего соответсвенно не фильтрует. Попробовала тот же синтаксис определения ограничения только на простых полях: this.query().dataSourceTable(tablenum(PurchTable)).addRange(fieldId2Ext(fieldNum(PurchTable,Dimension),1)).value(strfmt('((%2.%4 == "%1") || (%2.%3 == "%1"))', "10-000", this.query().dataSourceTable(tablenum(PurchTable)).name(), "OrderAccount", "InvoiceAccount", )); В данном случае все отрабатывает корректно и без всяких предупреждений...Похоже что проблема именно с контейнерными полями, может в данном случае нужно по другому как то представлять в запросе эти поля? Кто нибудь сталкивался с подобной проблемой и методом ее решения? Спасибо 
				__________________   | 
|  | 
|  23.03.2004, 13:55 | #2 | 
| Участник | 
			
			кавычку внутри range надо экранировать. Т.е. писать не strfmt('((%2.%4 == "%1") || (%2.%3 == "%1"))', а strfmt('((%2.%4 == \"%1\") || (%2.%3 == \"%1\"))', Смотрите SysQuery::value() | 
|  | 
|  23.03.2004, 14:09 | #3 | 
| Участник |   Цитата: 
		
			кавычку внутри range надо экранировать.
		
	 Пыталась энкранировать скобки в dimension\[1\] , но тоже рез-та нет. Тем более как я уже писала тот же синтаксис я проверила на обычных полях и ошибок нет  скорее всего дело в чем другом .. 
				__________________   | 
|  | 
|  23.03.2004, 14:14 | #4 | 
| Участник | 
			
			А можно сделать совсем просто: PHP код: 
			 | 
|  | 
|  23.03.2004, 14:18 | #5 | 
| Участник | 
			
			Виноват. Невнимательно прочитал. У Вас или на разные поля стоит, тогда мой пример не подохдит.
		 | 
|  | 
|  23.03.2004, 14:24 | #6 | 
| Участник | Цитата: 
		
			У Вас или на разные поля стоит
		
	  Причем оба поля контейнерные. 
				__________________   | 
|  | 
|  23.03.2004, 15:12 | #7 | 
| ---------------- | 
			
			Вот так вроде можно: this.query().dataSourceTable(tablenum(PurchTable)).addRange(fieldId2Ext(fieldNum(PurchTable,Dimension),1)).value(strfmt('((%4 == "%1") || (%3 == "%1"))', "10-000", this.query().dataSourceTable(tablenum(PurchTable)).name(), "ExecuterDimension", "Dimension")); Но только для элементов с индексом [1] | 
|  | 
|  23.03.2004, 15:20 | #8 | 
| Юзовские | 
			
			Добрый день. Действительно, не хочет воспринимать квадратную скобку. Предлагаю попробовать так ('((\"%2.%4\" == "%1") || (\"%2.%3\" == "%1"))' | 
|  | 
|  23.03.2004, 15:57 | #9 | 
| Участник | Цитата: 
		
			...Но только для элементов с индексом [1]
		
	 Для моей задачи это решение подходит  , но действительно как быть если проверять значение нужно элемента не первого индекса? Цитата: 
		
			Действительно, не хочет воспринимать квадратную скобку. Предлагаю попробовать так ('((\"%2.%4\" == "%1") || (\"%2.%3\" == "%1"))'
		
	 Всем большое спасибо. 
				__________________   | 
|  | 
|  29.11.2004, 13:52 | #10 | 
| Участник | 
			
			Кто-нибудь нашел решение данной проблемы? У меня возникла необходимость в таком условии, но не обязательно по первой аналитике. | 
|  | 
|  | 
| 
 |