Zdrojový kód wiki Definice sérií
Version 2.1 by Jan Šimeček on 2024/06/28 11:15
Show last authors
| author | version | line-number | content |
|---|---|---|---|
| 1 | = Přidělování nové sériové hodnoty = | ||
| 2 | |||
| 3 | Přidělit novou sériovou hodnotu je možné automaticky (klávesa F6), nebo ručně. | ||
| 4 | |||
| 5 | **Automatické vytváření:** | ||
| 6 | |||
| 7 | * Přiřadí se první nepoužitá hodnota ze série, | ||
| 8 | * Dle nastavení série uživatel může doplnit sériovou hodnotu o //prefix// a //suffix.// | ||
| 9 | |||
| 10 | **Ruční vytváření:** | ||
| 11 | |||
| 12 | * Uživatel může vytvořit libovolnou hodnotu spadající do libovolné série pro daný typ dokumentu. | ||
| 13 | * Podle nastavení série se validuje duplicita sériových hodnot. | ||
| 14 | * Ručním vytvořením sériové hodnoty mohou vznikat mezery. | ||
| 15 | * ((( | ||
| 16 | Pokud při ručním vytvoření sériové hodnoty není možné přiřadit žádnou sérii (viz mechanizmus přiřazování sérií k sériové hodnotě), tak: | ||
| 17 | |||
| 18 | * pro typ série signatura a skladová signatura se vytvoří nepřiřazená sériová hodnota | ||
| 19 | * pro ostatní typy sérií systém neumožní hodnotu uložit | ||
| 20 | ))) | ||
| 21 | |||
| 22 | = Základní pravidla = | ||
| 23 | |||
| 24 | Série musí být unikátní pro každou knihovnu - nesmí existovat série, která má stejný typ, masku a druh dokumentu (průnik množin) a nesmí se překrývat rozsah (minimální a maximální hodnota). | ||
| 25 | Série je vždy přiřazená ke konkrétní knihovně. | ||
| 26 | Série je interval posloupných hodnot určitého údaje Svazku, který je vhodné: | ||
| 27 | |||
| 28 | * generovat (nabízet) uživateli další v pořadí | ||
| 29 | * kontrolovat tvar (syntax) údaj má jakýsi předpis jak může být zadán | ||
| 30 | * kontrolovat na duplicitu (údaj nesmí být uložen u dvou či více záznamů) | ||
| 31 | |||
| 32 | = Nastavení sérií = | ||
| 33 | |||
| 34 | **Typ:** Lze definovat série pro tyto nejběžnější údaje pro Svazky | ||
| 35 | |||
| 36 | * INCREMENTAL NUMBER - Přírůstkové číslo | ||
| 37 | * WRITE_OFF_NUMBER - Úbytkové číslo | ||
| 38 | * ORDER_NUMBER - Číslo objednávky | ||
| 39 | * SIGNATURE - Signatura svazku | ||
| 40 | * STORE_MARK - Skladová signatura | ||
| 41 | |||
| 42 | **Maska: **Obsahuje vždy znak $ (dolar) reprezentující proměnné číslo intervalu, | ||
| 43 | kromě něj pak může předcházet skupina znaků jako konstanta**.** | ||
| 44 | |||
| 45 | **Regulární předpona, koncovka : **regulární výraz, který musí platit, aby byla hodnota validní a uložená: | ||
| 46 | |||
| 47 | např: /[0-9A-Za-z] kompletní definice regulárních výrazů : [[http:~~/~~/www.regularnivyrazy.info/regularni-vyrazy-zaklady.html#.VBXGz1dBFyY>>url:http://www.regularnivyrazy.info/regularni-vyrazy-zaklady.html#.VBXGz1dBFyY]] | ||
| 48 | |||
| 49 | **Defaultní předpona, přípona: **umožňuje předvyplnit současně s generováním hodnoty série (typicky se používá pro sériové hodnoty patřící do stejné série, ke kterým se přidává aktuální rok) | ||
| 50 | \\**Typy dokumentu**, pro které série platí (zkratky druhů dokumentu jsou odděleny středníky. Pokud není vyplněno, platí pro všechny typy dokumentu.) | ||
| 51 | |||
| 52 | **Zarovnání** : určuje počet míst na které bude v řadící hodnotě číselná část zarovnávána např. 10 | ||
| 53 | |||
| 54 | **Rozsah** - některé série mají stejnou masku (čárový kód), pak může být rozdělena do více sérií pro různé druhy dokumentu | ||
| 55 | |||
| 56 | * minimální hodnota série | ||
| 57 | * maximální hodnota série | ||
| 58 | |||
| 59 | **Minimální hodnota na generování** : celé kladné číslo které je jako první použito při vyvolání série, pokud v rozsahu neexistuje již uložené vyšší. | ||
| 60 | |||
| 61 | **Typ generování řadící hodnoty** : Určuje zda se použije standardní kód systému nebo je použit kód speciální. | ||
| 62 | |||
| 63 | * PREFIX_VALUE - maska je typu Předpona a Hodnota | ||
| 64 | * PREFIX_VALUE_SUFFIX - maska je typu Předpona Hodnota Přípona | ||
| 65 | * VALUE_SUFFIX - maska je typu Hodnota a Přípona | ||
| 66 | * VALUE - maska je typu Hodnota | ||
| 67 | * CUSTOM - speciální kód tzn. typ masky je jiný než předchozích standardních případech | ||
| 68 | * ILS_REQUEST_NUMBER - MVS žádanky | ||
| 69 | * ORDER_NUMBER - Číslo objednávky | ||
| 70 | |||
| 71 | **Zarovnat zobrazovanou hodnotu** : rozhoduje, jestli je zobrazovaná hodnota hodnota zarovnávána na určitý počet nul. | ||
| 72 | |||
| 73 | == Regulární koncovka - příklady == | ||
| 74 | |||
| 75 | * Maska - //A1// | ||
| 76 | ** Regulární koncovka - **[a-z]|/[0-9]{1,4}[a-z~\~\-]{0,1}[0-9]{0,4}[/]{0,1}[IVXLCDM]*** | ||
| 77 | *** Vyhovující hodnoty: //A1//**a, **//A1//**/1, **//A1//**/1a, **//A1//**/1995, **//A1//**/1995a, **//A1//**/1995/I, **//A1//**/51, **//A1//**/77-1** | ||
| 78 | |||
| 79 | == Mapování série na hodnotu == | ||
| 80 | |||
| 81 | |Je potřeba mít na paměti, že reguláry jsou zleva doprava velmi "žravé", tzn. snaží se na danou část reguláru namapovat co nejvíc znaků je to možné. | ||
| 82 | |||
| 83 | 1. Mapování kombinace regulární předpony **[^0-9]***, masky **$** a regulární koncovky **.*** | ||
| 84 | 11. Vnitřně se převede na následující regulár: **([^0-9]*)?(\d+)(.*)?** | ||
| 85 | 11. Pro sériovou hodnotu **433595** se pak provede tohle mapování: | ||
| 86 | 111. Na první skupinu **([^0-9]*)?** pro prefix se nenamapuje nic, protože jsou za začátku jen čísla. | ||
| 87 | 111. Na druhou skupinu **(\d+) **pro samotnou hodnotu se namapují číslice **433595**. | ||
| 88 | 111. Na třetí skupinu **(.*)?** pro suffix se už nenamapuje zase nic, protože tam už nic není. | ||
| 89 | 11. Pro sériovou hodnotu **AA1234/45** se to pak namapuje takto: | ||
| 90 | 111. Na první skupinu **([^0-9]*)?** pro prefix se namapuje **AA**. | ||
| 91 | 111. Na druhou skupinu **(\d+) **pro samotnou hodnotu se namapují číslice **1234**. | ||
| 92 | 111. ((( | ||
| 93 | Na třetí skupinu** (.*)?** pro suffix se namapuje ten zbytek, tzn.** /45**. | ||
| 94 | |||
| 95 | |||
| 96 | ))) | ||
| 97 | 1. Mapování kombinace regulární předpony **.***, masky **$** a regulární koncovky **.*** | ||
| 98 | 11. Vnitřně se převede na následující regulár: **(.*)?(\d+)(.*)?** | ||
| 99 | 11. Pro sériovou hodnotu **433595** se pak provede tohle mapování: | ||
| 100 | 111. Na první skupinu **(.*)?** pro prefix se pokusí namapovat co nejvíc znaků je možné, aby přesto byly splněny podmínky dalších skupin → namapuje **43359**. | ||
| 101 | 111. Na druhou skupinu **(\d+) **pro samotnou hodnotu se namapuje pouze **5**. | ||
| 102 | 111. Na třetí skupinu **(.*)?** pro suffix se už nenamapuje zase nic, protože tam už nic není. | ||
| 103 | |||
| 104 | = Generování hodnot do sérií = | ||
| 105 | |||
| 106 | * je potřeba po vytvoření série | ||
| 107 | * postup je popsán zde: [[Vytvoření nové série>>doc:uzivatelsky-manual.Pro-spravce.Vytvoreni-nove-serie.WebHome]] |