Товарищи, начинаю активно работать в 2012 и встречаюсь с некоторыми проблемами.
В данный момент проблема следующая:
есть класс (наследник RunBase), в классе диалог, в диалоге следующее:
X++:
protected Object dialog()
{
Dialog dialog = super();
Object formCtrl;
;
dlgAgreementClassification = dialog.addFieldValue(extendedTypeStr(agreementClassificationRecId), agreementClassificationRecId, "Выберите новую классификацию");
//formCtrl = dlgAgreementClassification.control();
//formCtrl.replacementFieldGroup(identifierStr(AutoIdentification));
//formCtrl.registerOverrideMethod(identifierStr(lookupReference), tableMethodStr(AgreementHeader, lookupReferenceAgreementClassification), this);
dlgAgreementClassification.registerOverrideMethod(identifierStr(lookupReference), tableMethodStr(AgreementHeader, lookupReferenceAgreementClassification), this);
return dialog;
}
метод AgreementHeader::lookupReferenceAgreementClassification, соответственно следующий
X++:
public Common lookupReferenceAgreementClassification(FormReferenceControl _formReferenceControl)
{
AgreementHeaderExt_RU agreementHeaderExt;
Query query = new Query();
QueryBuildDataSource qbds;
QueryBuildDataSource QbdsJoin;
SysReferenceTableLookup sysTableLookup = SysReferenceTableLookup::newParameters(tableNum(AgreementClassification), _formReferenceControl)
;
qbds = query.addDataSource(tableNum(AgreementClassification));
switch (agreementHeaderExt.AgreementType)
{
case AgreementType::Contract:
qbds.addRange(fieldNum(AgreementClassification, MainAgreement)).value(queryValue(NoYes::Yes));
break;
case AgreementType::AdditionalAgreement:
qbds.addRange(fieldNum(AgreementClassification, MainAgreement)).value(queryValue(NoYes::Yes));
break;
}
qbds.addRange(fieldnum(AgreementClassification, AgreementRelationType)).value(queryValue(this.InstanceRelationType));
sysTableLookup.parmQuery(query);
sysTableLookup.addLookupfield(fieldNum(AgreementClassification, Name));
sysTableLookup.addLookupfield(fieldNum(AgreementClassification, Description_PSN));
return sysTableLookup.performFormLookup();
}
в другом месте, на статичной форме, этот lookupreference работает нормально
запустив же класс и в его диалоге попробовав сделать лукап - получаю ошибку
Код:
Ошибка времени выполнения: FormReferenceGroupControl (Объект), метод lookupReference вызван с недопустимыми параметрами.
Трассировка стека
(C)\Classes\FormReferenceGroupControl\lookupReference
(C)\Classes\FormReferenceGroupControl\Lookup
(C)\Classes\FormStringControl\Lookup
пошерстив АОТ на предмет классов с методом диалог и registerOverrideMethod нашел ряд стандартных примеров, и кардинальных отличий от своего кода не увидел
что я делаю не так?