Provedené změny a jejich obsah
Ve verzi K2 gaia byly provedeny dvě zásadní změny. První se týká změn identifikátorů databázové struktury, druhá se pak týká kompletní podpory unicode.
Databázová struktura
Při standardizaci databázových struktur došlo k přepisu čtyř důležitých informací. Jedná se o název databázové tabulky, její prefix, který se používá jako prefix indexů dané tabulky pro zajištění unikátnosti v názvu indexů, názvy polí a také názvy indexů tabulek. Databázová struktura je tedy kompletně změněna, a to jak pro data jednotlivých firem (mandant databáze), tak i konfigurační databáze.
Tento zásah má dopad na téměř vše v IS K2. Kromě standardu, který je celý zkonvertován a přepsán na nové identifikátory, je potřeba tyto úpravy provést i do zákaznických úprav aplikace.
Úpravy se budou týkat následujících oblastí:
- K2 skript
- AM sestavy
- Návrhář objektů
- DFM formuláře
- Univerzální formuláře
- Data obsahující identifikátory polí
- Objekty obsahující identifikátory polí
U každé oblasti bude dále v textu popsáno, které části se změnily a jak je zkonvertovat.
Definovaná pravidla pro nové struktury
Pro udržení jednotného pojmenování, jak při vytváření nových struktur, tak při přepisu původních identifikátorů, bylo nutné definovat jasná pravidla, podle kterých se názvy částí databáze vytvářejí. Tato pravidla musí být dodržena každým vývojářem standardu IS K2, a je výrazně doporučeno tuto definici dodržovat i při tvorbě speciálních úprav.
Konvence pro databázové tabulky
- anglický identifikátor
- jednotné číslo
- použitý formát zápisu je PascalCase
- maximální délka identifikátoru 30 znaků
- nepoužívat výrazy typu: ItemOfSale, místo toho SaleItem
- zkratkám se vyhýbáme, použít lze, pokud by délka přesáhla 30 znaků
- klíčová slova používáme všude ve stejném tvaru
Konvence pro databázová pole
- anglický identifikátor
- jednotné číslo
- použitý formát zápisu je PascalCase
- maximální délka identifikátoru 30 znaků
- zkratkám se vyhýbáme, použít lze, pokud by délka přesáhla 30 znaků
- pokud se jedná o cizí klíč - přidáváme na konec Id, tedy např. TransportMethodId, v případě RIDu, dáváme na konec RID, např HeaderRID
- k pojmenování některých polí se využívá slovník - např. pro analytické osy, systémová pole apod. Porušit lze pouze v případě, že tabulka obsahuje vícekrát pole, které poukazuje na stejný číselník, např: 2x vazba na středisko, apod.
- bool pole budou ve většině případů začínat předponou Is, například IsBlocked, pokud již existuje v názvu sloveso, pak tento prefix nedáváme.
- primární klíč se musí jmenovat Id nebo RID dle datového typu
- položky mají definovaná odkaz na záznam z hlavičky jako HeaderRID nebo HeaderId dle datového typu
Konvence pro databázové indexy
- anglický identifikátor
- maximální délka je definováno jako: počet znaků prefixu tabulky + délka názvu pole <= 30 znaků
- název začíná klíčovým slovem By
- název neobsahuje mezery, podtržítka apod.
- formát zápisu je PascalCase
- název obsahuje název pole, které je v daném indexu nejdůležitější
Slovník typických názvů používaných v K2
V tabulce níže je uveden seznam identifikátorů, které se často objevují ve strukturách IS K2. Jedná se o vazby do známých číselníků, jako zboží, dodavatelé/odběratelé, analytické osy, nebo některá systémová pole. Je nutné tyto názvy dodržovat v celé databázi jednotně. Není povoleno, aby v jedné tabulce byl definován název pro zboží jako ArticleId a na jiném místě GoodsId. Tyto názvy je výrazně doporučeno používat i ve speciálních úpravách.
Identifikátor |
Význam |
CostCentreId |
analytická osa - Střediska |
ArticleCodeId |
analytická osa - Kód zboží |
DeviceRID |
analytická osa - Prostředek |
ContractCodeRID |
analytická osa Kód zakázky |
OfficerId |
analytická osa - Referent |
CreatedOn |
datum a čas vytvoření záznamu |
ChangedOn |
datum a čas poslední změny záznamu |
RID |
unikátní identifikace záznamu typu RID (BigInt) |
Id |
unikátní identifikace záznamu typu celé číslo (Integer) |
Abbr |
zkratka, unikátní, identifikace |
Description |
popis záznamu |
TimeStamp |
systémový datum a čas záznamu |
RightGroupId |
skupina práv k záznamu |
BookId |
vazba do knih |
CreatedById |
kdo vytvořil záznam - odkaz do modulu uživatelů |
ChangedById |
kdo naposled změnil záznam - odkaz do modulu uživatelů |
BusinessYearId |
období, perioda - vazba do period |
Name |
název |
IsBlockedRecord |
příznak pro blokování záznamu (Blokováno) |
IsCanceledRecord |
příznak pro stornování záznamu (Stornováno) |
IsInvalidRecord |
příznak pro zneplatnění záznamu (Zneplatněno) |
ValidFrom |
platné od data a času |
ValidTo |
platné do data a času |
StatusId |
stav záznamu |
Number |
číslo dokladu (bývalé „Num“) |
DataModuleNumber |
číslo datového modulu |
SequenceNumber |
pořadí, pořadí záznamu |
CompanyRegistrationNumber |
IČO |
PostingKeyId |
kontace, vazba do kontací |
DocumentRID |
číslo dokladu |
NotIncludeIntoFinancialMngmt |
doklad nebude vstupovat do řízení financí |
ExchangeRate |
kurz měny |
PartnerId |
partner, vazba do partnerů |
TradingPartnerId |
zákazník, vazba do dodavatelů / odběratelů |
ArticleId |
zboží, vazba do zboží |
ContactPersonId |
kontaktní osoba, vazba do kontaktních osob |
Quantity |
množství |
Amount |
částka |
Price |
cena |
Level |
množství v případě skladů |
Balance |
zůstatek |
Costs |
náklady |
Gross |
brutto |
Net |
netto |
VAT |
DPH |
ConfirmedOn |
datum potvrzení |
IssuedOn |
datum vystavení |
PostedOn |
datum zaúčtování |
ConfirmedById |
kdo potvrdil doklad |
IssuedById |
kdo vystavil doklad |
PostedById |
kdo zaúčtoval doklad |
Currency |
měna |
PeriodId |
perioda (jiná než BusinessYear) |
MeasureUnitId |
jednotka (bývalé Alt_j) |
Doplňující pravidla pro názvy struktur
- obecně při práci s číselníkem Zboží se používá název Article
- obecně při práci s číselníkem Dodavatelé/odběratelé se používá název TradingPartner
- pokud se bude jednat o pole, které bude popisovat číslo, tak nepoužíváme zkratku No, ale Number, například DocumentNumber místo DocNo
- obecně při práci s modulem řízení financí používáme název FinancialManagement
- v případě, že pole vyjadřuje hodnotu v měně, dáváme nakonec velké písmeno C
- v případě informace, která vyjadřuje maximum nebo minimum používáme zkratku slov Min a Max jako postfix nebo prefix v závislosti na kontextu
- v případě, že se jedná o částku, množství, cenu apod., kterou je nutné blíže specifikovat - brutto, netto apod., píšeme tuto informaci na konec identifikátoru - Amount, Quantity, Price, Costs apod., např. AmountNetC. V případě, že je potřeba ještě dále upřesnit, pak přidáme specifikaci před Amount, Price, apod., například DeductedAmountGrossC
- v případě informace, která u částek, cen apod. vyjadřuje jejich součet, používáme slovo Total jako prefix, např.: TotalAmountNet
- pokud existuje pole pro datum a pole pro čas, není nutné, aby obsahovalo tuto informaci - Date, Time. Pokud ji přidáme, je jedno, kde se bude nacházet, jedná se o doporučení a záleží, zda je nutné k lepšímu pochopení významu – ValidFromDate vs. ValidFrom
Podpora unicode
Druhá důležitá změna se týká kompletní podpory unicode. Díky této úpravě je možné v IS K2 pracovat v libovolné znakové sadě. Například zadávat karty zboží v ruské azbuce, v čínských znacích apod. Zároveň je IS K2 nezávislá na nastavení systému Windows pro aplikace nepodporující unicode.
Typickým problémem instalace IS K2 starších verzí je špatné nastavení prostředí Windows. Aby IS K2 ukládala data v pořádku, musí být Windows nastaveno pro aplikace nepodporující unicode na jazyk Čeština (Česko). Detail nastavení je vidět na obrázcích níže.
Obr. Nastavení prostředí Windows
Obr. Nastavení prostředí Windows - neunicode
V případě špatného nastavení docházelo k poškozování textů, které se vkládaly do neunicode polí. Nejčastěji se jedná o pole s hodnotou měny, viz Obrázek: Poškozené znaky - neunicode.
Obr. Poškozené znaky - neunicode
Druhý problém je vkládání speciálních znaků, jako například, ruská azbuka, do polí, které nepodporují unicode. V případě, že se pokusíme znaky vložit, dojde k jejich nahrazení za otazníky viz obrázek. Na obrázku je také vidět funkčnost znaků v poli Název, které podporuje unicode.
Obr. Poškozené znaky - neunicode - Zboží
Na verzi K2 gaia je možné do všech polí vkládat znaky i z pokročilých znakových sad. Například v knize Zboží je vidět zadání japonštiny, ruštiny a čínštiny do polí číselníku zboží v IS K2. Vše funguje nezávisle na nastavení Windows, které bylo zmíněno výše.
Obr. Unicode ve Zboží
Níže je popsáno, co se všechno zkonvertuje na unicode včetně následků.
Poznámka
Tato úprava navyšuje paměťové nároky IS K2.