|
13.08.2020, 15:40 | #1 |
Участник
|
AX2009. Lookup без/со звёздочкой
Есть класс с диалогом. Перекрыл Lookup
X++: public void itemIdFld_lookup() { FormStringControl formStringControl; Query query; QueryBuildDataSource qbDS; SysTableLookup sysTableLookup; ; formStringControl = dialog.formRun().controlCallingMethod(); if (formStringControl) { query = new Query(); qbDS = query.addDataSource(tablenum(Table1), "Table1_ds"); qbDS.orderMode(orderMode::GroupBy); qbDS.addSortField(fieldnum(Table1, ItemId), sortOrder::Ascending); sysTableLookup = SysTableLookup::newParameters(tablenum(Table1), formStringControl); sysTableLookup.addLookupfield(fieldnum(Table1, ItemId), true); sysTableLookup.addLookupMethod(tablemethodstr(Table1, itemName)); sysTableLookup.parmQuery(query); sysTableLookup.performFormLookup(); } } А когда вводится значение со звёздочкой (например: 01.01.*), то значения получаются не сгруппированы (куча одинаковых номенклатур в лукапе). Как это побороть? Чтобы и так, и так всё было сгруппировано! |
|
13.08.2020, 16:47 | #2 |
Участник
|
Цитата:
Сортировка в Lookup Обернуть сгруппированный запрос в View |
|
13.08.2020, 18:09 | #3 |
Участник
|
Цитата:
Сообщение от S.Kuskov
Это так коряво в системе реализован механизм поиска в раскрытом списке на нужного значения
Сортировка в Lookup Обернуть сгруппированный запрос в View Ядро криво работает с лукапами с группировкой. Обойти можно не только вьюхой. Если мне не изменяет память, то поведения отличалось если лукап написать / вызывать не из метода на поле датасорса, а из метода на контроле то все ок. Группировка не сбрасывалась. |
|
13.08.2020, 19:03 | #4 |
Участник
|
ядро криво работает с лукапами, в которых recId == 0.
ну, не предполагали разработчики что кто-то будет делать лукапы по незаписанным данным. на всякий случай: разработчики еще предполагали, что в пределах одной таблицы ненулевые recId уникальны. |
|
13.08.2020, 19:09 | #5 |
Участник
|
не группируйте.
если я правильно понимаю, вы хотите получить лукап по номенклатуре для которой есть записи в Table1 ну дык и сформулируйте запрос на человеческом: = запрос по таблице номенклатур = exists join Table1 |
|
|
За это сообщение автора поблагодарили: SuperStar88 (1). |
14.08.2020, 12:34 | #6 |
Участник
|
вот так не будет задваивать :
X++: sysTableLookup = SysTableLookup::newParameters(tablenum(Table1), formStringControl, false);
__________________
-Ты в гномиков веришь? -Нет. -А они в тебя верят, смотри, не подведи их. |
|
17.08.2020, 11:26 | #7 |
Участник
|
Цитата:
Так и сделал. Всё работает, благодарю |
|