|
![]() |
#1 |
Участник
|
Есть универсальный способ находить заданные пользователем фильтры в то числе если пользователь задал фильтр по полю, изначально не прошитому в Query.
Данная функция возвращает значение фильтра по заданному Query, коду таблицы и коду поля в таблице.Если фильтр не найден или не задан, то возвращает пустую строку. X++: str getRangeValue(Query _query, TableId _tableId, FieldId _fieldId) { QueryBuildDataSource innerQbds; QueryBuildRange innerQbr; int idx; str ret; innerQbds = _query.dataSourceTable(_tableId); if (innerQbds && innerQbds.enabled()) { innerQbr = innerQbds.findRange(_fieldId); if (innerQbr && innerQbr.value()) { ret = innerQbr.value(); } else { for (idx = 1; idx <= _query.queryFilterCount(); idx++) { if (_query.queryFilter(idx).dataSource().name() == innerQbds.name() && _query.queryFilter(idx).value()) { ret = _query.queryFilter(idx).value(); break; } } } } return ret; } X++: getRangeValue(q, tableNum(CustTransOpen), fieldnum(CustTransOpen, dueDate));
__________________
Мои утилиты для Аксапты версий 3.0-2012: http://aceofdatabase.blogspot.com/ Последний раз редактировалось Ace of Database; 18.11.2020 в 09:52. |
|
|
За это сообщение автора поблагодарили: sukhanchik (6), alicedr (1). |
|
|