Metódy zálohy/obnovy a zodpovedajúce nastavenie logovania zmien inicializačných dát

V rámci zavedenia inkrementálneho update (od v. 10.02 vrát.) sa zásadným spôsobom zmenil aj spôsob zálohovania a obnovy dát (zálohuje sa všetko a databáza sa obnoví presne tak, ako bola). Od v. 10.02 vrát. platí, že sa pri update nevytvára nová databáza, ale update prebieha inkrementálne nad "živou" databázou klienta (postupným premietnutím potrebných zmien, ktoré do novej verzie uskutočnil výrobca).

Predtým existovalo niekoľko metód zálohovania (na každej tabuľke bolo uvedené, ktorá z týchto metód sa pre ňu má používať), ktoré zaisťovali, čo sa má v jednotlivých tabuľkách zazálohovať a čo obnoviť s ohľadom na záznamy dodávané výrobcom a záznamy zadané či zmenené používateľom. Tieto "backup/update" metódy od v. 10.02. vrát. bezpredmetné.

Pre tabuľky, do ktorých výrobca dodáva nejaké inicializačné dáta, je zabezpečené, aby sa v rámci update používateľovi premietli zmeny v týchto inicializačných dátach uskutočnené výrobcom do novej verzie (pridanie nových záznamov, úpravy existujúcich príp. zmazanie neplatných). Ktoré z týchto zmien (operácií) v jednotlivých tabuľkách výrobca loguje do tzv. UpdateListu, na základe ktorého potom prebieha dátový update u používateľa, závisí od charakteru danej tabuľky. Typicky je to takto:

  • Tabuľky, ktoré obsahujú výhradne výrobcom dodávané záznamy - logujú sa operácie Vloženie, Zmena, Vymazanie inicializačných dát. Tzn. po update budú tieto tabuľky naplnené záznamami presne tak, ako ich aktuálne dodáva výrobca.

    Rôzne pomocné tabuľky typu "Master..." (napr. MasterAccounts (Vzory účtových osnov), MasterPaymentTypes (Tabuľka vzorov spôsobov úhrady a ich kódov), a ďalšie ako tabuľka WageConstantIntervals (Hodnoty globálnych premenných), RetirementReportDefs (Definície ELDP) a pod.

  • Tabuľky, ktoré sú dodávané predvyplnené výrobcom, pričom ide o systémové definície s príznakom System, ktoré používateľ nemôže opravovať či mazať, môže ale ľubovoľne pridávať a meniť vlastné - logujú sa operácie Vloženie, Zmena, Vymazanie.

    Tzn. po update sa prihrajú nové výrobcom dodávané záznamy, pôvodné výrobcom dodávané sa zaktualizujú (zmenia, príp. vymažú).

    WatchDogPoints (Kontrolné body (pre automatické správy)), WageTaxTable (Daňové tabuľky pre výpočet dane zo mzdy), JobGroups (Skupiny prác), (CalcCharts) (CalcExpressions) (CalcFields) (hlavičky výp. schém a v nich obsiahnuté systémové časti definícií) a. i.

  • Tabuľky, ktoré sú dodávané predvyplnené výrobcom, pričom ide o systémové definície (hoci bez príznaku System), ktoré používateľ nemôže opravovať či mazať, môže ale ľubovoľne pridávať a meniť vlastné - logujú sa operácie Vloženie, Zmena inicializačných dát. V prípade bežných zmien (napr. oprava názvu) sa typicky neloguje zmena príznaku Hidden (Skrytý), ak ide o tabuľku s týmto príznakom. Operácia Vymazať sa typicky neloguje, pri zrušení (vymazaní) existujúceho záznamu sa naopak typicky loguje zmena a to zmena príznaku Hidden (Skrytý). Tzn. že staré skôr dodané inicializačné záznamy, ktoré boli teraz zrušené, v dátach používateľa po update zostávajú, ale sú skryté. To je žiaduce, keďže mohli byť použité (mohlo byť na nich odkazované z iných tabuliek).Tzn. po update sa prihrajú nové výrobcom dodávané záznamy, pôvodné výrobcom dodávané sa zaktualizujú (zmenia, príp. skryjú).

    RetirementReportCodes (Kódy PP pre Sociálnu poisťovňu), PDMPriceLists (Tabuľka cenníkov pošty), NACE (Kódy NACE)

  • Tabuľky, ktoré sú dodávané predvyplnené výrobcom, pričom ide o systémové definície, ktoré používateľ môže ľubovoľne opravovať, ale nemôže ich zmazať - logujú sa operácie Vloženie inicializačných dát. Operácie Zmena a Vymazanie sa typicky nelogujú, takže ak si používateľ upravil dodávaný záznam a súčasne ho upravil aj výrobca, zostanú po update používateľské zmeny zachované, zmena uskutočnená výrobcom sa neprejaví.

    Tzn. po update sa prihrajú nové výrobcom dodávané záznamy, existujúce záznamy od výrobcu sa ale neaktualizujú, zostávajú tak, ako ich mal používateľ (inými slovami používateľské zmeny v pôvodných výrobcom dodávaných zostanú zachované). Takže ak je ich aktualizácia potrebná, musí si ich používateľ upraviť ručne.

    PDMPostProviders (Tabuľka poskytovateľov poštových služieb), PDMIssuedContentTypes (Tabuľka obsahov odoslanej pošty)

  • Tabuľky, ktoré sú dodávané predvyplnené výrobcom, pričom nejde o systémové definície, tzn. používateľ ich môže ľubovoľne opravovať či mazať - logujú sa operácie Vloženie inicializačných dát. Operácie Zmena a Vymazanie sa typicky nelogujú, čiže pokiaľ si používateľ upravil dodávaný záznam a súčasne ho upravil i výrobca, zostanú po update používateľskej zmeny zachované, zmena vykonaná výrobcom sa neprejaví.Tzn. po update sa prihrajú nové výrobcom dodávané záznamy, existujúce záznamy od výrobcu sa ale neaktualizujú, zostávajú tak, ako ich mal používateľ (teda používateľské zmeny v pôvodných výrobcom dodávaných zostanú zachované). Takže ak je ich aktualizácia potrebná, musí si ich používateľ upraviť ručne.

    WageNoticesTypes (Typy úloh a školení), HIPaysGovernmentType (Druhy poistencov štátu), InsuranceCompanies (Zdravotné poisťovne) a veľké množstvo iných.

  • Tabuľky, ktoré nie sú dodávané predvyplnené výrobcom, alebo sa nepredpokladajú zmeny v dodávaných dátach - nelogujú sa žiadne operácie inicializačných dát.

    CalcUserExpressions, CalcUserFields (používateľské časti definícií výpočtových schém miezd), WageNotices (Úlohy a školenia) a mnoho iných, ktoré nemá zmysel plniť dodávanými dátami a ďalej tabuľky ako Firms (firmy), Persons (osoby), kde sa dodáva jeden pomocný záznam (Bez príslušnosti k firme/Bez mena), ktorý sa typicky v čase nemení.

  • Pomocné tabuľky plnené iba interne systémom - nelogujú sa žiadne operácie inicializačných dát (nemá to význam, tabuľka sa plní interne systémom, výrobca žiadne init dáta nedodáva)

    Rôzne pomocné tabuľky typu "SYS$.." (napr. SYS$POS (Pomocná tabuľka POSu), SYS$AccRequests (s ID všetkých existujúcich účtovných žiadostí, plnená pomocou triggerov tabuľky GeneralLedger), a. i.).

Vyššie uvedené nie je striktné, tzn., že výrobca sa môže od vyššie uvedeného odchýliť a zalogovať zmenu, ktorá sa typicky pre danú tabuľku neloguje, ak ide o takú zmenu, u ktorej by bolo žiaduce, aby sa do dát používateľa premietla, napr. aj za cenu toho, že by "prebila" zmeny daného záznamu vykonané predtým používateľom.

Do v. 10.01 vrát. platilo, že pri aktualizácii inštalácie (update) i pri obnove dát zo zálohy sa najskôr vytvorila nová databáza a založili sa jej tabuľky, následne sa do nich nahrali defaultne dodávané inicializačné dáta a nakoniec prebehla obnova dát zo zálohy. Každá tabuľka mala preto dané, aká metóda zálohovania a obnovy sa má použiť, aby po takomto vytvorení novej databázy v tabuľke boli aktuálne výrobcom dodávané dáta a zároveň správne dáta, ktoré si zadal či zmenil používateľ).

