Strumenti Utente

Strumenti Sito


it:ondemandreplication

eeRis Sprinkler v.1.1.00
per Microsoft Dynamics NAV 2016 / NAV 2017 / NAV 2018 / Dynamics 365 Business Central on-prem

Replica "On Demand" via codice

Per la versione Sprinkler eeLite è 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. Non sono necessari setup specifici per il Source Peer, perché questa funzione replicherà incondizionatamente tutti i campi dei record indicati.

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 := 311216D;
Peer.GET('{60632e40-a50d-11e7-9598-0800200c9a66}');    //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;
it/ondemandreplication.txt · Ultima modifica: 2018/05/14 14:25 (modifica esterna)