l' es. e' fuorviante,
se le option hanno valore progressivo partendo da zero
setta il selectedIndex = al valore passato
c'e' poco da sbagliare

se i valori delle option non sono ordinati o non sono interi
selectedIndex si aspetta cmq un intero, l' indice dell' option a partire da zero,
se non ne conosci la posizione ma solo il valore non puoi far altro che ciclare fino a quando non trovi corrispondenza tra il valore dell' option e l' argomento passato alla funzione
codice:
var obj=parent.destra.document.getElementById('categoria1')
for(var k=0;k<obj.options.length;k++){
  if(obj.options[k].value==cod_struttura){
    obj.selectedIndex=k;
    break;
  }
}
se vuoi ricercare corrispondenza con il testo contenuto nell' option sostituisci a .value .text

nota che le option si chiudono con </option>
ciao