Napr.u niektorých tabuliek bolo žiaduce, aby v nich po obnove dát boli dáta inicializačné plus dáta zo zálohy (ttBackupAppend), naopak v prípade iných, aby po obnove zo zálohy boli v tabuľkách iba dáta presne tak, ako boli v zálohe (ttBackupReplace) bez ohľadu na aktuálne dáta inicializačné alebo kombinácia obidvoch, tzn. aby po obnove boli v tabuľkách dáta inicializačné, ale pokiaľ sa v zálohe vyskytoval zhodný záznam, patrične sa podľa zálohy zaktualizoval, tzn. používateľ mal po obnove dáta tak, ako si ich nadefinoval plus prípadné nové záznamy z dát inicializačných (ttBackupUpdate).

Jednotlivé metódy zálohy/obnovy dát boli nasledujúce:

  • 1-ttBackupAppend - Záloha: Zálohovalo sa všetko. Obnova: Tabuľka sa pred obnovením nemazala. Tzn. k existujúcej tabuľke a jej obsahu sa urobil append (pridanie) zo zálohy. Príklad: WageNotices (Úlohy a školenia) a veľké množstvo iných.
  • 2-ttBackupReplace - Záloha: Zálohovalo sa všetko. Obnova: Tabuľka sa pred obnovením mazala. Tzn. pred obnovou zo zálohy sa vymazal pôvodný obsah tabuľky a nahral sa celý zo zálohy. Príklad: CalcUserExpressions, CalcUserFields (používateľské časti definícií výpočtových schém miezd) a mnoho iných, ako Firms ( firmy), Persons (osoby) atď.
  • 3-ttBackupNoSystemOnly - Záloha: Zálohovali sa len nesystémové záznamy, tzn. záznamy bez príznaku System. Obnova: K existujúcej tabuľke a jej obsahu sa urobil append (pridanie) zo zálohy (išlo ale len o nesystémové záznamy, pretože len tie boli v danej zálohe). Príklad: JobGroups (Skupiny prác), (CalcCharts) (CalcExpressions) (CalcFields) (hlavičky výp. schém a v nich obsiahnuté systémové časti definícií) a. i. (Typicky ide o tie tabuľky, ktoré sa dodávajú predvyplnené výrobcom, pričom ide o systémové definície, ktoré používateľ nemôže meniť. Môže meniť a pridávať iba nesystémové. Pri obnove dát resp. update sa nahrajú aktuálne výrobcom dodávané systémové (tzn. prihrajú sa nové systémové záznamy, pôvodné výrobcom dodávané a výrobcom zmenené sa zaktualizujú), pričom používateľské zostanú presne tak, ako ich používateľ mal.)
  • 4-ttNoBackup - Záloha: Nezálohovala sa. Obnova: Nezálohovala sa, pretože bola plnená z inicializačných dát údajmi od výrobcu. Príklad: Rôzne pomocné tabuľky typu "SYS$..." (napr. SYS$POS (Pomocná tabuľka POSu), SYS$AccRequests (s ID všetkých existujúcich účtovných žiadostí, plnená pomocou triggerov tabuľky GeneralLedger), a. i.), rôzne tabuľky typu "Master..." (napr. MasterPaymentTypes (Tabuľka vzorov spôsobov úhrady a ich kódov), a ďalšie ako tabuľka WageConstantIntervals (Hodnoty globálnych premenných), RetirementReportDefs (Definície ELDP) a pod.
  • 5-ttBackupUpdate - Záloha: Zálohovalo sa všetko. Obnova: Pri obnove sa aktualizovali zmenené a doplnené záznamy. Tzn. pri obnove sa zisťovalo, či záznam s daným ID už v tabuľke nie je. Pokiaľ bol, uskutočnil sa update všetkých položiek záznamu zo zálohy. Pokiaľ nebol, tak sa záznam pridal ako nový zo zálohy. Príklad: WageNoticeTypes (Typy úloh a školení), HIPaysGovernmentType (Druhy poistencov štátu), InsuranceCompanies (Zdravotné poisťovne), PDMPostProviders (Tabuľka poskytovateľov poštových služieb) a množstvo iných. (Typicky ide o tie tabuľky, ktoré sa dodávajú predvyplnené výrobcom, pričom nejde o žiadne systémové definície, ale dodávané predvyplnené záznamy, aby si používateľ nemusel plniť celú tabuľku (typicky číselník) ručne od nuly).
  • 6-ttBackupReplaceSpecial - Slúžila na zvláštnu zálohu a obnovu pre výpočtové vzorce v mzdách. Obnova pracovala tak, že pri obnove sa zisťovalo, či systémový záznam s daným FieldCode už existuje a ak áno, porovnal sa ich ObjVersion. Ak bol ObjVersion iný, urobil sa o tom zápis do servisnej knižky + zobral sa novší variant záznamu. Ďalej sa zistilo, či k pôvodnému záznamu nebola pripojená nejaká používateľská definícia. Ak áno, vytvoril sa duplikát tejto používateľskej definície a ten sa pripojil k novému záznamu.
  • 7-ttNoReplaceSystemID - Záloha: Zálohovalo sa všetko. Obnova: Záznamy dodané výrobcom sa nahrali z inicializačných dát. Pri obnove sa zistilo, či bol takýto záznam používateľsky skrytý. Pokiaľ áno, skryl sa aj v obnovených dátach. Z obnovených dát sa ale neaktualizoval. Používateľské záznamy sa pridali (append) zo zálohy. Tzn. používateľské zmeny výrobcom skôr dodaného záznamu boli prepísané zmenami dodanými v aktuálnych inicializačných dátach. Príklad: RetirementReportCodes (Kódy PP pre Sociálnu poisťovňu), PDMPriceLists (Tabuľka cenníkov pošty), WikiPageStyles (Tabuľka štýlov Wiki stránok)