Собственно,
ice уже написал, что прерываение надо перенести из init() в метод run(). Точнее, в методе run() достаточно просто блокировать выполнение super(), чтобы отчет не выполнялся.
X++:
public void run()
{
if ( )
{
super();
}
}
Другая возможная точка блокировки выполнения отчета - это метод fetch(), если в нем вернуть false.
Метод init() никогда и нигде не может блокировать выполнение не важно чего (класса, формы, отчета). Его назначение - это инициализация некоторых значений. Но значения по умолчанию и так есть. Поэтому удалось что-то присвоить или нет, на факт выполнения никак не влияют. Какое-то значение, но будет.