25/10/2007

LotusScript, Microsoft Word, Bookmarks e tecnologia COM: un poker esplosivo

Volevo rendervi partecipi di una mia recente esperienza su un cliente.
Scenario: da un gestore offerte sviluppato in Notes client bisognava creare un documento Word partendo da un template contenente dei bookmark, sovrascriverli con i dati del documento Notes, salvare il word, allegarlo e dare la possibilità di riaggiornare i bookmark anche in secondo momento.
Il cliente ha voluto restare legato a questa tecnologia a tutti i costi in quanto gli utenti erano già formati e quindi ho dovuto adattarmi.

Ho pensato:
"Nessun problema, solita gestione via COM, devo solo trovare le funzioni per recuperare un bookmark, sovrascriverlo e ricrearlo per poter riagganciarlo in un secondo momento per rimodificare il documento".

Primo problema: il cliente ha inserito delle intestazioni con all'interno del bookmark. Per poter modificare questi segnalibri bisogna attivare via COM gli header altrimenti va in errore.... ok un pò di prove e problema risolto.

Tutto funzionava correttamente, gli utenti erano contenti, solo che dopo alcuni giorni capita il disastro: alcune offerte non si aprono più dopo il salvataggio, o meglio, si aprono ma sono incomprensibili (caratteri strani ecc.): è il secondo problema (aggravante: era capitato proprio al direttore commerciale).

Le ho provate di tutte, cambiare versione di Word, cambiare utente, ma niente, il problema sembrava casuale e senza logica, fino a quando la mia collabatrice mi dice:
"Ma non è quello che vai a scrivere sul bookmark" (Grazie Veronica!!!!!)
Ebbene sì, quando provavo a sovrascrivere il bookmark con un valore vuoto ( "" ) e riselezionarlo per ricrearlo capitava il misfatto: dopo il salvataggio non si apriva più correttamente il documeno Word.

Questa esperienza mi ha insegnato (rinfrescato) due cose:
1) quando fai parlare due prodotti diversi tramite una terza tecnologia MAI pensare che le cose siano semplici
2) MAI cercare di creare un bookmark su un valore "" (almeno farlo su " " ^_^)

Spero che l'informazione possa esservi utile in qualche modo.

3 comments:

Cristian D'Aloisio said...

Mi è piaciuta la tua riflessione Iarin, molto onesta.

E brava anche a Veronica: a proposito, a quando il tuo primo post? Saresti la prima donna italiana a scrivere un post in un blog di Domino ;-) Mandami un memo se sei interessata.

P.S.
Se non ti sbrighi a scrivere sul blog, la mia amica/collega Simona ti batterà sul tempo ;-)

Giuseppe said...

@Cristian: sul tuo forse, qui c'è un post a quattro mani di Fabrizio Marchesano e Serafina Vela

Stephan H. Wissel said...

The COM API and the Word DOM is a rather fragile animal. And never think of reading/writing the word file format directly (ok there is Apache POI). You might consider to "upgrade" your customer to Symphony. There you can use XML to update the document. I guess I'll post about that soon.
:-) stw