![]() |
#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). |
![]() |
#2 |
Участник
|
![]()
Скорее уж багофича
![]() |
|
![]() |
#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 |
|
![]() |
#4 |
Axapta
|
Класс!
![]() |
|
![]() |
#5 |
Участник
|
Ого. Супер. А расскажите еще, как до такой жизни дошли? В смысле, где-то встретили такой код, или же сами придумали?
![]() |
|
![]() |
#6 |
----------------
|
ну раз пошла такая пьянка. Сразу предупреждаю, что Аксапта считает эти поля разными всегда и при поиске фильтра и при удалении и пр.
Как дошли... давно это было - не помню уже ![]() |
|
![]() |
#7 |
Участник
|
Ну, это можно попробовать так обойти:
X++: qbr = qbds.findRange(fieldNum(InventTable, ItemId), 2); |
|
![]() |
#8 |
Участник
|
Правда это ж просто occurrence задается, то есть если перед 2 задать еще один фильтр, то найдется он, а не по расширенному полю
![]() Но по fieldId2Ext он у меня этот фильтр просто не находит. ![]() |
|
![]() |
#9 |
Axapta
|
А у нас был программист, оказывается, который это знал. И мне даже посчастливилось с ним немного поработать. Вот некий его код в нашем приложении еще от 2004 года, только что случайно обнаружил:
X++: // При добавление Range'ов с разными fieldId, они соединяются по условию AND qbds.addRange(fieldId2Ext(fieldnum(InventTable, ItemId), 1)).value(queryRunRangeValue); qbds.addRange(fieldnum(InventTable, ItemId)).value(range.value()); ![]() |
|
![]() |
#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/ |
|