27.04.2010, 11:12 | #1 |
Участник
|
Ошибка в QueryBuildRange
Создаю запрос
X++: qbrOrigDataID.value(strfmt("((%1.%2=='%3')||(%1.%4=='%5'))"... Уже все перепробовал... ведь это стандартный запрос.. |
|
27.04.2010, 11:22 | #2 |
Участник
|
A если поменять местами двойные и одинарные кавычки?
P.S.: http://www.axaptapedia.com/index.php...n_query_ranges |
|
27.04.2010, 11:23 | #3 |
Moderator
|
Кавычки поменяйте местами. Двойные - внутрь выражения, а апострофы - снаружи.
P.S. Хоть и опоздал - стирать не буду. Я ведь горбатился... писал... |
|
30.04.2010, 13:45 | #4 |
Участник
|
Понял.. проблема очень странная. Пользователь говорит, что не работает. Проверяю: у меня - работет, у пользователя - нет. Стираю кэш пользователя (два файлика, DAX2009) пользователь перезаходит, все работает... просто кошмар какой-то, что делать??
|
|
30.04.2010, 14:46 | #5 |
Участник
|
|
|
01.05.2010, 10:09 | #6 |
Участник
|
Мы на одном проекте в АД вставили скрипт при логоне удалялся кеш. Много проблем разом ушло )
|
|
|
За это сообщение автора поблагодарили: kpoxa (1). |
01.05.2010, 10:23 | #7 |
Участник
|
блин.
Цитата:
еще раз (и очень внимательно) прочитайте про паттерн pack/unpack особенное внимание уделите локальному макросу currentVersion. Суть: когда меняете в коде список хранимых переменных, нужно изменять номер версии. Желательно также в unpack добавлять код для восстановления из предыдущих версий (чтобы пользовательские настройки не пропадали) |
|
|
За это сообщение автора поблагодарили: DSPIC (-7). |
06.09.2010, 16:53 | #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. |
|
06.09.2010, 17:09 | #9 |
Moderator
|
И не должно получаться. Синтаксис расширенных диапазонов не работает для массивовых полей, коим является поле Dimension. К сожалению.
P.S. http://www.axaptapedia.com/Expressions_in_query_ranges , в самом низу - раздел Limitations Последний раз редактировалось Gustav; 06.09.2010 в 17:17. |
|
|
За это сообщение автора поблагодарили: Andrux (1). |
06.09.2010, 17:24 | #10 |
Участник
|
так в том-то и дело, что работает.. Только вот у разных пользователей по-разному))) у кого-то выдает ошибку, у кого-то все нормально. Я первый раз такое вижу
|
|
06.09.2010, 17:33 | #11 |
Moderator
|
Не ограничивается ли "это работает" только частным случаем первого элемента Dimension?
|
|
06.09.2010, 17:44 | #12 |
Участник
|
Тестировал на одних и тех же данных и при тех же значениях фильтра. Сейчас переписал запрос без использования массивов для примера.... и ошибка исчезла.. Все-таки какая-то загадка
Но если бы расширенные диапазоны не работали для массивов, то на форме невозможно было бы отфильтровать данные по значениям нескольких аналитик. Последний раз редактировалось Andrux; 06.09.2010 в 17:48. |
|
06.09.2010, 23:52 | #13 |
Участник
|
Цитата:
Код: ((Dimension[2]=="ABC")) |
|
07.09.2010, 10:03 | #14 |
Moderator
|
Именно шта! И правильно отработает лишь частный случай:
Код: (Dimension=="ABC") или (Dimension="ABC") Никакие же [2] и выше не работают. Так же, как не работают SQL-названия полей: Dimension2_, Dimension3_ и т.д. Последний раз редактировалось Gustav; 07.09.2010 в 10:05. |
|
07.09.2010, 11:09 | #15 |
Участник
|
__DimensionRange.xpo
ax2009 rollup4 - все работает - ссылка на проект выше если у некоторых клиентов не работает, то напрашивается, что версия клиента отличается, скорее всего ниже, чем у тех, у кого работает. для 4.0 совет поставить обновление не ниже KB978429 |
|
|
За это сообщение автора поблагодарили: lev (3), gl00mie (3), Gustav (3), IvanS (1), S.Kuskov (3). |
07.09.2010, 11:41 | #16 |
Moderator
|
Цитата:
titov, а Вы, может, напишите здесь в явном виде, чтобы в проект не нырять, какой синтаксис надо использовать: Dimension[2] или Dimension2_ ? Спасибо. |
|
07.09.2010, 12:07 | #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. |
|
07.09.2010, 13:21 | #18 |
Участник
|
Да, действительно, не подумал))) На формахвсегда запрос типа "И"..
Переписал запрос без массивов. Все заработало. Действительно Цитата:
Синтаксис расширенных диапазонов не работает для массивовых полей, коим является поле Dimension. К сожалению.
|
|
07.09.2010, 14:38 | #19 |
Участник
|
Оказывается, чтобы работала фильтрация по полям-массивам (на тех версиях ядра, где это вообще работает), нужно всегда указывать название datasource'а, т.е. не просто
Код: (Dimension[3]=="ABC") Код: (CustTrans.Dimension[3]=="ABC") PS. Обновил статью на axaptapedia. |
|
|
За это сообщение автора поблагодарили: belugin (5), Logger (5), lev (3), titov (1), IvanS (1), kpoxa (1). |
07.09.2010, 19:06 | #20 |
Участник
|
Цитата:
Сообщение от gl00mie
PS. Обновил статью на axaptapedia.
Цитата:
ах2009 - все нормально! gl00mie, просьба обновить статью. |
|
|
За это сообщение автора поблагодарили: alex55 (1). |