Я написал что-то типа
X++:
ReportIntegerControl intCtrl;
switch(this.controlNo(i).controlType())
{
case ReportFieldType::String:
eval
break;
case ReportFieldType::Integer:
intCtrl = this.controlNo(i);
value = SalesLine( ).(intCtrl.dataField());
break;
}
Ну а для тех контролов, которые имеют источником данных - метод, соотв, нужно проверять dataMathod, и если он непустой - вместо того, чтобы лезть в таблицу, вызвать этот метод.
P.S. Кстати, у меня тут есть маленький кусочек кода, который позволяет просто путём тупой его вставки в executesection любого отчета, получить аккуратную разграфленную таблицу, даже если в секции есть контролы переменной высоты. Никак руки не доходят причесать и выложить, а то метод, описанный на форуме мало того, что требует редактирования под каждый отчет, так еще и не до конца решает проблему.