Das sieht schon ganz gut aus. Ich würde diese Zeile...
$kennung = 'ED03_'.sprintf('%02d', $item);
... noch wie folgt ändern:
$kennung = id('ED03', $item);
aber daran sollte es nicht liegen, wenn es nicht funktioniert. Vielmehr vermute ich, dass Ihr Filter nicht greift - und zwar deshalb, weil sie ihm gesagt haben, er solle nichts tun:
if (value('ED06') == 1);
Der Befehl endet mit dem Strichpunkt. Wenn der Filter greift, passiert also ... nichts. Lassen Sie den Strichpunkt weg und setzen Sie alles, was der Filter filtern soll, in geschweifte Klammern.
if (value('ED06') == 1) {
$items = getItems('ED03', 'all');
foreach ($items as $item) {
$kennung = id('ED03', $item);
preset($kennung, 1);
}
}