Надо на форму 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)