А попробуйте рекуррентный перебор
X++:
static void Job60(Args _args)
{
Args args = new Args(formStr(EmplTable));
FormRun formRun = ClassFactory.formRunClass(args);
FormControl formControl;
FormBuildControl buildCtrl;
int i, cnt;
boolean hasClassMethod(FormBuildControl _Ctrl, str _methodName)
{
ClassId classId = classIdGet(_Ctrl);
sysDictClass sysDictClass= new sysDictClass(classId);
;
return sysDictClass.hasObjectMethod(_methodName);
}
void nextControl(FormBuildControl Ctrl)
{
int _i;
FormBuildControl _buildCtrl;
FormControl _formControl;
;
if(hasClassMethod(Ctrl, 'controlCount'))
{
for(_i=1; _i<=Ctrl.controlCount(); _i++)
{
_buildCtrl = Ctrl.controlNum(_i);
_formControl = formRun.control(_buildCtrl.id());
if(hasClassMethod(_formControl, 'controlCount'))
{
info(_formControl.name());
nextControl(_formControl);
}
}
}
}
;
formRun.run();
cnt = formRun.form().design().controlCount();
for(i=1; i<=cnt; i++)
{
buildCtrl = formRun.form().design().controlNum(i);
formControl = formRun.control(buildCtrl.id());
if(hasClassMethod(formControl, 'controlCount'))
{
// if(hasClassMethod(formControl, 'controlCount'))
// {
info(formControl.name());
nextControl(formControl);
// }
}
}
formRun.wait();
}