![]() |
#1 |
Участник
|
Некорректная работа Extended query в 2012-й с Array полями
Привет.
Пишем модификацию под 12-ку R3 задействовали array поля (аналог Dimension) И вдруг выясняется что для измерений начиная с 2-ки extended query в 12-ке не работает. Хотя это было вылечено еще в 2009-й. Обычный Query работает. Пример - джобик отрабатывает в 2009-й для SysDimension::Center в бд уходит запрос с фильтром такого вида X++: (DIMENSION2_=N'1929') X++: (DIMENSION=N'1929') Но если поставить обычный Query то в 12-ке тоже работает. Может можно как-то это исправить ? В синтаксисе extendedQuery что-то поменять. X++: static void Job503_TestDim(Args _args) { Query query; QueryBuildDataSource qbds; SysQueryRun queryRun; SalesTable salesTable; void test(SysDimension _finSysDimension, SysDim _num) { ; setPrefix(strFmt("%1 - %2", _finSysDimension, _num)); query = new query(); query.literals(1); qbds = query.addDataSource(tableNum(SalesTable)); qbds.addSelectionField(fieldNum(SalesTable, SalesId)); // extended query для измерений начиная с 2 не работает в 12-ке qbds.addRange(fieldNum(SalesTable, RecId)).value( strFmt('((%1.%2=="%3"))', qbds.name(), fieldid2name(tablenum(SalesTable), fieldid2ext(fieldnum(SalesTable, Dimension), Dimensions::code2ArrayIdx(_finSysDimension))), SysQuery::value(_num) ) ); /* // а обычный query - работает qbds.addRange(fieldid2ext(fieldnum(SalesTable, Dimension), Dimensions::code2ArrayIdx(_finSysDimension))).value( SysQuery::value(_num) ); */ queryRun = new SysQueryRun(query); // info(queryRun.toString()); info(queryRun.query().dataSourceNo(1).toString()); // поправил для 2009-й if (queryRun.next()) { salesTable = queryRun.get(tableNum(SalesTable)); info(strFmt("%1", salesTable.SalesId)); } else { warning(strFmt("Нет записей")); } } ; setPrefix(strFmt("Test")); // test(SysDimension::Department, '001'); // для SysDimension::Department - все работает в Extended Query // test(SysDimension::Department, '002'); test(SysDimension::Center, '1929'); // а для SysDimension::Center - уже нет // test(SysDimension::Center, '222'); } Последний раз редактировалось Logger; 18.09.2025 в 14:13. Причина: Исправил строку info(queryRun.toString()); |
|
Теги |
bug, extended query, extended query syntax |
|
|