' Il seguente script è un esempio di task estrae i files contenuti in allegati ai rapporti di accettazione e li archivia in una categoria documentale avente codice "CERFOR" dim q as new qwtable() q.database=DB q.sql="select l1.*,r.*,c.RAGSOC from LINKDOC l1 join RIDOCACC r on r.[_IDDOC]=l1.IDDOC1 and r.[_CODDOC]=l1.CODDOC1 join CLIFOR C on c.CODICE=r.CODFOR where IDDOC1='A' and IDDOC2='**' and NOMEFILE like '%.msg' and not exists(select * from DOCUMENT d where d.TIPO='CERFOR' and d.CUSTOM10 like l1.NOMEFILE) order by r.NUMDOC,r.RIGA" q.requestlive=false q.active=true dim i as integer dim msg As MsgReader.Outlook.Storage.Message dim fn as string dim numero as string dim campi as assocarray dim titolo as string dim ok as boolean dim emsg as string="" dim errmsg as string dim DOCUMENT as new qwtable() DOCUMENT.database=DB DOCUMENT.sql="select * from DOCUMENT" DOCUMENT.requestlive=false DOCUMENT.allowallrecords=false while not q.rowset.endofset() msg = new MsgReader.Outlook.Storage.Message(ctype(q.rowset.fields("NOMEFILE").value,string)) for i=0 to msg.Attachments.count-1 if not dbdollar("IMAGE",upper(msg.Attachments(i).filename)) and not left(msg.Attachments(i).filename,1)="~" and lower(System.io.Path.Getextension(msg.Attachments(i).filename))<>".msg" ok=true ' Recupera la riga del documento se esiste già DOCUMENT.active=true DOCUMENT.rowset.setrange({"CERFOR"}) DOCUMENT.rowset.first() DOCUMENT.rowset.beginlocate() DOCUMENT.rowset.fields("CUSTOM8").value=msg.Attachments(i).filename DOCUMENT.rowset.fields("CUSTOM10").value=q.rowset.fields("NOMEFILE").value if DOCUMENT.rowset.applylocate() numero=DOCUMENT.rowset.fields("NUMERO").value else if DOCUMENT.rowset.last() numero=transform(val(DOCUMENT.rowset.fields("NUMERO").value)+1,"@L 999999") else numero="000001" end if end if campi=new assocarray() campi("CUSTOM11")=q.rowset.fields("CODART").value campi("CUSTOM2")=q.rowset.fields("DESCRIZION").value campi("CUSTOM3")=q.rowset.fields("CODFOR").value campi("CUSTOM4")=q.rowset.fields("RAGSOC").value campi("CUSTOM5")=q.rowset.fields("P_CODICECONTATOREPROV").value campi("CUSTOM6")=q.rowset.fields("P_CODICEPROV").value campi("CUSTOM8")=msg.Attachments(i).filename campi("CUSTOM10")=q.rowset.fields("NOMEFILE").value campi("DATE1")=today() titolo="Ordine "+q.rowset.fields("P_CODICECONTATOREPROV").value+"/"+q.rowset.fields("P_CODICEPROV").value+" "+q.rowset.fields("CODART").value+" "+q.rowset.fields("DESCRIZION").value+" - "+q.rowset.fields("CODFOR").value+" "+q.rowset.fields("RAGSOC").value ' Salva l'allegato su un file temporaneo fn=funique(Q95_PATH_TEMP+"\TEMP????"+System.io.path.getExtension(msg.Attachments(i).filename)) try System.IO.File.WriteAllBytes(fn,msg.Attachments(i).data) catch e as exception emsg+="Si è verificato un errore durante l'archiviazione del certificato per "+titolo+chr(13)+"File: "+q.rowset.fields("NOMEFILE").value+" Allegato: "+msg.Attachments(i).filename+" Errore: "+e.message+chr(13)+chr(13) ok=false end try if ok errmsg=DW_Archivia(DB.qwsession,"CERFOR","CF",numero,0,titolo,Campi,true,fn) if errmsg<>"" emsg+="Si è verificato un errore durante l'archiviazione del certificato per "+titolo+chr(13)+"File: "+q.rowset.fields("NOMEFILE").value+" Allegato: "+msg.Attachments(i).filename+" Errore: "+errmsg+chr(13)+chr(13) ok=false end if if ok Link_Doc(DB,q.rowset.fields("IDDOC1").value,q.rowset.fields("CODDOC1").value,"DW",PackCode("DW","CERFOR","CF",numero),1) end if end if DOCUMENT.active=false End If next q.rowset.next() end while q.active=false if emsg<>"" throw new exception(emsg) End If