Metody zálohy/obnovy a odpovídající nastavení logování změn inicializačních dat

V rámci zavedení inkrementálního update (od v. 10.02 vč.) se zásadním způsobem změnil i způsob zálohování a obnovy dat (zálohuje se vše a databáze se obnoví přesně tak, jak byla). Od v. 10.02 vč. platí, že se při update nevytváří nová databáze, ale update probíhá inkrementálně nad "živou" databází klienta (postupným promítnutím potřebných změn, které do nové verze provedl výrobce).

Dříve existovalo několik metod zálohování (na každé tabulce bylo řečeno, která z těchto metod se pro ni má používat), které zajišťovaly, co se má v jednotlivých tabulkách zazálohovat a co obnovit s ohledem na záznamy dodávané výrobcem a záznamy zadané či změněné uživatelem. Tyto "backup/update" metody od v. 10.02. vč. bezpředmětné.

U tabulek, do kterých výrobce dodává nějaká inicializační data, je zajištěno, aby se v rámci update uživateli promítly změny v těchto inicializačních datech provedené výrobcem do nové verze (přidání nových záznamů, úpravy existujících příp. smazání neplatných). Jaké z těchto změn (operací) v jednotlivých tabulkách výrobce loguje do tzv. UpdateListu, na základě kterého se pak provádí datový update u uživatele, závisí na charakteru dané tabulky. Typicky je to takto:

  • U tabulek, které obsahují výhradně výrobcem dodávané záznamy - logují se operace Vložení, Změna, Vymazání inicializačních dat. Tj. po update budou tyto tabulky naplněny záznamy přesně tak, jak je aktuálně dodává výrobce.

    Různé pomocné tabulky typu "Master..." (např. MasterAccounts (Vzory účtových osnov), MasterPaymentTypes (Tabulka vzorů způsobů úhrady a jejich kódů), a další jako tabulka WageConstantIntervals (Hodnoty globálních proměnných), RetirementReportDefs (Definice ELDP) apod.

  • U tabulek, které jsou dodávány předvyplněné výrobcem, přičemž jde o systémové definice s příznakem System, které uživatel nemůže opravovat či mazat, může ale libovolně přidávat a měnit vlastní - logují se operace Vložení, Změna, Vymazání.

    Tj. po update se přihrají nové výrobcem dodávané záznamy, původní výrobcem dodávané se zaktualizují (změní, příp. vymažou).

    WatchDogPoints (Kontrolní body (pro automatické vzkazy)), WageTaxTable (Daňové tabulky pro výpočet daně ze mzdy),JobGroups (Skupiny prací), (CalcCharts) (CalcExpressions) (CalcFields) (hlavičky výp. schémat a v nich obsažené systémové části definic) aj.

  • U tabulek, které jsou dodávány předvyplněné výrobcem, přičemž jde o systémové definice (i když bez příznaku System), které uživatel nemůže opravovat či mazat, může ale libovolně přidávat a měnit vlastní - logují se operace Vložení, Změna inicializačních dat. U běžných změn (např. oprava názvu) se typicky neloguje změna příznaku Hidden (Skrytý), pokud jde o tabulku s tímto příznakem. Operace Vymazat se typicky neloguje, při zrušení (vymazání) existujícího záznamu se naopak typicky loguje změna a to změna příznaku Hidden (Skrytý). Tzn. že staré dříve dodané inicializační záznamy, které byly nyní zrušeny, v datech uživatele po update zůstávají, ale jsou skryty. To je žádoucí, jelikož mohly být použity (mohlo být na ně odkazováno z jiných tabulek).Tj. po update se přihrají nové výrobcem dodávané záznamy, původní výrobcem dodávané se zaktualizují (změní, příp. skryjí).

    RetirementReportCodes (Kódy PP pro ČSSZ), PDMPriceLists (Tabulka ceníků pošty), NACE (Kódy NACE)

  • U tabulek, které jsou dodávány předvyplněné výrobcem, přičemž jde o systémové definice, které uživatel může libovolně opravovat, ale nemůže je smazat - logují se operace Vložení inicializačních dat. Operace Změna a Vymazání se typicky nelogují, čili pokud si uživatel upravil dodávaný záznam a současně jej upravil i výrobce, zůstanou po update uživatelské změny zachovány, změna provedená výrobcem se neprojeví.

    Tj. po update se přihrají nové výrobcem dodávané záznamy, existující záznamy od výrobce se ale neaktualizují, zůstávají tak, jak je měl uživatel (neboli uživatelské změny v původních výrobcem dodávaných zůstanou zachovány). Tudíž pokud je jejich aktualizace potřebná, musí si je uživatel upravit ručně.

    PDMPostProviders (Tabulka poskytovatelů poštovních služeb), PDMIssuedContentTypes (Tabulka obsahů odeslané pošty)

  • U tabulek, které jsou dodávány předvyplněné výrobcem, přičemž nejde o systémové definice, tj. uživatel je může libovolně opravovat či mazat - logují se operace Vložení inicializačních dat. Operace Změna a Vymazání se typicky nelogují, čili pokud si uživatel upravil dodávaný záznam a současně jej upravil i výrobce, zůstanou po update uživatelské změny zachovány, změna provedená výrobcem se neprojeví.Tj. po update se přihrají nové výrobcem dodávané záznamy, existující záznamy od výrobce se ale neaktualizují, zůstávají tak, jak je měl uživatel (neboli uživatelské změny v původních výrobcem dodávaných zůstanou zachovány). Tudíž pokud je jejich aktualizace potřebná, musí si je uživatel upravit ručně.

    WageNoticesTypes (Typy úkolů a školení), HIPaysGovernmentType (Druhy pojištěnců státu), InsuranceCompanies (Zdravotní pojišťovny) a velká řada jiných.

  • U tabulek, které nejsou dodávány předvyplněné výrobcem, nebo se nepředpokládají změny v dodávaných datech - nelogují se žádné operace inicializačních dat.

    CalcUserExpressions, CalcUserFields (uživatelské části definic výpočtových schémat mezd), WageNotices (Úkoly a školení) a obrovská řada jiných, které nemá smysl plnit dodávanými daty a dále tabulky jako Firms (firmy), Persons (osoby), kde se dodává jeden pomocný záznam (Bez příslušnosti k firmě/Beze jména), který se typicky v čase nemění.

  • U pomocných tabulek plněných pouze interně systémem - nelogují se žádné operace inicializačních dat (jelikož to nemá význam, tabulka je plněna interně systémem, žádná init data výrobce nedodává)

    Různé pomocné tabulky typu "SYS$..." (např. SYS$POS (Pomocná tabulka POSu), SYS$AccRequests (s ID všech existujících účetních žádostí, plněná pomocí triggerů tabulky GeneralLedger), aj.).

Výše uvedené není striktní, tzn., že výrobce se může od výše uvedeného odchýlit a zalogovat změnu, která se typicky u dané tabulky neloguje, pokud se jedná o takovou změnu, u níž by bylo žádoucí ji do dat uživatele promítnout, např. i za cenu toho, že by "přebila" změny daného záznamu provedené předtím uživatelem.

Do v. 10.01 vč. platilo, že při aktualizaci instalace (update) i při obnově dat ze zálohy se nejdříve vytvořila nová databáze a založily se její tabulky, poté se do nich nahrála defaultně dodávaná inicializační data a nakonec se provedla obnova dat ze zálohy. U každé tabulky bylo proto dáno, jaká metoda zálohování a obnovy se má použít, aby po takovémto vytvoření nové databáze v tabulce byla aktuální výrobcem dodávaná data a zároveň správně data, která si zadal či změnil uživatel).

