Hola:
Los puntos separan atributos de los objetos, igual que las cadenas entrecorchetadas...
parent.opener.document. + field + .value = dato;
... podría ser:
parent.opener.document[field].value = dato;
... aunque no estoy seguro de que cuele de esa manera, pero si separas las cadenas por el punto, funcionaría algo así:
separo = field.split(".");
parent.opener.document[separo[0]][separo[1]].value = dato;
Saludos