Risposta breve: avere uno sguardo al modo in cui il lavoro CSV di importazione e di esportazione guidata - esportare automaticamente un record crea un identificatore esterno in modo da poter reimportare lo stesso CSV e il record sarà aggiornato, piuttosto che ricreato.
Risposta lunga:
OpenERP memorizza gli ID esterni nella tabella ir.model.data
, cui è possibile accedere nell'interfaccia utente tramite il menu Impostazioni 1. Questa semplice tabella mappa un "Identificatore esterno" nel modulo module_name.record_identifier
in una coppia (model,res_id)
che punta alla tabella e alla riga effettive.
Questi ID esterni vengono utilizzati per trovare la riga locale del database che corrisponde a un record creato da una fonte esterna: un modulo (da cui lo spazio dei nomi basato su module
) o un file CSV importato, in genere.
Ad esempio l'identificatore esterno base.EUR
si associa ai record del database che contiene la valuta EUR nel database ed è di proprietà del modulo base
.
A partire dalla versione 6.1, OpenERP crea automaticamente nuovi identificatori esterni per tutti i record che sono OpenERP esportati utilizzando la barra laterale Export guidata: sono esportati in una colonna CSV denominato id
.
E se una tale colonna id
è presente in un file CSV che è importato tramite la procedura guidataImport, OpenERP sarà anche creare un identificatore esterno per ricordarlo. E quando l'identificatore esterno esiste già, il record viene aggiornato anziché creato.
In teoria, tutto ciò che dovete fare è produrre un file CSV corretta con una colonna in più id
2 dal database master (si potrebbe anche usare l'attuale DB ID), e importarlo in OpenERP. Dovresti quindi essere in grado di reimportare le versioni aggiornate di questo file CSV ogni volta che vuoi.
Riferimenti:
- Il importazione e esportazione maghi fondamentalmente chiamare i metodi API export_data e import_data, in modo da poter script di questo tramite XML-RPC, se necessario.
- Il modello
ir.model.data
memorizza gli identificatori esterni (storicamente chiamati ID XML perché corrisponde al campo id
di record XML nei file di dati del modulo).
1 In OpenERP 6.1 si trova sotto Impostazioni> Configurazione> Sequenze & identificatori> identificatori esterni, e in OpenERP versione 7 sotto Impostazioni> tecnici> Sequenze & identificatori> identificatori esterni .
2 può essere qualsiasi stringa senza carattere punto ".
" in esso: verrà memorizzato in uno speciale spazio dei nomi del modulo __export__
)
il contenuto della colonna 'id' per riga può essere anche un id di riga esterna? o che id è impostato da OpenERP? – NaGeL182