Universal Web Platform · Sincronizzazione incrementale

Sincronizzazione incrementale: conferme di ricezione e cancellazioni

La sincronizzazione incrementale serve a scaricare solo i record nuovi o modificati dall'ultima volta, senza tenere traccia di date o numeri dal tuo lato. Si basa su tre elementi: l'identificativo della postazione, le conferme di ricezione e la chiave dei record.

Come funziona

  1. Scegli un GuidPC stabile per il tuo programma e usalo in tutte le chiamate.
  2. Leggi con QUERY lasciando IgnoreImportRecord a false: il server esclude i record che questa postazione ha già confermato.
  3. Salva i record nel tuo sistema.
  4. Per ogni record salvato invia una conferma: INSERTORMODIFY del tipo RECEVEIDCLASS con Type (il tipo letto), Guid (il tuo GuidPC) e Key (la chiave del record).
  5. Ripeti la lettura, sempre dal primo record: quelli confermati non tornano più, quindi ogni giro restituisce i successivi. Ti fermi quando la lettura torna vuota.

Quando un record viene modificato sul sito la sua conferma non vale più e il record torna nella lettura successiva.

La chiave da confermare

La Key della conferma è formata dai valori dei campi chiave del record, separati dal carattere |, nell'ordine indicato per ogni tipo nella sua pagina, alla voce «Chiave per le conferme di ricezione». Attenzione: per alcuni tipi l'ordine non è quello dei campi nella classe. Esempi:

TipoChiave
MarchiCodice
Sottocategorie merceologicheCodiceCategoria|Codice
Prezzi degli articoliArticolo|Progressivo
Immagini degli articoliArticolo|StringaVariante|Indice
GiacenzeArticolo|StringaVarianti|Deposito
Clienti e fornitoriTipo|Codice
DocumentiTipo|Esercizio|Registro|Serie|Numero|TipoControparte|Controparte
Eventi di merchandisingAnno|Numero

Per un documento la chiave è quindi OC|2026|01|A|125|C|000123 (tipo, esercizio, registro, serie, numero, tipo controparte, controparte); i numeri si scrivono senza decimali e senza zeri aggiunti.

JSON · conferme di ricezione
{
  "DataOperation": 0,
  "TypeObject": 42,
  "GuidPC": "gestionale-01",
  "ObjectListReceveidClass": [
    { "Type": 19, "Guid": "gestionale-01", "Key": "A0001" },
    { "Type": 19, "Guid": "gestionale-01", "Key": "A0002" },
    { "Type": 20, "Guid": "gestionale-01", "Key": "A0001|1" }
  ]
}

Le conferme sono idempotenti: inviare due volte la stessa non crea doppioni. Puoi confermare record di tipi diversi nella stessa lista. Con ImportMulti le conferme viaggiano insieme alla lettura successiva, in una sola chiamata.

Ricominciare da capo

Per riscaricare tutto (un nuovo database, un errore da recuperare) azzera le conferme della tua postazione: DataOperation 4 le cancella tutte, 5 solo quelle del tipo indicato in TypeObject. Le conferme delle altre postazioni non vengono toccate.

JSON · riscaricare tutti i documenti
{ "DataOperation": 5, "TypeObject": 23, "GuidPC": "gestionale-01" }

Le cancellazioni

Un record cancellato sul sito non può tornare in una lettura. Per questo c'è il tipo DELETINGCLASS:

  • dal sito al tuo programma: QUERY di DELETINGCLASS restituisce le cancellazioni con Type e Key; tu cancelli i record corrispondenti e confermi ogni cancellazione con una conferma di tipo DELETINGCLASS e chiave Type|Guid|Key (il tipo come numero);
  • dal tuo programma al sito: INSERTORMODIFY di DELETINGCLASS con Type e Key cancella sul sito il record con quella chiave. Qui la chiave segue l'ordine dei campi chiave nella classe, indicato in ogni pagina alla voce «Chiave per cancellare con DeletingClass».

Ricostruzione dopo l'esportazione

Dopo una pubblicazione completa del catalogo chiama l'indirizzo del web service con operationbie=recreateafterexport (la chiave è sempre necessaria, il corpo non serve). Il server ricostruisce i dati che dipendono dall'insieme del catalogo: la tabella delle varianti, gli avvisi di sottoscorta e i progressivi delle causali. La risposta è un WebServiceResponse con Status ok e il riepilogo in ResponseString.

Indirizzo
POST https://<tuo-dominio>/webservice.aspx?Key=<chiave>&serialize=json&operationbie=recreateafterexport