Book Contents

Book Index

Akce po reinstalaci

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

Book Contents

Book Index

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í.

Book Contents

Book Index

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

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.

Book Contents

Book Index

Funkce pro kontrolu a přidělování 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);

Book Contents

Book Index

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.

Book Contents

Book Index

SQL Dotazy s podmínkou na řetězec pro databáze, které mají nastaveno jiné třídění (collation) než Czech_xx_yy

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.

Book Contents

Book Index

Přepis identifikátorů v metodách s názvem pole jako argumentem

Kromě SQL dotazů existují v K2 skriptu metody, které přebírají ke zpracování název identifikátoru pole. Tyto metody se pokouší konvertovat výše zmíněný nástroj. Protože konverzi těchto částí nelze provést vždy je nutné zbytek dořešit ručně. Ty, které se nepovedly, mají u sebe přiřazen speciální komentář, který vysvětluje tabulka popsána výše. Tyto je nutné projít, a pokud se zde pracuje s identifikátorem, který se změnil, tak přepsat na novou variantu, případně je přepsat na metody, které používají např. číslo nebo jinou alternativu. Jak již bylo zmíněno, informace, které pomohou s přepisem, naleznete v kapitole Dostupné nástroje a informace.

Book Contents

Book Index

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

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/Convert2021/~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.2021.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.

Book Contents

Book Index

Externí aplikace napojené přes K2 API

Vzhledem ke změnám identifikátorů databázový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/sws2021/Data/Part?fields=Name,TradingPartnerId.Fir

Poznámka

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

Book Contents

Book Index

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_5477.png

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.

Book Contents

Book Index

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.