![]() |
#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", )); В данном случае все отрабатывает корректно и без всяких предупреждений...Похоже что проблема именно с контейнерными полями, может в данном случае нужно по другому как то представлять в запросе эти поля? Кто нибудь сталкивался с подобной проблемой и методом ее решения? Спасибо
__________________
![]() |
|
![]() |
#2 |
Участник
|
кавычку внутри range надо экранировать.
Т.е. писать не strfmt('((%2.%4 == "%1") || (%2.%3 == "%1"))', а strfmt('((%2.%4 == \"%1\") || (%2.%3 == \"%1\"))', Смотрите SysQuery::value() |
|
![]() |
#3 |
Участник
|
![]() Цитата:
кавычку внутри range надо экранировать.
Пыталась энкранировать скобки в dimension\[1\] , но тоже рез-та нет. Тем более как я уже писала тот же синтаксис я проверила на обычных полях и ошибок нет ![]()
__________________
![]() |
|
![]() |
#4 |
Участник
|
А можно сделать совсем просто:
PHP код:
|
|
![]() |
#5 |
Участник
|
Виноват. Невнимательно прочитал. У Вас или на разные поля стоит, тогда мой пример не подохдит.
|
|
![]() |
#6 |
Участник
|
Цитата:
У Вас или на разные поля стоит
![]()
__________________
![]() |
|
![]() |
#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] |
|
![]() |
#8 |
Юзовские
|
Добрый день.
Действительно, не хочет воспринимать квадратную скобку. Предлагаю попробовать так ('((\"%2.%4\" == "%1") || (\"%2.%3\" == "%1"))' |
|
![]() |
#9 |
Участник
|
Цитата:
...Но только для элементов с индексом [1]
Для моей задачи это решение подходит ![]() Цитата:
Действительно, не хочет воспринимать квадратную скобку. Предлагаю попробовать так ('((\"%2.%4\" == "%1") || (\"%2.%3\" == "%1"))'
Всем большое спасибо.
__________________
![]() |
|
![]() |
#10 |
Участник
|
Кто-нибудь нашел решение данной проблемы?
У меня возникла необходимость в таком условии, но не обязательно по первой аналитике. |
|
|
|