20.02.2024, 07:32 | #9 |
Участник
|
Если говорить про техническую реализацию, то примеры есть в стандарте - класс EREnumLookupMultiSelectGrid, метод new, передача через QueryRun.
X++: container selectedFields = [tableNum(SysOperationMultiSelectTmp), fieldName2id(tableNum(SysOperationMultiSelectTmp), fieldStr(SysOperationMultiSelectTmp, Values))]; selectTableTmp = this.getMultiSelectTableForEnum(_enumId, _valuesToSkip); QueryRun localQueryRun = SysOperationHelper::getMultiSelectQueryRun(selectTableTmp); this.parmCallingControl(_targetStringControl); this.parmQuery(localQueryRun.query()); this.parmQueryRun(localQueryRun); Также можно в качестве времянки использовать TempDB, заполнять ее прямым запросом через Query::insert_recordset, будет работать быстро, но выглядит это все как какой то Overengineering, ради лукапа. Я бегло посмотрел по перекрестным ссылкам в стандарте, есть пример (да там нет группировки, может быть можно сделать примерно так же - скрытый контрол с recId - StatisticsOnInvoiceUIBuilder?). X++: private void initPostingProfilesDialogField() { DialogField postingProfilesField = this.bindInfo().getDialogField(this.dataContractObject(), methodStr(StatisticsOnInvoiceDataContract, parmPostingProfiles)); postingProfilesField.registerOverrideMethod( methodStr(FormDateControl, lookup), methodStr(StatisticsOnInvoiceUIBuilder, postingProfilesLookup), this); postingProfilesField.lookupButton(FormLookupButton::Always); SysOperationDialog reportDialogBox = this.dialog(); postingProfilesRecIdsControl = reportDialogBox.formRun().design().addControl(FormControlType::String, PostingProfilesRecIdsControlName); postingProfilesRecIdsControl.visible(false); } private void postingProfilesLookup(FormStringControl _postingProfilesControl) { Query query = new Query(); QueryBuildDataSource qbds = query.addDataSource(tableNum(VendLedger)); QueryBuildFieldList qbfl = qbds.fields(); qbfl.dynamic(false); qbfl.clearFieldList(); qbfl.addField(fieldNum(VendLedger, PostingProfile)); qbfl.addField(fieldNum(VendLedger, Name)); container selectFields = [ tableNum(VendLedger), fieldNum(VendLedger, PostingProfile) ]; SysLookupMultiSelectGrid::lookup( query, _postingProfilesControl, postingProfilesRecIdsControl, _postingProfilesControl, selectFields); }
__________________
Sergey Nefedov Последний раз редактировалось SRF; 20.02.2024 в 07:39. |
|
|
За это сообщение автора поблагодарили: Lankey (1). |
Теги |
d365 |
|
|