Book Contents

Book Index

Akce po reinstalaci

Po úspěšné reinstalaci na verzi K2 je potřeba dokončit převod zákaznických úprav a dalších částí, které není možné zkonvertovat automaticky.

ZBP soubory pro poznámky

Při konverzi ansistring na unicode byly změněny i formuláře poznámek. Všechny standardní formuláře jsou upraveny. Po reinstalaci je nutné opravit i zákaznické. Formuláře jsou uloženy v adresáři Conf/LangX, kde X je číslo jazyka. Každý soubor pro formulář je ve tvaru xxxxx.zbp, kde xxxxx je číslo formuláře. Všechny zákaznické formuláře mají číslo > 10000. Tyto soubory se načítají při startu K2, a pokud je zjištěno, že existuje formulář ve starém formátu, K2 zahlásí chybu a nespustí se.

pic_5516.png

Obr. Chyba poznámek při spuštění K2

Před samotnou opravou formuláře je doporučeno zjistit, zda se tento soubor ještě v K2 používá. V minulosti mohlo dojít k jeho zrušení, přepsání na jiný systém a zapomenutí výmazu tohoto souboru. Jestli se používá, zjistíme z databázových tabulek DocumentNote a ItemNote tak, že se ve sloupci FormId vyskytují čísla z vlastních zbp souborů. V tomto případě je potřeba soubor převést na nový formát.

K převodu potřebujeme zdrojový soubor poznámky. Ten je v textovém formátu, který obsahuje definici jednotlivých polí formuláře. V tomto souboru je potřeba dohledat definice všech polí, která jsou definována jako typ ftString.

pic_5517.png

Obr. Definice pole v ZBP souboru - ansistring

Každý takový výskyt je potřeba přepsat na typ ftWideString. Dále u všech polí nezávisle na datovém typu, je potřeba zvýšit hodnotu Offset na dvojnásobek.

pic_5518.png

Obr. Definice pole v ZBP souboru – widestring

Zároveň se změnou, která se týká převodu na widestring, je potřeba upravit i názvy polí, které jsou ve formuláři použité. O tom jak dohledat nové názvy, pojednává kapitola Dostupné nástroje a informace.

Nad takto upraveným souborem je potřeba spustit nástroj, který je umístěný v instalaci K2 v adresáři \SupportFiles\txt2zbp2021.exe. Nástroj se spustí příkazem txt2zbp2021.exe [cesta]\zbpXxxxx.txt s doplněním správného názvu vstupního souboru. Ve složce se následně objeví nový zbp soubor pro formulář poznámky.

Poznámka

Hodnota Offset se musí zdvojnásobit u všech definovaných polí. Uvedené úpravy se týkají pouze bloků FieldDMItem.

Překlad zákaznických úprav dle změn v K2 gaia, ori

Při každém velkém přechodu na novou verzi je nutné změnit zákaznické úpravy dle změn jádra a modulů IS K2. Jedná se o změnu, nebo rušení metod ze skriptu, případně změnu logiky, na kterou je potřeba reagovat. Níže jsou popsány nejdůležitější změny včetně jejich řešení pro novou verzi.

Funkce pro kontrolu a přidělní práv z K2 skriptu

Další větší změnou v nové verzi je přepracování metod pro práci s právy v K2 skriptu. Práva nově podporují definici na vlastní firmy. Metody tedy byly rozšířeny o parametr datový kontext, který řeší správnou funkčnost práv včetně zohlednění na vlastní firmy. Níže je uveden seznam původních metod a jejich náhrady.

Upozornění

V případě, že potlačíme datový kontext, tedy nastavíme parametr na hodnotu nil, použije se nastavení z globální firmy. Tuto variantu je doporučeno používat pouze v případech, kdy není potřeba kontext řešit.

Staré metody skriptu:

function GetPravoConf(PravoNo: Integer): Boolean;
procedure SetPravoConf(PravoNo: Integer; Value: Boolean);
function GetPravoSkPr(PravoNo: Integer; Value: Boolean): Boolean;
function GetPravoSkZm(PravoNo: Integer; Value: Boolean): Boolean;

function DejPravo(Typ: TTypPrava; Cislo: Integer; HlasChybu: THlasChybu): Boolean;


lze nahradit pomocí nových metod s kontextem:

function GetPermission(ADataModuleContext: TObject; PravoNo: Integer): Boolean;
procedure SetPermission(ADataModuleContext: TObject; PravoNo: Integer; Value: Boolean);
function GetReadGroupPermission(ADataModuleContext: TObject; PravoNo: Integer; Value: Boolean): Boolean;
function GetChangeGroupPermission(ADataModuleContext: TObject; PravoNo: Integer; Value: Boolean): Boolean;

function GetPermissionWithMessage(ADataMContext: TObject; Typ: TTypPrava; Cislo: Integer; HlasChybu: THlasChybu): Boolean;


nebo pomocí metod datového modulu:

function TDataM.GetPermission (Typ: TPermissionType; Number: Integer; UseExcept: Boolean): Boolean;
procedure TDataM.SetPermission (Typ: TPermissionType; Number: Integer; Value: Boolean);

Přepis SQL dotazů

Jednou z velkých částí, kterou nelze automaticky konvertovat, jsou SQL dotazy v K2 skriptu. Každý dotaz je nutné ručně přepsat. Seznam změn identifikátorů, které je potřeba mít k dispozici a nástroje, které pomohou s přepisem, jsou popsány v  kapitole Dostupné nástroje a informace.

