eeRis Sprinkler v.19.4
per Microsoft Dynamics 365 Business Central v.19.x
<HTML><H3>Replica “On Demand” via codice</H3></HTML>
Per Sprinkler è stata resa disponibile una funzionalità di replica “On Demand” di un record, richiamabile direttamente da codice.
Questa funzionalità permetterà di gestire per esempio i seguenti scenari:
- L'esportazione dati automatica non è attiva, ma si vogliono replicare semplicemente uno o più record in un database di destinazione.
- Prima di attivare l'esportazione automatica, si vogliono alimentare tutte le tabelle con i dati attuali (questa operazione era comunque già possibile tramite le Funzionalità di Replica Avanzata manuali)
- Si vuole costruire uno scenario di test con una serie di dati predeterminata; l'operazione deve poter essere ripetuta.
- Si vogliono archiviare su un database storico i dati di una o più tabelle, per esempio i documenti di vendita e di acquisto con le tabelle correlate, aventi [Data di registrazione] inferiore ad una data stabilita.
La funzione public della codeunit [Spk Management] da utilizzare in questi scenari è:
Replicate_Record(parmRecord : Variant, PeerID : GUID)
parmRecord: può essere una variabile di tipo Record oppure RecordRef.
Esempio - È necessario replicare in un database remoto di storicizzazione i dati della tabella [Sales Invoice Header], le relative [Sales Invoice Line] e i record di [G/L Entry] in modo da poter navigare correttamente i documenti. Devono essere copiate tutte le fatture fino alla data del 31/12/2016.
Prima di iniziare, nel Target Peer è necessario creare i setup per l'importazione delle tabelle [Sales Invoice Header], [Sales Invoice Line] e [G/L Entry] (questo setup sarà attivo in 1 minuto), nonché attribuire i permessi Insert e Modify sulle tabelle di destinazione per l'utente che nel Peer remoto è indicato come Data Distribution Service User. Non sono necessari setup specifici per il Source Peer, perché questa funzione replicherà incondizionatamente tutti i campi dei record indicati.
Si noti che l'utente che effettuerà l'operazione deve avere i permessi indicati dal Permission Set EERIS SPK USER, oltre ai permessi di lettura sulla tabella interessata.
Soluzione - Create le seguenti variabili:
Name | DataType | SubType |
---|---|---|
SpkMgt | Codeunit | Spk Management |
Peer | Record | Data Distrib. Peer |
SalesInvHdr | Record | Sales Invoice Header |
SalesInvLine | Record | Sales Invoice Line |
GLEntry | Record | G/L Entry |
Il codice per effettuare l'operazione richiesta è il seguente:
LastDate := 311220D; Peer.GET('{60632e40-a50d-11e7-9598-0800200c9a66}'); //esempio di Remote Peer ID SalesInvHdr.SETFILTER("Posting Date",'<=%1',LastDate); IF SalesInvHdr.FINDSET THEN REPEAT SpkMgt.Replicate_Record(SalesInvHdr,Peer."Server ID"); SalesInvLine.SETRANGE("Document No.",SalesInvHdr."No."); IF SalesInvLine.FINDSET THEN REPEAT SpkMgt.Replicate_Record(SalesInvLine,Peer."Server ID"); UNTIL SalesInvLine.NEXT = 0; GLEntry.SETRANGE("Document Type",GLEntry."Document Type"::Invoice); GLEntry.SETRANGE("Document No.",SalesInvHdr."No."); IF GLEntry.FINDSET THEN REPEAT SpkMgt.Replicate_Record(GLEntry,Peer."Server ID"); UNTIL GLEntry.NEXT = 0; UNTIL SalesInvHdr.NEXT = 0;