Občerstvování dokladových agend

Jak bylo objasněno v kapitole popisující technologii zpracování dat, systém ABRA Gen jakožto databázová klient/server aplikace má data spravována samostatným databázovým serverem. Při práci s daty je tedy nutno komunikovat s databázovým serverem prostřednictvím tzv. SQL dotazů, příslušná data se pak načítají z databáze do paměti klientského počítače a naopak.

Klientská aplikace pak pracuje s daty, které má načtené v paměti. Tato technologie má však drobnou nevýhodu:

  • bez ručního zásahu uživatele (vyvolání občerstvení) není většinou možné promítnout změny, ke kterým mohlo mezitím v databázi dojít
  • možná existence kolizí

Při spuštění dokladové agendy je k dispozici záložka Omezení s funkcí Získat záznamy, pomocí které si můžete provést příslušné načtení dat z databáze do paměti svého počítače (tj. provést SQL dotaz) podle zadaných omezujících podmínek, tj. dle zadaných omezujících podmínek (a dle přístupových práv) se vyberou z databáze odpovídající záznamy. Tyto jsou pak vypsány v záložce Seznam. Mezitím ale může dojít ke změně dat v databázi:

  • sami přidáme nebo opravíme některý ze zobrazených dokladů v aktuálně otevřené agendě tak, že přestane vyhovovat zvolenému omezení (např. jiným uživatelem v síti). Potom máme v seznamu sice aktuálně přidaný či opravený doklad (čili odpovídá aktuálnímu stavu v databázi), ale zobrazený seznam neodpovídá zvolenému omezení. Objasníme na jednoduchých příkladech:

    Příklad 1: Nechť potřebujeme pořídit přehled faktur vystavených na zakázku Projekt1. Poté začít vystavovat faktury nové. Otevřeme agendu Faktur vydaných, v záložce Omezení nastavíme danou zakázku a provedeme dotaz. Nechť existuje 10 takových faktur, po provedeném dotazu jsou k dispozici v záložce Seznam. Poté vystavíme novou fakturu, ale na zakázku Projekt 2. Po jejím uložení přibude v seznamu faktur aktuálně zobrazených v záložce Seznam. V ten moment však zobrazený seznam neodpovídá dříve zvolenému omezení, tj. všechny faktury vydané na zakázku Projekt 1.

    Příklad 2: Mějme seznam vybraných 10-ti faktur z příkladu 1, provedeme opravu jedné z faktur tak, že jí změníme zakázku na Projekt 2. Faktura bude po uložení stále v seznamu faktur aktuálně zobrazených v záložce Seznam, ale v ten moment však zobrazený seznam neodpovídá dříve zvolenému omezení, tj. všechny faktury vydané na zakázku Projekt 1.

    Tento stav je signalizován tím, že nově přidaná nebo opravená faktura je v seznamu zobrazena tučně, a to až do okamžiku provedení občerstvení, aby bylo zřejmé, že některé ze zobrazených záznamů byly opraveny nebo nově přidány a nemusí nutně vyhovovat zvolenému omezení.

  • přidání, smazání nebo opravu některého z námi zobrazených dokladů provede jiný uživatel v síti, resp. ji provedeme my, ale z jiné spuštěné agendy (ze stejného nebo ze samostatného okna aplikace). Potom zobrazený seznam sice odpovídá námi zvolenému omezení, ale neodpovídá aktuálnímu stavu v databázi. Objasníme na jednoduchých příkladech:

    Příklad 3: Mějme seznam vybraných 10-ti faktur z příkladu 1. Mezitím např. jiný uživatel v síti přidá novou fakturu na zakázku Projekt 1. Nám se ale tato nová faktura v seznamu neprojeví (zobrazujeme seznam předtím načtený do paměti).

    Příklad 4: Mějme seznam vybraných 10-ti faktur z příkladu 1. Mezitím např. jiný uživatel v síti provede opravu některé z těchto faktur na zakázku Projekt 2, nebo některou z těchto faktur smaže. Nám se ale tato nová faktura v seznamu neprojeví (zobrazujeme seznam předtím načtený do paměti).

K řešení těchto situací slouží funkce Občerstvit (F11), tudíž nejdříve provedeme občerstvení seznamu a poté budeme mít k dispozici aktuální stav přesně tak, jak je v databázi SQL serveru. Po stisku funkce Občerstvit systém provede znovu SQL dotaz dle aktuálního omezení na databázový server a vrátí aktuální stav z databáze (stejného výsledku bychom dosáhli přepnutím do záložky Omezení a volbou funkce Získat záznamy (za stejných omezujících podmínek).

Občerstvení seznamu může být způsobeno i jinak - např. přepnutím třídění (jelikož tím se u dokladových agend provede nový dotaz do databáze).

Před zahájením editace systém rovněž občerstvuje automaticky - kontroluje tzv. ObjectVersion a pokud se změnil (což znamená, že byl záznam mezitím změněn), provede před zahájením editace automatické občerstvení, aby se minimalizoval vznik případných kolizí po uložení záznamu.

Pro účely tisku však není nutné Občerstvovat seznam před vlastním tiskem, naopak je rychlejší rovnou použít jednu z možností, které nabízí přímo funkce Tisk (F5).

Pozor, pokud došlo např. ke smazání nějakého námi zobrazovaného záznamu z jiné stanice a nebylo provedeno občerstvení, pak takový záznam se v seznamu stále zobrazuje, nicméně je invalidní (neplatný). Pak platí:

  • Pokud kurzor stojí na takovém neplatném objektu, není dovoleno pro tento záznam přepínat záložky. Pokud stojíme na jiné záložce, než Seznam, dojde k přepnutí na záložku Seznam (jedná se o záložky na úrovni záložky Seznam).
  • Pokud kurzor stojí na takovém neplatném objektu a je vyvolána funkce Občerstvit, pak není provedena synchronizace pozice kurzoru se stavem před občerstvením (jelikož to nelze) a kurzor bude umístěn na začátku seznamu.