24.11.2006, 13:15 | #1 |
----------------
|
Сделать AND по одному полю без расширенного фильтра
Интересная фича fieldId2ext
X++: Query q = new Query(); QueryBuildDataSource qbds; ; qbds = q.addDataSource(tableNum(InventTable)); qbds.addRange(fieldNum(InventTable, ItemId)).value("8"); qbds.addRange(fieldid2ext(fieldNum(InventTable, ItemId),1)).value("2"); info(qbDS.toString()); |
|
|
За это сообщение автора поблагодарили: mazzy (2), EVGL (1), blokva (2), zemlyn (1), kashperuk (3), axaLearner (1), oip (3). |
24.11.2006, 13:26 | #2 |
Участник
|
Скорее уж багофича
|
|
24.11.2006, 14:11 | #3 |
Administrator
|
Не знаю. По-моему, все-таки фича. Полезная. Потому в Полезное перенесу.
Wamr'у уже в который раз благодарность от всего сообщества.
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
24.11.2006, 14:17 | #4 |
Axapta
|
Класс!
|
|
24.11.2006, 14:22 | #5 |
Участник
|
Ого. Супер. А расскажите еще, как до такой жизни дошли? В смысле, где-то встретили такой код, или же сами придумали?
|
|
24.11.2006, 14:23 | #6 |
----------------
|
ну раз пошла такая пьянка. Сразу предупреждаю, что Аксапта считает эти поля разными всегда и при поиске фильтра и при удалении и пр.
Как дошли... давно это было - не помню уже |
|
24.11.2006, 14:26 | #7 |
Участник
|
Ну, это можно попробовать так обойти:
X++: qbr = qbds.findRange(fieldNum(InventTable, ItemId), 2); |
|
24.11.2006, 14:30 | #8 |
Участник
|
Правда это ж просто occurrence задается, то есть если перед 2 задать еще один фильтр, то найдется он, а не по расширенному полю
Но по fieldId2Ext он у меня этот фильтр просто не находит. |
|
24.11.2006, 15:02 | #9 |
Axapta
|
А у нас был программист, оказывается, который это знал. И мне даже посчастливилось с ним немного поработать. Вот некий его код в нашем приложении еще от 2004 года, только что случайно обнаружил:
X++: // При добавление Range'ов с разными fieldId, они соединяются по условию AND qbds.addRange(fieldId2Ext(fieldnum(InventTable, ItemId), 1)).value(queryRunRangeValue); qbds.addRange(fieldnum(InventTable, ItemId)).value(range.value()); |
|
27.11.2006, 12:51 | #10 |
Пенсионер
|
Ого классная фича, тут можно такие весчи вытворять, например добавление OR и еще AND и т.д.:
X++: qbds.addRange(fieldNum(InventTable, ItemId)).value("8"); qbds.addRange(fieldid2ext(fieldNum(InventTable, ItemId),1)).value("2"); qbds.addRange(fieldid2ext(fieldNum(InventTable, ItemId),1)).value("3"); qbds.addRange(fieldid2ext(fieldNum(InventTable, ItemId),1)).value("4"); X++: qbds.addRange(fieldNum(InventTable, ItemId)).value("8"); qbds.addRange(fieldid2ext(fieldNum(InventTable, ItemId),1)).value("2"); qbds.addRange(fieldid2ext(fieldNum(InventTable, ItemId),0)).value("3"); qbds.addRange(fieldid2ext(fieldNum(InventTable, ItemId),1)).value("4");
__________________
Законы природы еще никто не отменял! А еще у меня растет 2 внучки!!! Кому интересно подробности тут: http://www.baby-shine.com/ |
|