20.03.2007, 16:23 | #1 |
Участник
|
Query.pack()
Странный результат выдает операция pack/unpack в Query
X++: static void testQueryPack(Args _args) { Query q1, q2; QueryBuildDataSource qbds1, qbds2; container con; ; q1 = new Query(); qbds1 = q1.addDataSource(tablenum(InventTrans)); qbds1.addRange(fieldnum(InventTrans, StatusIssue)).value(queryValue(StatusIssue::Sold)); qbds1.addRange(fieldnum(InventTrans, StatusReceipt)).value(queryValue(StatusReceipt::Purchased)); qbds1.addRange(fieldnum(InventTrans, StatusReceipt)).value(queryValue(StatusReceipt::None)); qbds1.addRange(fieldnum(InventTrans, StatusIssue)).value(queryValue(StatusIssue::None)); info(qbds1.toString()); con = q1.pack(); q2 = new Query(con); qbds2 = q2.dataSourceTable(tablenum(InventTrans)); info(qbds2.toString()); } |
|
20.03.2007, 16:35 | #2 |
Участник
|
Да, действительно, похоже на какой-то глюк.
Попробуйте может через X++: con = SysQuery::packRangeAndSortorder(q1); SysQuery::unpackRangeAndSortorder(q2, con); |
|
20.03.2007, 16:40 | #3 |
Участник
|
Навскидку - StatusIssue::None и StatusReceipt::None не имеют меток (label). Если их создать, то Query из контейнера будет создаваться нормально
__________________
Axapta v.3.0 sp5 kr2 |
|
|
За это сообщение автора поблагодарили: belugin (15), ice (1). |
20.03.2007, 16:45 | #4 |
Участник
|
Цитата:
Если вместо None указать другое значениЕ, то будет ОК |
|
20.03.2007, 16:50 | #5 |
Участник
|
придется давать осмысленный label, типа "Нет"
|
|
08.11.2010, 11:01 | #6 |
Участник
|
в Ax 2009 этот баг так и не исправили
ПС причем, если в трешке можно было в Label поставить пробел для решения данной проблемы, то в Ax 2009 так сделать нельзя Последний раз редактировалось ice; 08.11.2010 в 11:07. |
|
08.11.2010, 11:06 | #7 |
Участник
|
Я думаю, что его и не исправят в обозримом будущем. Так что стоит принять это как должное, и указывать метки для всех перечислений.
|
|
|
За это сообщение автора поблагодарили: ice (1). |
08.11.2010, 11:15 | #8 |
Участник
|
|
|
24.01.2011, 13:55 | #9 |
Участник
|
Можно так сделать. Хоть какое-то "удобство".
новый метод \Classes\Global\queryValueEnum X++: static str queryValueEnum(int _value, Name _dsName, FieldName _fieldName) { return strfmt("(%1.%2 == %3)", _dsName, _fieldName, _value); } X++: static void testQueryPack(Args _args) { Query q1, q2; QueryBuildDataSource qbds1, qbds2; container con; ; q1 = new Query(); qbds1 = q1.addDataSource(tablenum(InventTrans)); qbds1.addRange(fieldnum(InventTrans, StatusIssue)).value(queryValueEnum(StatusIssue::None, qbds1.name(), "StatusIssue")); qbds1.addRange(fieldnum(InventTrans, StatusIssue)).value(queryValueEnum(StatusIssue::Sold, qbds1.name(), "StatusIssue")); qbds1.addRange(fieldnum(InventTrans, StatusReceipt)).value(queryValueEnum(StatusReceipt::None, qbds1.name(), "StatusReceipt")); qbds1.addRange(fieldnum(InventTrans, StatusReceipt)).value(queryValueEnum(StatusReceipt::Purchased, qbds1.name(), "StatusReceipt")); info(qbds1.toString()); con = q1.pack(); q2 = new Query(con); qbds2 = q2.dataSourceTable(tablenum(InventTrans)); info(qbds2.toString()); } |
|
24.01.2011, 14:25 | #10 |
Участник
|
Пожалуй все же проще было бы задать метки для всех значений енумов.
Где-то на форуме даже выкладывали джоб, для поиска таких значений. |
|
Теги |
query, баг, ax3.0 |
|
|