Стал перекрывать лукап программно, либо я что-то не так делаю, либо в аксапте не предусмотрено перекрытие лукапа для контролов типа Guid. Открыл класс SysTableLookup, метод performFormLookup():
X++:
void performFormLookup()
{
FormStringControl callingStringControl;
FormIntControl callingIntControl;
FormInt64Control callingInt64Control;
FormDateControl callingDateControl;
FormGuidControl callingGuidControl; // добавил новый вид контрола, его почему-то не было
if (!callingControl)
throw(error(Error::wrongUseOfFunction(funcname())));
switch (callingControl.handle())
{
case classnum(FormStringControl):
callingStringControl = callingControl;
callingStringControl.performFormLookup(this.formRun());
break;
case classnum(FormIntControl):
callingIntControl = callingControl;
callingIntControl.performFormLookup(this.formRun());
break;
case classnum(FormInt64Control):
callingInt64Control = callingControl;
callingInt64Control.performFormLookup(this.formRun());
break;
case classnum(FormDateControl):
callingDateControl = callingControl;
callingDateControl.performFormLookup(this.formRun());
break;
// без этого изменения лукап не работает (перекрытый) -->
case classnum(FormGuidControl):
callingGuidControl = callingControl;
callingGuidControl.performFormLookup(this.formRun());
break;
// без этого изменения лукап не работает (перекрытый) <--
}
}
Теперь не могу сообразить, как же работает стандартный лукап по EDT с типом Guid, и почему под это не приспособлен такой вариант лукапа?