|
![]() |
#1 |
Участник
|
Надо работать с классом SysTableLookup и создавать запрос динамически.
Вот вам пример. В параметр _formControl передаётся элемент ввода, чтобы связать с ним форму выпадающего списка, т.е. лукап. добавляется 2 фильтра по полям JournalType и BlockUserGroupId. А поля JournalName и Name будут показаны в лукапе. X++: private void journalName_Lookup(FormControl _formControl) { SysTableLookup sysTableLookup = SysTableLookup::newParameters(tablenum(LedgerJournalName),_formControl); Query query = new Query(); QueryBuildDataSource queryBuildDataSource = query.addDataSource(tablenum(LedgerJournalName)); QueryBuildRange queryBuildRangeJournalType = queryBuildDataSource.addRange(fieldnum(LedgerJournalName, JournalType)); QueryBuildRange queryBuildRangeUserGroupId = queryBuildDataSource.addRange(fieldnum(LedgerJournalName, BlockUserGroupId)); sysTableLookup.addLookupfield(fieldnum(LedgerJournalName, JournalName)); sysTableLookup.addLookupfield(fieldnum(LedgerJournalName, Name)); queryBuildRangeJournalType.value(queryValue(LedgerJournalType::Daily)); queryBuildRangeUserGroupId.value(UserGroupList::groupsForUser()); sysTableLookup.parmQuery(query); sysTableLookup.performFormLookup(); }
__________________
// no comments |
|
![]() |
#2 |
Участник
|
Второй день мучаюсь с этим классом и другими из аналогичных примеров, но пока не заработал запрос. Ну да ладно, буду пока что делать другое задание.
Очевидный вопрос: почему нельзя в while прогнать запрос к таблице, как я выше в примере показывал, и вывести необходимые строки(если можно, то скажите как, я не нашел способа), вместо того чтобы использовать вереницу классов? |
|
![]() |
#3 |
Участник
|
Алгоритм работы примера с SysTableLookup включает в себя построение запроса к данным используя Query Framework, который впоследствии передаётся в SysTableLookup, ответственный за работу с выпадающим списком.
Если есть желание или необходимость использовать while select, то всё равно придётся использовать SysTableLookup но ко временной таблице Последний раз редактировалось MazZzDaI; 11.09.2017 в 14:48. |
|
![]() |
#4 |
Участник
|
Вернувшись к вопросу, с помощью коллег, таки нашелся рабочий вариант.
Переопределить lookup удалось только путем написания метода с именем примерно таким - Fld1_1_lookup(). В этом методе как раз и использовались классы из примера dech. Только вместо _formControl, приходящего снаружи, я использовал dialog.formRun().controlCallingMethod(). Почему то так и не получилось переопределить лукап путем вызова метода registerOverrideMethod. Прописал всё как надо, ошибок не было, но метод просто игнорировался(смотрел в отладчике, заходов в него просто не было), неизвестно почему. Если кто знает почему один лукап работает, а другой с аналогичным кодом - нет - пишите, мне очень интересно ![]() |
|
|
|