| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			
			Ошибка в QueryBuildRange
			 
			
			Создаю запрос 
		
		
		
		
		
		
		
	X++: qbrOrigDataID.value(strfmt("((%1.%2=='%3')||(%1.%4=='%5'))"...Уже все перепробовал... ведь это стандартный запрос..  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			A если поменять местами двойные и одинарные кавычки? 
		
		
		
		
		
		
		
	P.S.: http://www.axaptapedia.com/index.php...n_query_ranges  | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Moderator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Кавычки поменяйте местами. Двойные - внутрь выражения, а апострофы - снаружи. 
		
		
		
		
		
		
		
	P.S. Хоть и опоздал - стирать не буду. Я ведь горбатился... писал...  
		 | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Понял.. проблема очень странная. Пользователь говорит, что не работает. Проверяю: у меня - работет, у пользователя - нет. Стираю кэш пользователя (два файлика, DAX2009) пользователь перезаходит, все работает... просто кошмар какой-то, что делать??  
		
		
		
		
		
		
		
	 
		 | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Мы на одном проекте в АД вставили скрипт при логоне удалялся кеш. Много проблем разом ушло )
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: kpoxa (1). | |
| 
			
			 | 
		#7 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			блин. 
		
		
		
		
		
		
			
		
		
		
		
	Цитата: 
	
еще раз (и очень внимательно) прочитайте про паттерн pack/unpack особенное внимание уделите локальному макросу currentVersion. Суть: когда меняете в коде список хранимых переменных, нужно изменять номер версии. Желательно также в unpack добавлять код для восстановления из предыдущих версий (чтобы пользовательские настройки не пропадали)  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: DSPIC (-7). | |
| 
			
			 | 
		#8 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Возвращаюсь к старому вопросу, ничего не помогает.. ошибка так и не исчезает.. Уже и запрос переписал 
		
		
		
		
		
		
		
		
			X++: queryExpression = '((' + tableid2name(tablenum(Table)) + '.' + fieldid2Name(tablenum(Table), fieldId2Ext(fieldnum(Table, Dimension),1)) + ' == ' + strfmt('"%1"',queryValue(_Dimension[1])) + ') || (' + tableid2name(tablenum(Table)) + '.' + fieldid2Name(tablenum(Table), fieldId2Ext(fieldnum(Table, DimensionShip),1)) + ' == ' + strfmt('"%1"',queryValue(_Dimension[1])) + '))'; qbrRecId.value(queryExpression); Последний раз редактировалось Andrux; 06.09.2010 в 16:55.  | 
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 Moderator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			И не должно получаться. Синтаксис расширенных диапазонов не работает для массивовых полей, коим является поле Dimension. К сожалению. 
		
		
		
		
		
		
		
		
			P.S. http://www.axaptapedia.com/Expressions_in_query_ranges , в самом низу - раздел Limitations Последний раз редактировалось Gustav; 06.09.2010 в 17:17.  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: Andrux (1). | |
| 
			
			 | 
		#10 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			так в том-то и дело, что работает.. Только вот у разных пользователей по-разному))) у кого-то выдает ошибку, у кого-то все нормально. Я первый раз такое вижу
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#11 | 
| 
			
			 Moderator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Не ограничивается ли "это работает" только частным случаем первого элемента Dimension?
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#12 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Тестировал на одних и тех же данных и при тех же значениях фильтра. Сейчас переписал запрос без использования массивов для примера.... и ошибка исчезла.. Все-таки какая-то загадка 
		
		
		
		
		
		
		
		
			Но если бы расширенные диапазоны не работали для массивов, то на форме невозможно было бы отфильтровать данные по значениям нескольких аналитик. Последний раз редактировалось Andrux; 06.09.2010 в 17:48.  | 
| 
	
 | 
| 
			
			 | 
		#13 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Код: ((Dimension[2]=="ABC"))  | 
| 
	
 | 
| 
			
			 | 
		#14 | 
| 
			
			 Moderator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Именно шта! И правильно отработает лишь частный случай:  
		
		
		
		
		
		
		
		
			Код: (Dimension=="ABC") или (Dimension="ABC") Никакие же [2] и выше не работают. Так же, как не работают SQL-названия полей: Dimension2_, Dimension3_ и т.д. Последний раз редактировалось Gustav; 07.09.2010 в 10:05.  | 
| 
	
 | 
| 
			
			 | 
		#15 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			__DimensionRange.xpo 
		
		
		
			ax2009 rollup4 - все работает - ссылка на проект выше если у некоторых клиентов не работает, то напрашивается, что версия клиента отличается, скорее всего ниже, чем у тех, у кого работает. для 4.0 совет поставить обновление не ниже KB978429  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: lev (3), gl00mie (3), Gustav (3), IvanS (1), S.Kuskov (3). | |
| 
			
			 | 
		#16 | 
| 
			
			 Moderator 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
titov, а Вы, может, напишите здесь в явном виде, чтобы в проект не нырять, какой синтаксис надо использовать: Dimension[2] или Dimension2_ ? Спасибо.  | 
| 
	
 | 
| 
			
			 | 
		#17 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 X++: FieldName = new SysDictTable(tableNum(TableName)).fieldName(fieldId2ext(fieldNum(TableName,dimension),1(2,3)),DbBackend::Native); FieldName = fieldId2name(tableNum(TableName),fieldId2ext(fieldNum(TableName,dimension),1(2,3))); и обращаю внимание на QueryBuildRange (RECID) X++: sysQuery::findOrCreateRange(TableName_ds.query().dataSourceNo(1),fieldNum(TableName,[B]RECID[/B]));X++: new SysDictTable(tableNum(TableName)).fieldName(fieldNum(TableName,dimension),DbBackend::Native,2); Последний раз редактировалось titov; 07.09.2010 в 12:15.  | 
| 
	
 | 
| 
			
			 | 
		#18 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Да, действительно, не подумал))) На формахвсегда запрос типа "И".. 
		
		
		
		
		
		
		
	Переписал запрос без массивов. Все заработало. Действительно Цитата: 
	
		
			Синтаксис расширенных диапазонов не работает для массивовых полей, коим является поле Dimension. К сожалению.
		
	 
 | 
| 
	
 | 
| 
			
			 | 
		#19 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Оказывается, чтобы работала фильтрация по полям-массивам (на тех версиях ядра, где это вообще работает), нужно всегда указывать название datasource'а, т.е. не просто 
		
		
		
		
		
		
		
	Код: (Dimension[3]=="ABC") Код: (CustTrans.Dimension[3]=="ABC") PS. Обновил статью на axaptapedia.  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: belugin (5), Logger (5), lev (3), titov (1), IvanS (1), kpoxa (1). | |
| 
			
			 | 
		#20 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от gl00mie
			 
 
			PS. Обновил статью на axaptapedia. 
		
	Цитата: 
	
ах2009 - все нормально! gl00mie, просьба обновить статью.  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: alex55 (1). | |