Např. u některých tabulek bylo žádoucí, aby v nich po obnově dat byla data inicializační plus data ze zálohy (ttBackupAppend), naopak u jiných, aby po obnově ze zálohy byla v tabulkách jen data přesně tak, jak byla v záloze (ttBackupReplace) bez ohledu na aktuální data inicializační nebo kombinace obojího, tj. aby po obnově byla v tabulkách data inicializační, ale pokud se v záloze vyskytoval shodný záznam, patřičně se dle zálohy zaktualizoval, tj. uživatel měl po obnově data, tak, jak si je nadefinoval plus případné nové záznamy z dat inicializačních (ttBackupUpdate).

Jednotlivé metody zálohy/obnovy dat byly následující:

  • 1-ttBackupAppend - Záloha: Zálohovalo se vše. Obnova: Tabulka se před obnovením nemazala. Tj. k existující tabulce a jejímu obsahu se udělal append (přidání) ze zálohy. Příklad: WageNotices (Úkoly a školení) a obrovská řada jiných.
  • 2-ttBackupReplace - Záloha: Zálohovalo se vše. Obnova: Tabulka se před obnovením mazala. Tj. před obnovou ze zálohy se vymazal původní obsah tabulky a nahrál se celý ze zálohy. Příklad: CalcUserExpressions, CalcUserFields (uživatelské části definic výpočtových schémat mezd) a velká řada jiných, jako Firms ( firmy), Persons (osoby) atd.
  • 3-ttBackupNoSystemOnly - Záloha: Zálohovaly se jen nesystémové záznamy, tj. záznamy bez příznaku System. Obnova: K existující tabulce a jejímu obsahu se udělal append (přidání) ze zálohy (jednalo se ale jen o nesystémové záznamy, jelikož jen ty byly v dané záloze). Příklad: JobGroups (Skupiny prací), (CalcCharts) (CalcExpressions) (CalcFields) (hlavičky výp. schémat a v nich obsažené systémové části definic) aj. (Typicky se jedná o ty tabulky, které jsou dodávány předvyplněné výrobcem, přičemž jde o systémové definice, které uživatel stejně nemůže měnit. Může měnit a přidávat pouze nesystémové. Při obnově dat resp. update se nahrají aktuální výrobcem dodávané systémové (tj. přihrají se nové systémové záznamy, původní výrobcem dodávané a výrobcem změněné se zaktualizují), přičemž uživatelské zůstanou přesně tak, jak je uživatel měl.)
  • 4-ttNoBackup - Záloha: Nezálohovala se. Obnova: Nezálohovala se, protože byla plněna z inicializačních dat údaji od výrobce. Příklad: Různé pomocné tabulky typu "SYS$..." (např. SYS$POS (Pomocná tabulka POSu), SYS$AccRequests (s ID všech existujících účetních žádostí, plněná pomocí triggerů tabulky GeneralLedger), aj.), různé tabulky typu "Master..." (např. MasterPaymentTypes (Tabulka vzorů způsobů úhrady a jejich kódů), a další jako tabulka WageConstantIntervals (Hodnoty globálních proměnných), RetirementReportDefs (Definice ELDP) apod.
  • 5-ttBackupUpdate - Záloha: Zálohovalo se vše. Obnova: Při obnově se aktualizovaly změněné a doplněné záznamy. Tj. při obnově se zjišťovalo, zda záznam s daným ID již v tabulce není. Pokud byl, provedl se update všech položek záznamu ze zálohy. Pokud nebyl, pak se záznam přidal jako nový ze zálohy. Příklad: WageNoticeTypes (Typy úkolů a školení), HIPaysGovernmentType (Druhy pojištěnců státu), InsuranceCompanies (Zdravotní pojišťovny), PDMPostProviders (Tabulka poskytovatelů poštovních služeb) a velká řada jiných. (Typicky se jedná o ty tabulky, které jsou dodávány předvyplněné výrobcem, přičemž nejde o žádné systémové definice, ale dodávané předvyplněné záznamy, aby si uživatel nemusel plnit celou tabulku (typicky číselník) ručně od nuly).
  • 6-ttBackupReplaceSpecial - Sloužila pro zvláštní zálohu a obnovu pro výpočtové vzorce ve mzdách. Obnova pracovala tak, že se při obnově zjišťovalo, zda systémový záznam s daným FieldCode již existuje a pokud ano, tak se porovnal jejich ObjVersion. Byl-li ObjVersion jiný, pak se o tom udělal zápis do servisní knížky + vzala se novější varianta záznamu. Dále se zjistilo, zda k původnímu záznamu nebyla připojena nějaká uživatelská definice. Pokud ano, vytvořil se duplikát této uživatelské definice a ten se připojil k novému záznamu.
  • 7-ttNoReplaceSystemID - Záloha: Zálohovalo se vše. Obnova: Záznamy dodané výrobcem se nahrály z inicializačních dat. Při obnově se zjistilo, zda byl takový záznam uživatelsky skryt. Pokud ano, skryl se i v obnovených datech. Z obnovených dat se ale neaktualizoval. Uživatelské záznamy se přidaly (append) ze zálohy. Tj. uživatelské změny výrobcem dříve dodaného záznamu byly přepsány změnami dodanými v aktuálních inicializačních datech. Příklad: RetirementReportCodes (Kódy PP pro ČSSZ), PDMPriceLists (Tabulka ceníků pošty), WikiPageStyles (Tabulka stylů Wiki stránek)