11.08.2017, 09:12 | #1 |
Участник
|
Программное создание comboBox в Dialog
Надо на форму Dialog добавить поле RContractCode из таблицы RContractTable.
Должен получиться такой список Делаю так: X++: protected Object dialog(DialogRunbase _dialog, boolean _forceOnClient) {; dialog = super(_dialog, _forceOnClient); dialog.caption("Задайте параметры"); rContractCodeField = dialog.addFieldValue(TypeId(RContractCode), rContractCode); return dialog; } public void dialogPostRun(DialogRunbase _dialog) { super(_dialog); _dialog.formRun().controlMethodOverloadObject(this); _dialog.formRun().controlMethodOverload(true); } public void rContractCodeField_lookup() { FormStringControl formStringControl; SysTableLookup sysTableLookup; Query query = new Query(); QueryBuildDataSource qbds; ; formStringControl = dialog.formRun().controlCallingMethod(); sysTableLookup = SysTableLookup::newParameters(tablenum(RContractTable),formStringControl); sysTableLookup.addLookupfield(fieldnum(RContractTable, RContractCode)); qbds = query.addDataSource(tablenum(RContractTable)); // Получаем нужное поле qbds.addSelectionField(fieldnum(RContractTable, RContractCode)); // Используем группировку, чтобы убрать дубли qbds.addGroupByField(fieldnum(RContractTable, RContractCode)); // Отображаем только для Поставщиков qbds.addRange(fieldnum(RContractTable, RContractPartnerType)).value(enum2str(RContractPartnerType::Vend)); //info(query.dataSourceNo(1).toString()); sysTableLookup.parmQuery(query); sysTableLookup.performFormLookup(); } То есть, не получается отфильтровать нужные данные. И оно почему-то не заходит в lookup-метод AX2009 (5.0.1500) |
|
11.08.2017, 09:50 | #2 |
Moderator
|
Попробуйте так:
X++: public void dialogPostRun(DialogRunbase _dialog) { super(_dialog); _dialog.dialogForm().formRun().controlMethodOverloadObject(this); _dialog.dialogForm().formRun().controlMethodOverload(true); }
__________________
Андрей. |
|
|
За это сообщение автора поблагодарили: SuperStar88 (1). |
11.08.2017, 09:52 | #3 |
Участник
|
Пропиши в методе dialog:
rContractCodeField .registerOverrideMethod(methodStr(formStringControl, lookup), methodStr(Название класса, rContractCodeField_lookup), this); X++: protected Object dialog(DialogRunbase _dialog, boolean _forceOnClient) {; dialog = super(_dialog, _forceOnClient); dialog.caption("Задайте параметры"); rContractCodeField = dialog.addFieldValue(TypeId(RContractCode), rContractCode); rContractCodeField .registerOverrideMethod(methodStr(formStringControl, lookup), methodStr(name_class_from, rContractCodeField_lookup), this); return dialog; } Последний раз редактировалось Dumfag; 11.08.2017 в 09:55. |
|
11.08.2017, 10:06 | #4 |
Участник
|
Вариант 1:
X++: dialog.caption("Задайте параметры"); dialog.customFieldName_RU('rContractCodeField'); rContractCodeField = dialog.addFieldValue(TypeId(RContractCode), rContractCode); X++: public void rContractCodeField_lookup() X++: public void Fld1_1_lookup() Последний раз редактировалось dmn; 11.08.2017 в 10:15. |
|
|
За это сообщение автора поблагодарили: Dron AKA andy (1), SuperStar88 (1). |
11.08.2017, 11:31 | #5 |
Участник
|
Цитата:
Сообщение от dmn
Вариант 1:
X++: dialog.caption("Задайте параметры"); dialog.customFieldName_RU('rContractCodeField'); rContractCodeField = dialog.addFieldValue(TypeId(RContractCode), rContractCode); X++: public void rContractCodeField_lookup() X++: public void Fld1_1_lookup() Цитата:
Цитата:
А можно в Lookup использовать SQL вместо QueryBuildDataSource и как? |
|