V případě, že existují SQL dotazy, které obsahují řetězcové literály, je třeba před tyto parametry připsat N nebo použít parametrizovaný dotaz, aby byla zaručena funkčnost i na DB s jinou než českou collation – Czech_xx_yy, například Czech_CI_AS. V opačném případě SQL dotaz nevrátí žádná data.

Například:

RunSQLSelectDM(AktDM, MFile, 'SELECT RID FROM CURRENCYEXCHANGERATE WITH(NOLOCK) WHERE Abbr = N''Kč''');
RunSQLSelectDM(AktDM, MFile, 'SELECT RID FROM CURRENCYEXCHANGERATE WITH(NOLOCK) WHERE Abbr = ?', ['Kč'], [ftString], [4]);

Poznámka

Doporučujeme přejít na parametrizované dotazy, tedy druhou variantu, i vzhledem k výkonu K2. Délky řetězcových parametrů pak volit podle délky pole, které se má porovnávat, ne podle délky hodnoty. Tuto hodnotu pak neměnit.

Poznámka

Doplněním N před hodnotu podmínky se docílí, že daný dotaz bude předávat literály správně, bez ohledu na kódování cílové DB.

Revize a instalace rozšíření z návrháře objektů

Níže uvedené sdělení platí až po reinstalaci na verzi K2 ori. V "mezi verzi" verzi K2 gaia se s návrhářem nepracuje, neaktualizuje.

Pokud dojde v reinstalaci k chybě při překladu rozšířeních z Návrháře objektů, je potřeba dořešit jejich zavedení ručně. K automatické instalaci nedošlo pravděpodobně kvůli tomu, že je součástí rozšíření skript, který není přeložitelný.

Postupovat by se mělo následujícím způsobem:

  1. Smažeme, či přejmenujeme adresář extensions, který obsahuje běhové soubory Návrháře objektů, které jsou po neúspěšné instalaci v nekonzistentním stavu.
  2. Smažeme obsah adresáře ServisW/NO/WaitingRoom, který obsahuje zbytek nenainstalovaných rozšíření.
  3. Z adresáře SupportFiles/Convert2022/~ABS~/ServisW/NO/WaitingRoom nakopírovat definice rozšíření do jiného umístění v adresáři IS K2.
  4. V IS K2 postupně otevírat definice rozšíření z adresáře z předchozího kroku, zkusit jejich překlad, opravit a provést deploy. Jednotlivá rozšíření by se měla brát v pořadí, které je uložené v souboru InstallOrder.2022.txt, který je také v adresáři z bodu 3. Soubor obsahuje seznam rozšíření, tak jak jdou po sobě dle závislostí.
  5. Jakmile jsou rozšíření v pořádku, měla by již zase fungovat automatická aktualizace v rámci reinstalace.

Poznámka

Pokud existují rozšíření, která jsou na sobě nezávislá, je možné si práci ušetřit pomocí hromadné instalace umístěním konkrétních definic rozšíření do adresáře ServisW/NO/WaitingRoom a spuštěním IS K2 s parametrem extensions=update. Samozřejmostí by měla být kontrola přeložitelnosti. Můžeme využít i další pomůcky viz dále.

Externí aplikace napojené přes K2 API

Vzhledem ke změnám identifikátorů databázových i počítaných polí, je nutné počítat s úpravou aplikací komunikujících s K2 přes K2 API. Identifikátory jsou použity jak v požadavcích (parametry fields, orderBy, conditions apod.), tak v odpovědích z K2 API.

Při zadání neexistujícího pole v parametru orderBy nebo conditions je vrácena z API chybová odpověď. Při zadání neexistujícího pole v parametru fields je vrácena korektní odpověď, ale bez tohoto chybného pole. Pro odhalení těchto polí v požadavcích je možné zapnout logování K2 API na úroveň alespoň Warning. Do logu se následně budou zapisovat záznamy při detekci neexistujícího pole.

Ukázka hlášení v logu

[Warning] [DataService.?] Invalid field path 'TradingPartnerId.Fir'. Root object: TD_Part. Request URL: http://api.server.cz/sws2022/Data/Part?fields=Name,TradingPartnerId.Fir

Poznámka

O tom jak dohledat nové názvy polí, pojednává kapitola Dostupné nástroje a informace.

Kontrola struktur databází

Po reinstalaci je vhodné dodatečně spustit tzv. kontrolu struktur databází, zda nedošlo k nekonzistenci ve strukturách databáze a definice v IS K2. Kontrolu struktur je možné spustit v nástroji Reinstalační manažer tlačítkem Kontrola struktur. Kontrola probíhá nad všemi databázemi IS K2. Výsledek musí být bez chyb.

pic_6690

Obr. Kontrola struktur databáze

Poznámka

Kontrola struktur databází se spouští při každé reinstalaci jako povinný krok. V reinstalaci nelze pokračovat v případě, že jsou v databázi objeveny chyby.

Diagnostika K2

Po reinstalaci a přepisu všech zákaznických úprav do funkčního stavu pro verzi K2 gaia, je vhodné ověřit základní funkčnost K2 pomocí nástroje Diagnostika K2. Funkce je dostupná v nástroji Návrhář objektů pod klávesovou zkratkou Shift+Ctrl+I. Tato kontrola provede vytvoření každého modulu zaregistrovaného v IS K2 včetně zákaznických. U všech pak zkontroluje funkčnost základních operací, které jsou dostupné. V případě, že výstup obsahuje chyby, znamená to, že v IS K2 není ještě vše v pořádku.

Poznámka

Diagnostiku K2 je možné pouštět opakovaně v průběhu přepisu zákaznických úprav k ověření průběžného stavu systému.