Skriptovací programovací jazyk: Porovnání verzí

Z K.A.P.
Skočit na navigaciSkočit na vyhledávání
 
(Není zobrazeno 39 mezilehlých verzí od 2 dalších uživatelů.)
Řádek 1: Řádek 1:
 
V aplikaci je integrovaný modul pro podporu správy systému umožňující zpracování programových skriptů. Skripty je možné psát v integrovaném editoru (kód menu 90,20). Je možné psát skripty ve formátu Pascal, C++, Basic nebo JScript (stejné možnosti, jen jiná syntaxe použitá pro zápis skriptů). V aplikacích je možné použít mnoho různých objektů, funkcí a konstant.
 
V aplikaci je integrovaný modul pro podporu správy systému umožňující zpracování programových skriptů. Skripty je možné psát v integrovaném editoru (kód menu 90,20). Je možné psát skripty ve formátu Pascal, C++, Basic nebo JScript (stejné možnosti, jen jiná syntaxe použitá pro zápis skriptů). V aplikacích je možné použít mnoho různých objektů, funkcí a konstant.
 
 
===Objekty===
 
Settings.Values['INI.fieldname']..vrací hodnoty polí z tabulky SKLADINI
 
Settings.Values['KFG.fieldname']..vrací hodnoty polí z tabulky SKLADKFG
 
Settings.Values['USER.fieldname']..vrací hodnoty polí z tabulky SYSTUSER
 
  (fieldname je jméno pole z dané tabulky dle struktury souborů)
 
Settings.Values['DPH.ProcentoN']..vrací sazbu DPH (N je od 0 do 6)
 
Settings.Values['DPH.OznaceniN']..vrací krátké označení DPH (N je od 0 do 6)
 
Settings.Values['DPH.PasmoN']..vrací pásmo DPH (N je od 0 do 6)
 
  (všechny hodnoty dle aktuálně přihlášeného uživatele a databáze)
 
Settings.Values['VAR.promenna']..vrací hodnotu INI proměnné dle nastavení proměnných (Oprava INI hodnot / F10)
 
 
===Konstanty===
 
_AktualniSklad_ .. číslo aktuálního skladu
 
_NazevSkladu_ .. název aktuálního skladu
 
_KonfigDir_ .. označení konfigurační složky včetně lomítka (např. UZIV\ )
 
_Mena_ .. hlavní měna (určená verzí programu)
 
_Direktivy_ .. direktivy dle verze aplikace (např. LCXX EXTUCTO ...)
 
 
===Funkce===
 
Function IniReadString(Sekce: String; Promenna: Byte; TestUzivatel: Boolean; Sklad: integer; Default: String): String
 
- vrací textovou hodnotu proměnné z CISELNIK.BTR (číselník 161)
 
Function IniWriteString(Sekce : String;  Promenna : Byte; TestUzivatel: Boolean; Sklad: integer; Hodnota: String): Boolean
 
- zapisuje hodnotu proměnné (TestUzivatel=true: platí jen pro akt.uživatele; Sklad=0:platí pro všechny sklady)
 
Function IniReadInteger(Sekce : String;  Promenna : Byte; TestUzivatel: Boolean; Sklad: integer; Default: integer): integer
 
- vrací číselnou hodnotu proměnné
 
Function IniWriteInteger(Sekce : String;  Promenna : Byte; TestUzivatel: Boolean; Sklad: integer; Hodnota: integer): Boolean
 
- zapisuje číselnou hodnotu proměnné
 
Procedure LogWrite(Msg : String)
 
- zapisuje informaci Msg do textového logu aplikace
 
 
 
Do skriptovacího jazyka doplněny funkce zajišťující kompatibilitu s množinou funkcí dostupnou v rámci vyhodnocování výrazů v jiných částech programu (např. generátor sestav,filtrování pomocí výběrových podmínek). Syntaxe je stejná nebo obdobná.
 
Dostupné funkce:
 
Function DelAll(s: String) : String
 
Function DelLeft(s: String) : String
 
Function DelRight(s: String) : String
 
Function EnumStr(s: String; Index: integer; Delimiter:Char = '/‘) : String
 
Function GetVar(VarName: String) : String
 
Function Left(s: String; Count: Integer) : String
 
Function Len(s: String) : Integer
 
Function Mid(s: String; Index, Count: Integer) : String
 
Function PosUp(SubStr, Source: String) : Integer
 
Procedure SetVar(Name: String; Value: Variant) 
 
Function Str(Num: Extended; Size, Decimal: integer) : String
 
Function Right(s: String; Count: Integer) : String
 
Function Using(s: String, Size: Integer) : String
 
Function Val(s: String) : Extended
 
Function WinFmt(s: String) : String
 
function DateValue(Datum: String):Integer
 
function DV(Datum: String):Integer
 
function StrDate(Datum: Integer):String
 
function Abs(e: Extended): Extended
 
Function Trim(s: String): String
 
 
Dostupné jsou také funkce IfS a IfL se syntaxí obdobnou funkci IF (ta není ve skriptovacím jakyku dostupná).
 
 
Následující funkce mají svoji obdobu ve funkcích pro zpracování výrazů. Jsou ale mírně odlišné.
 
 
Function Conv(s: String; CP: Byte) : String
 
Převede text v kódování Windows do jiné kódové stránky.
 
Hodnoty pro CP:
 
0 .. ASCII
 
1 .. Kamenický (CP 895)
 
2 .. ASCII2 (ASCII s rámečky)
 
3 .. LATIN2 (CP 852)
 
4 .. Windows 1250
 
 
 
Function Date: TDateTime
 
Vrací hodnotu aktuálního data (jako číslo).
 
 
Function Time: TDateTime
 
Vrací hodnotu aktuálního času (jako číslo).
 
 
Function Now: TDateTime
 
Vrací hodnotu aktuálního data a času (jako číslo).
 
 
Function IfS(Condition: Boolean; IfTrue, IfFalse: String) : String
 
Funkce vyhodnotí podmínku, pokud bude hodnota True, tak vrátí text z parametru IfTrue, při False vrátí text z IfFalse. Parametry IfTrue, IfFalse i výsledek funkce jsou typu string
 
 
 
Function IfL(Condition: Boolean; IfTrue, IfFalse: Integer) : Integer
 
Funkce vyhodnotí podmínku, pokud bude hodnota True, tak vrátí číslo z parametru IfTrue, při False vrátí číslo z IfFalse. Parametry IfTrue, IfFalse i výsledek funkce jsou typu celé číslo.
 
 
 
Příklad skriptu v syntaxi Pascal:
 
var i: integer;
 
    s: String;
 
begin
 
  s:=IniReadString('ScriptTest', 1, True, _AktualniSklad_, '5');
 
  ShowMessage(Settings.Values['INI.FirmaJmeno']+chr(13)+Settings.Values['USER.JmenoUziv']+chr(13)+_KonfigDir_);
 
  LogWrite('Direktivy:'+_Direktivy_);
 
  if s <> '' then
 
    i := StrToInt(s)+1
 
  else
 
    i := -10;
 
  if not IniWriteInteger('ScriptTest', 1, True, _AktualniSklad_, i) then
 
    ShowMessage('V IniWriteInteger se vyskytla chyba');
 
end.
 
 
  
 
Skripty nelze v programu spouštět přímo (pouze v integrovaném editoru skriptů, kde je možné i jednoduché krokování skriptů), ale je třeba je nejdříve tzv. podepsat. To zajišťuje nová funkce s kódem menu 90,21, která k vybranému vstupnímu souboru se souborem skriptu vytvoří soubor s podepsaným skriptem (stejné jméno jako zdrojový soubor, ale s příponou FSC). K tomu je třeba určit jméno uživatele a heslo, pod kterým se bude program do aplikace přihlašovat (pokud skript připravujete pro jinou instalaci aplikace, tak heslo nemusí souhlasit s aktuálním heslem).
 
Skripty nelze v programu spouštět přímo (pouze v integrovaném editoru skriptů, kde je možné i jednoduché krokování skriptů), ale je třeba je nejdříve tzv. podepsat. To zajišťuje nová funkce s kódem menu 90,21, která k vybranému vstupnímu souboru se souborem skriptu vytvoří soubor s podepsaným skriptem (stejné jméno jako zdrojový soubor, ale s příponou FSC). K tomu je třeba určit jméno uživatele a heslo, pod kterým se bude program do aplikace přihlašovat (pokud skript připravujete pro jinou instalaci aplikace, tak heslo nemusí souhlasit s aktuálním heslem).
Je možné určit také jméno databáze (to je ale nepovinné, lze ho určit až při spouštění skriptu parametrem DB:jmenodatabaze). Podepsané soubory lze spouštět pomocí nového parametru FSC:jménopodepsanéhoskriptu, např.
+
Je možné určit také jméno databáze (to je ale nepovinné, lze ho určit až při spouštění skriptu parametrem DB:jmenodatabaze). Podepsané soubory lze spouštět pomocí nového [[Parametry pro spuštění aplikace|parametru]] FSC:jménopodepsanéhoskriptu, např.
 
SKLAD6.EXE S:SYSTEM FSC:Test.FSC
 
SKLAD6.EXE S:SYSTEM FSC:Test.FSC
 
Výsledný podepsaný soubor je uložený v interním formátu a nelze ho již znovu podepisovat (je třeba podepisovat vždy zdrojový soubor). Program při podepisování nekontroluje syntaxi skriptu. Ta je kontrolována vždy až při spouštění skriptu. Chyby skriptu jsou zapisovány do textového LOG souboru (ne všechny jsou hlášeny na obrazovku). Obě funkce jsou ve výchozím stavu umístěny do menu Nástroje pro správu, které nahradilo stávající menu Rekonstrukce dat.
 
Výsledný podepsaný soubor je uložený v interním formátu a nelze ho již znovu podepisovat (je třeba podepisovat vždy zdrojový soubor). Program při podepisování nekontroluje syntaxi skriptu. Ta je kontrolována vždy až při spouštění skriptu. Chyby skriptu jsou zapisovány do textového LOG souboru (ne všechny jsou hlášeny na obrazovku). Obě funkce jsou ve výchozím stavu umístěny do menu Nástroje pro správu, které nahradilo stávající menu Rekonstrukce dat.
  
===Tvorba sestav===
+
Pomocí kódů menu 90,100 90,150 lze spouštět skripty se jménem souboru určeným pomocí proměnné ''MenuScript,x'' (x je hodnota od 0 do 50). Skripty musí být sice podepsané, ale jméno uživatele ani heslo se v tomto případě nekontroluje.
Modul pro práci se skripty podporuje vytváření sestav připravených v generátoru sestav. Příkaz pro spuštění výpočtu sestavy má následující syntaxi:
 
 
 
Function GSRunReport(SkupinaSestav : Integer; SestavaCislo : Integer; Parametry: String): String;
 
Function GSRunReportV(SkupinaSestav : Integer; SestavaCislo : Integer; JmenaParametru: Array of String; Hodnoty: array of Variant): String;
 
 
 
SkupinaSestav a SestavaCislo je identifikace spouštěné sestavy.
 
 
 
V první variantě musí být parametry zapsány takto:
 
promenna1=hodnota1 #13 promenna2=hodnota2 #13 ... promenna_n=hodnota_n
 
 
 
Například: GSRunReport(6, 2, 'DatumOd=01/01/12'+chr(13)+'DatumOd=01/01/12')
 
 
 
Ve druhé variantě jsou parametry zadávány formou dvojice hodnot:
 
[promenna_1, ..., promenna_n], [hodnota_1, ..., hodnota_n]
 
 
 
Například GSRunReportV(6, 2, ['DatumOd', 'DatumDo'], ['01/01/12', '01/01/12'])
 
     
 
Doplněna je také funkce pro odeslání souboru mailem prostřednictvím protokolu SMTP:
 
Function SendMailBySMTP(From, SendTo, FileAttach, Subject, SMTPServer, SMTPSenderName,SMTPPassword, BodyString : String; var ErrMessage : String) : Boolean;
 
 
 
From .. odesílatel (obvykle ve formátu e-mailové adresy)
 
SendTo .. emailová adresa příjemce
 
FileAttach .. jméno souboru s přílohou
 
Subject .. předmět mailu
 
SMTPServer .. jméno SMTP serveru nebo IP adresa
 
SMTPSenderName .. přihlašovací jméno k SMTP serveru
 
SMTPPassword .. přihlašovací heslo k SMTP serveru
 
BodyString .. obsah zprávy - řádky odděleny znakem #13 neboli chr(13)
 
ErrMessage .. návratový chybový kód nebo zpráva
 
 
 
Pokud jsou parametry SMTPServer, SMTPSenderName, SMTPPassword, From prázdné, tak se jejich hodnoty načítají z proměnných SMTP, 0 SMTP, 3 (obsah proměnných lze nastavit pomocí dialogu "Nastavení SMTP" (kód menu 51,41)
 
 
 
===Komunikace s MaximObjServerem===
 
 
 
Modul pro práci se skripty nově podporuje komunikaci s MaximObjServerem. Je tak  možné například snadno odeslat výsledek sestavy na vzdálený server a k dispozici jsou i funkce pro manipulaci s dokumenty uloženými na vzdáleném serveru.
 
K dispozici je nový objekt s následujícími vlastnostmi a metodami:
 
TMOSCommunicator = class
 
  property ErrMessage: string;
 
  property Connected: Boolean;
 
  constructor Create(IP, UserName, UserPswd: String; CodedLogin: LongInt); // aktualizace 19.11.2012
 
  function SetupConnection(BINfile, IP, UserName, UserPswd: String; CodedLogin: LongInt): Boolean;
 
  function SetupConnectionBinFile(BINfile: String): Boolean
 
  function Connect: Boolean;
 
  procedure Disconnect;
 
  function SendFile(FileName, AServerFileName, Email, Subject, TextMail:String; ANoPrefix: Boolean = False): Boolean;
 
  function SendFileByAlias(FileName, AServerFileName, Alias: String; FileTime: TDateTime = 0): Boolean;
 
  function SendSMS(TelNo, SMSMsg : String): Boolean;
 
  function GetFile(FileName, AServerFileName, Alias: String): Boolean;
 
  function GetFileInfo(Alias, FileName: String; var RemoteFileName: String; var FileSize: Extended; var FileTime: TDateTime): Boolean;
 
  function GetFileList(Alias, FileName: String; var FileNameList: String):Boolean
 
  function REMOTE_FileCopy  (FromAlias, FromDir, ToAlias, ToDir, FileName: String): Boolean;
 
  function REMOTE_FileMove  (FromAlias, FromDir, ToAlias, ToDir, FileName: String): Boolean;
 
  function REMOTE_FileRename(FromAlias, FromDir, FromFileName, ToFileName: String): Boolean;
 
  function REMOTE_FileDelete(FromAlias, FromDir, FromFileName: String): Boolean;
 
  function REMOTE_DirCreate (FromAlias, DirName: String): Boolean;
 
  function REMOTE_DirDelete (FromAlias, DirName: String): Boolean;
 
end;
 
 
 
Po vytvoření objektu pomocí Create je třeba nastavit parametry připojení pomocí SetupConnection. Pokud je k dispozici BIN soubor s parametry připojení, tak není třeba vyplňovat parametry IP, UserName a UserPswd. Většina funkci umožňuje pracovat v režimu, kdy se nejdříve zahájí připojení pomocí Connect, pak se provede příslušná komunikace a nakonec se provede odpojení pomocí Disconnect. Tento způsob komunikace může vyžadovat novou verzi MaximObjServeru (verze 28 a vyšší).
 
 
 
 
 
Objekt TKAPCommunicator
 
Tento objekt slouží k připojení na MaximObjServer (MOS) a práci se soubory pomocí tohoto serveru. 
 
 
 
Vlastnosti
 
 
 
ErrMessage
 
Obsahuje chybové hlášení, pokud některá z následujících funkcí skončila chybou.
 
 
 
Connected
 
Obahuje True pokud je objekt připojen k MOSu
 
 
 
Funkce
 
constructor Create(BINfile, IP, UserName, UserPswd: String; CodedLogin: LongInt)
 
Vytvoří objekt a nastaví hodnoty nezbytné pro připojení obdobně jako následující dvě funkce. Pokud je vyplněný parametr BINfile (jméno souboru s interním certifikátem pro připojení), tak se ostatní parametry ignorují.
 
 
 
function SetupConnection(IP, UserName, UserPswd: String; CodedLogin: LongInt): Boolean
 
Nastaví hodnoty nezbytné pro připojení. Je třeba volat jen pokud je potřeba připojení k novému serveru nebo jinému uživatelskému účtu bez nutnosti rušit a znova vytvářet objekt. Volání této funkce způsobí přerušení spojení s MOSem (pokud bylo navázáno).
 
 
 
function SetupConnectionBinFile(BINfile: String): Boolean
 
Obdoba funkce SetupConnection ale připojovací hodnoty načítá z  BIN souboru. Ostatní vlastnosti jsou u obou funkcí shodné.
 
 
 
function Connect: Boolean
 
Připojí se k MOSu a při úspěšném připojení nastaví vlastnost Connect na True.
 
 
 
procedure Disconnect
 
Odpojí se od MOSu.
 
 
 
function SendFile(FileName, AServerFileName, Email, Subject, TextMail: String; ANoPrefix: Boolean = False): Boolean
 
Odešle soubor z klientské stanice na server. Způsob zpracování serverem MIS se určuje podle přípony přenášeného souboru. Funkce je určená pro základní nastavení definované v sekci [Pripony] v souboru MaximObjServer.ini na serveru. Pokud nejsou určené parametry Email, Subject a TextMail, tak se provede odeslání mailu podle parametrů určených serverem. Pokud nastavíte parametr ANoPrefix na True, tak se na serveru ponechá jméno souboru dle parametru FileName, jinak je ke jménu souboru připojena časová značka (umožňuje ve stejnou dobu přijímat stejně pojmenované soubory).
 
 
 
function SendFileByAlias(FileName, AServerFileName, Alias: String; FileTime: TDateTime = 0): Boolean
 
Obdoba SendFile, ale přenos souboru povoluje nastavení vlastností aliasu na MOSu. Využívá se nastavení v souboru MaximObjServer.xml na serveru. Parametr FileName určuje lokální jméno souboru. Parametr AServerFileName určuje jméno souboru na serveru včetně případné podsložky (hlavní složka na serveru je určená serverem na základě parametru Alias).
 
Parametr Alias určuje jméno aliasu definovaného v MaximObjServer.xml.
 
Parametr FileTime je nepovinný a určuje datum a čas poslední změny souboru, pod jakým se soubor uloží na serveru; pokud má hodnotu 0 nebo není uveden, tak se datum a čas souboru automaticky převezme z lokálního souboru.
 
 
 
function SendSMS(TelNo, SMSMsg : String): Boolean
 
Pokud je MOS připojen k SMS bráně, je možné odesílat SMS.
 
 
 
function GetFile(FileName, AServerFileName, Alias: String): Boolean
 
Načte soubor z MOSu na klienta. Využívá se nastavení v souboru MaximObjServer.xml na serveru. Parametr FileName určuje lokální jméno souboru. Parametr AServerFileName určuje jméno souboru na serveru včetně případné podsložky (hlavní složka na serveru je určená serverem na základě parametru Alias). Parametr Alias určuje jméno aliasu definovaného v MaximObjServer.xml.
 
 
 
 
 
function GetFileInfo(Alias, FileName: String; var RemoteFileName: String; var FileSize: Extended; var FileTime: TDateTime): Boolean
 
Zjistí informace o souborech na MOSu. Ve FileName může být i maska pro výběr více souborů např.: *.*,  *.jpg apod. Funkce v tom případě vrací informace o prvním nalezeném souboru. Soubory se vybírají z adresáře daného aliasem. Využívá se nastavení aliasů v souboru MaximObjServer.xml na serveru. Funkce vrací v parametru RemoteFileName jméno souboru ze serveru, v parametru FileSize velikost souboru v bytech a ve FileTime vrací datum a čas poslední změny souboru na serveru.
 
 
 
function GetFileList(Alias, FileName: String; var FileNameList: String):Boolean
 
Načte seznam souborů z MOSu odpovídající zvolené masce souborů danou parametrem FileName. Ve FileName může být buď maska pro výběr více souborů např.: *.*,  *.jpg nebo konkrétní jméno souboru. Funkce vrací  seznam souborů ve formě jednoho stringu, kde jednotlivé názvy souborů jsou oddělené znakem #13 neboli chr(13). Soubory se vybírají z adresáře na serveru daného aliasem. Využívá se nastavení aliasů v souboru MaximObjServer.xml na serveru.
 
 
 
 
 
Skupina funkcí  začínající REMOTE_... pracuje se soubory na serveru a není určena pro přenos mezi klientem a serverem. Využívá se nastavení aliasů v souboru MaximObjServer.xml na serveru (včetně nastavení přístupových práv pro uživatelské role pro jednotlivé aliasy).
 
 
 
function REMOTE_FileCopy  (FromAlias, FromDir, ToAlias, ToDir, FileName: String): Boolean
 
Kopíruje soubor mezi dvěma adresáři. 
 
 
 
function REMOTE_FileMove  (FromAlias, FromDir, ToAlias, ToDir, FileName: String): Boolean
 
Přesune soubor mezi dvěma adresáři. To znamená, že původní soubor bude smazán.
 
 
 
function REMOTE_FileRename (FromAlias, FromDir, FromFileName, ToFileName: String): Boolean
 
Soubor bude přejmenován.
 
 
 
function REMOTE_FileDelete (FromAlias, FromDir, FromFileName: String): Boolean
 
Smaže soubor z disku.
 
 
 
function REMOTE_DirCreate  (FromAlias, DirName: String): Boolean
 
Vytvoří nový adresář.
 
 
 
function REMOTE_DirDelete  (FromAlias, DirName: String): Boolean
 
Smaže prázdný adresář. Pokud adresář nebude prázdný tak mazání skončí chybou.
 
 
 
Starší verze podporují režim bez předchozího připojení, tj. po Create je možné ihned zavolat funkci pro komunikaci (ta zajistí připojení, komunikaci i odpojení). Pro přenos jednotlivého souboru tedy doporučujeme použít tento druhý postup. Funkce začínající REMOTE jsou určené pro manipulaci s dokumenty na vzdáleném serveru (aliasy se definují v konfiguračním XML souboru na serveru).
 
 
 
===Příklady===
 
 
 
var
 
  s: String;
 
  d1, d2: TDateTime;
 
  DD, MM, YY : word;
 
begin
 
  DecodeDate(Date, YY, MM, DD);
 
  if MM=1 then begin // Zjisteni predchoziho mesice
 
    MM := 12;
 
    YY := YY - 1;
 
  end else
 
    MM := MM - 1;
 
    D1 := EncodeDate(YY, MM, 1);
 
    D2 := EncodeDate(YY, MM, DaysInMonth(YY, MM));
 
    S := GSRunReport(6, 1, 'KFG_Datum1='+StrDate(D1)+chr(13)+ 'KFG_Datum='+StrDate(D2)+chr(13)+ 'INI_Jmeno=Pokusný sklad');
 
  //S := GSRunReportV(6, 1, ['KFG_Datum1', 'KFG_Datum', 'INI_Jmeno'],[StrDate(D1), StrDate(D2), 'Pokusný sklad']);
 
  ShowMessage(s);
 
end.  
 
 
 
----
 
  
var
+
[[Skriptovací jazyk - objekty]]<br/>
  s: String;
+
:[[Objekt TMOSCommunicator]]<br/>
begin
+
:[[Objekt TKAPBtrTable]]<br/>
//From, SendTo, FileAttach, Subject, SMTPServer, SMTPSenderName, SMTPPassword, BodyString, ErrMessage
+
:[[Objekt TKAPMemTable]]<br/>
  if SendMailBySMTP('odesilatel@posta.cz', 'prijemce@mail.com', 'UZIV\SESTAVA1.SLK'#9'UZIV\SESTAVA2.SES'#13'UZIV\vystup.pdf', 'Test scriptu', 'smtp.posta.cz', 'SMTPjmeno', 'SMTPheslo', 'Testovaci email.'#13'Konec', s)
+
:[[Objekt TKAPPvQuery]]<br/>
  then ShowMessage('OK '+ s)
+
:[[Objekt TKAPADOTable]]<br/>
  else ShowMessage('CHYBA '+ s);
+
:[[Objekt TKAPADOQuery]]<br/>
end.
+
:[[Objekt TKAPADOConnection]]<br/>
 +
:[[Objekt App]]<br/>
 +
:[[Objekt TKAPRegOptions]]<br/>
 +
:[[Objekt TKAPIndPrice]]<br/>
 +
:[[Objekt TKAPOrder]]<br/>
 +
:[[Objekt TKAPDocument]]<br/>
 +
[[Skriptovací jazyk - konstanty]]<br/>
 +
[[Skriptovací jazyk - funkce]]<br/>
 +
:[[Skriptovací jazyk - tvorba sestav]]<br/>
 +
:[[Skriptovací jazyk - odesílání mailů pomocí SMTP]]<br/>
 +
Skriptovací jazyk - příklady<br/>
 +
:[[Příklady PASCAL]]<br/>
 +
:[[Příklady C++]]<br/>
 +
:[[Příklady JAVA]]<br/>
 +
:[[Příklady BASIC]]<br/>
  
 +
Skriptovací programovací jazyk je doplněn o třídu TKAPADOTable, která umožňuje manipulaci s databázovými tabulkami prostřednictvím rozhraní ADO. Je tak možné načítat či ukládat data do externích databází (např. MS SQL server, tabulky MS Excel apod.). Pro přístup k externím databázím lze také využít již dříve definované třídy TTable, TQuery apod., které ale vyžadují, aby na daném PC bylo instalováno databázové prostředí BDE (Borland Database Engine).
  
----
 
  
var MOSCommunicator: TMOSCommunicator;
+
Ve většině menu, které lze vyvolat v programu pomocí '''Alt+F6''' a v některých dalších menu, je možné spustit skript určený proměnnou. V proměnné '''''FSRun_XXX,n''''' je třeba určit jméno podepsaného skriptu (FSC). '''Menu má vždy kód menu 69,n (n odpovídá proměnné FSRun_XXX, n).''' Při spuštění skriptu program naplní seznam hodnot Settings podle aktuálního záznamu, na kterém stojí program v době spuštění exportu ve formátu Alias.Pole=hodnota (např. DOK.CisloDokl=12345)
begin
 
  MOSCommunicator := TMOSCommunicator.Create('MOS.bin', '', '', '', 0);
 
  if MOSCommunicator.SendFile('C:\DIR\DATA1.xml', 'DATA1.XML', '', '', '', True)  
 
  then LogWrite('Prenos OK');
 
  else LogWrite(MOSCommunicator.ErrMessage);
 
  MOSCommunicator.Free;
 
end.
 
  
 +
{|border=1 class ="wikitable"
 +
|-
 +
|bgcolor=#00FF00 colspan =4| '''Technická poznámka'''
 +
|-
 +
|Menu||Proměnná||Alias||Popis
 +
|-
 +
|InfoMenu||FSRun_IADR||IADR.||Jednání, úkoly, dokumenty
 +
|-
 +
|BNO_MNU||FSRun_BNO||BNO.||Odběratelské bonusy
 +
|-
 +
|UCC_MNU||FSRun_UCC||UCC.||Účtenky - prodej na pokladně
 +
|-
 +
|DOKLAD_SPC||FSRun_DOK||DOK.||Speciální funkce k dokladu (popř. též DOKLAD_SP+ nebo DOKLAD_SP-)
 +
|-
 +
|DKS_MNU||FSRun_DKS||DKS.||Funkce ke sloučenému dokladu
 +
|-
 +
|EDI_Pol||FSRun_EDIL||EDIL.||Funkce k položkám EDI dokladu
 +
|-
 +
|EDI_Dok||FSRun_EDIH||EDIH.||Funkce k hlavičce EDI dokladu
 +
|-
 +
|EET_TST||FSRun_EET||EET.||Kontrola neodeslaného EET při spuštění programu DodMenu FSRum_ADR ADR. Funkce k adrese (též menu OdbMenu/Dod_SPC/Odb_SPC/Dod_ADRI/Odb_ADRI)
 +
|-
 +
|KARTA_SPC||FSRun_KAR||KAR.||Speciální funkce ke kartě
 +
|-
 +
|LPP_MNU||FSRun_LPP||LPP.||Položky dávky oznamovací povinnosti lihu
 +
|-
 +
|LPH_MNU||FSRun_LPH||LPH.||Hlavičky dávky oznamovací povinnosti lihu
 +
|-
 +
|LOP_MNU||FSRun_LOP||LOP.||Položky podání oznamovací povinnosti lihu
 +
|-
 +
|LOH_MNU||FSRun_LOH||LOH.||Hlavičky podání oznamovací povinnosti lihu
 +
|-
 +
|NTB_NTEXP||FSRun_NTBE||NTBE.||Přenosy z notebooku
 +
|-
 +
|NOBJED_SPC||FSRun_NOB||NOB.||Speciální funkce k objednávkám a dodavatele
 +
|-
 +
|OBJ_MNU||FSRun_OBJ||OBJ.||Speciální funkce k požadavkům
 +
|-
 +
|OPE_SPC||FSRun_OPE||OPE.||Speciální funkce k operacím dokladů
 +
|-
 +
|OPERACE||FSRun_OPE||OPE.||Funkce k nákupním operacím dokladů
 +
|-
 +
|NBH_MNU||FSRun_NBH||NBH.||Funkce k hlavičce návrhu objednávky
 +
|-
 +
|POKL_SPC||FSRun_POK||POK.||Speciální funkce k pokladním dokladům
 +
|-
 +
|REK_MNU||FSRun_REK||REK.||Speciální funkce k reklamacím
 +
|-
 +
|ROZVOZ_SPC||FSRun_DPR||DPR.||Speciální funkce k dokladům v rozvozu
 +
|-
 +
|ROZVOZ_MNU||FSRun_PRU||PRU.||Speciální funkce k rozvozům
 +
|-
 +
|DOKLAD_TSK||FSRun_DOK||DOK.|| Tisk dokladu (též menu
 +
DOKLAD_TS+/DOKLAD_TS-/DOKLAD_TN+/DOKLAD_TN-/DOKLAD_TM+/DOKLAD_TM-/DOKLAD_TSN/DOKLAD_TMO)
 +
|-
 +
|CIS_SPC||FSRun_CIS||CIS.||Funkce k číselným řadám
 +
|}
  
----
 
  
var MOSCommunicator: TMOSCommunicator;
+
Ve skriptech spouštěných z menu je nově možné rozeznat, jaká proměnná byla použita pro spuštění skriptu. Jméno proměnné je dostupné pomocí Settings.Values['RUN.VarName'] a číslo proměnné pomocí Settings.Values['RUN.VarNum'].
    Info: String;
 
    Velikost: Extended;
 
    Cas: TDateTime;
 
begin
 
  MOSCommunicator := TMOSCommunicator.Create('', '192.168.17.1', 'MOSuser', 'MOSpswd', 1);
 
  try
 
    if MOSCommunicator.Connect then begin  // pokud se připojím, pak se vše realizuje
 
                                          // v rámci jednoho připojení
 
                                          //    ShowMessage('Pripojeno');
 
  if MOSCommunicator.Connected then begin // test navic
 
  if MOSCommunicator.SendSMS('111222333','Pokus o poslani SMS') then ShowMessage('SMS odeslana.')
 
  else ShowMessage('Chyba pri odesilani SMS:'#13+MOSCommunicator.ErrMessage);
 
  if MOSCommunicator.SendFile('C:\DIR\DATA1.xml', 'DATA1.XML', '', '', '', False) then
 
    begin
 
    ShowMessage('Prenos OK');
 
    if MOSCommunicator.GetFileInfo('Sklad6DOC', 'Stavy.xml', Info, Velikost, Cas) then
 
      begin
 
      ShowMessage('GetFileInfo:'#13 + Info+ #13 +
 
      FloatToStr(Velikost) + #13 + DateTimeToStr(Cas));
 
      if not MOSCommunicator.GetFile('C:\DIR\Stavy2.XML', 'Podslozka\Stavy.xml', 'Sklad6DOC') then ShowMessage('GetFile:'#13+MOSCommunicator.ErrMessage);
 
      end
 
    else
 
      ShowMessage('GetFileInfo:'#13+MOSCommunicator.ErrMessage);
 
    end
 
  else
 
    ShowMessage('SendFile'#13+MOSCommunicator.ErrMessage);
 
  MOSCommunicator.Disconnect;
 
  end else
 
  ShowMessage(MOSCommunicator.ErrMessage);
 
  end else
 
  ShowMessage(MOSCommunicator.ErrMessage);
 
  finally
 
    MOSCommunicator.Free;
 
  end;
 
end.  
 
  
Můžete si stáhnout podrobnou příručku popisující syntaxi, základní možnosti a příklady [http://www.kapsw.cz/data/xinha/downloads/FastScriptDoc_en.pdf skriptovacího jazyka].
+
Můžete si stáhnout podrobnou příručku v angličtině popisující syntaxi, základní možnosti a příklady [http://www.kapsw.cz/data/xinha/downloads/FastScriptDoc_en.pdf skriptovacího jazyka].

Aktuální verze z 7. 10. 2022, 19:29

V aplikaci je integrovaný modul pro podporu správy systému umožňující zpracování programových skriptů. Skripty je možné psát v integrovaném editoru (kód menu 90,20). Je možné psát skripty ve formátu Pascal, C++, Basic nebo JScript (stejné možnosti, jen jiná syntaxe použitá pro zápis skriptů). V aplikacích je možné použít mnoho různých objektů, funkcí a konstant.

Skripty nelze v programu spouštět přímo (pouze v integrovaném editoru skriptů, kde je možné i jednoduché krokování skriptů), ale je třeba je nejdříve tzv. podepsat. To zajišťuje nová funkce s kódem menu 90,21, která k vybranému vstupnímu souboru se souborem skriptu vytvoří soubor s podepsaným skriptem (stejné jméno jako zdrojový soubor, ale s příponou FSC). K tomu je třeba určit jméno uživatele a heslo, pod kterým se bude program do aplikace přihlašovat (pokud skript připravujete pro jinou instalaci aplikace, tak heslo nemusí souhlasit s aktuálním heslem). Je možné určit také jméno databáze (to je ale nepovinné, lze ho určit až při spouštění skriptu parametrem DB:jmenodatabaze). Podepsané soubory lze spouštět pomocí nového parametru FSC:jménopodepsanéhoskriptu, např. SKLAD6.EXE S:SYSTEM FSC:Test.FSC Výsledný podepsaný soubor je uložený v interním formátu a nelze ho již znovu podepisovat (je třeba podepisovat vždy zdrojový soubor). Program při podepisování nekontroluje syntaxi skriptu. Ta je kontrolována vždy až při spouštění skriptu. Chyby skriptu jsou zapisovány do textového LOG souboru (ne všechny jsou hlášeny na obrazovku). Obě funkce jsou ve výchozím stavu umístěny do menu Nástroje pro správu, které nahradilo stávající menu Rekonstrukce dat.

Pomocí kódů menu 90,100 až 90,150 lze spouštět skripty se jménem souboru určeným pomocí proměnné MenuScript,x (x je hodnota od 0 do 50). Skripty musí být sice podepsané, ale jméno uživatele ani heslo se v tomto případě nekontroluje.

Skriptovací jazyk - objekty

Objekt TMOSCommunicator
Objekt TKAPBtrTable
Objekt TKAPMemTable
Objekt TKAPPvQuery
Objekt TKAPADOTable
Objekt TKAPADOQuery
Objekt TKAPADOConnection
Objekt App
Objekt TKAPRegOptions
Objekt TKAPIndPrice
Objekt TKAPOrder
Objekt TKAPDocument

Skriptovací jazyk - konstanty
Skriptovací jazyk - funkce

Skriptovací jazyk - tvorba sestav
Skriptovací jazyk - odesílání mailů pomocí SMTP

Skriptovací jazyk - příklady

Příklady PASCAL
Příklady C++
Příklady JAVA
Příklady BASIC

Skriptovací programovací jazyk je doplněn o třídu TKAPADOTable, která umožňuje manipulaci s databázovými tabulkami prostřednictvím rozhraní ADO. Je tak možné načítat či ukládat data do externích databází (např. MS SQL server, tabulky MS Excel apod.). Pro přístup k externím databázím lze také využít již dříve definované třídy TTable, TQuery apod., které ale vyžadují, aby na daném PC bylo instalováno databázové prostředí BDE (Borland Database Engine).


Ve většině menu, které lze vyvolat v programu pomocí Alt+F6 a v některých dalších menu, je možné spustit skript určený proměnnou. V proměnné FSRun_XXX,n je třeba určit jméno podepsaného skriptu (FSC). Menu má vždy kód menu 69,n (n odpovídá proměnné FSRun_XXX, n). Při spuštění skriptu program naplní seznam hodnot Settings podle aktuálního záznamu, na kterém stojí program v době spuštění exportu ve formátu Alias.Pole=hodnota (např. DOK.CisloDokl=12345)

Technická poznámka
Menu Proměnná Alias Popis
InfoMenu FSRun_IADR IADR. Jednání, úkoly, dokumenty
BNO_MNU FSRun_BNO BNO. Odběratelské bonusy
UCC_MNU FSRun_UCC UCC. Účtenky - prodej na pokladně
DOKLAD_SPC FSRun_DOK DOK. Speciální funkce k dokladu (popř. též DOKLAD_SP+ nebo DOKLAD_SP-)
DKS_MNU FSRun_DKS DKS. Funkce ke sloučenému dokladu
EDI_Pol FSRun_EDIL EDIL. Funkce k položkám EDI dokladu
EDI_Dok FSRun_EDIH EDIH. Funkce k hlavičce EDI dokladu
EET_TST FSRun_EET EET. Kontrola neodeslaného EET při spuštění programu DodMenu FSRum_ADR ADR. Funkce k adrese (též menu OdbMenu/Dod_SPC/Odb_SPC/Dod_ADRI/Odb_ADRI)
KARTA_SPC FSRun_KAR KAR. Speciální funkce ke kartě
LPP_MNU FSRun_LPP LPP. Položky dávky oznamovací povinnosti lihu
LPH_MNU FSRun_LPH LPH. Hlavičky dávky oznamovací povinnosti lihu
LOP_MNU FSRun_LOP LOP. Položky podání oznamovací povinnosti lihu
LOH_MNU FSRun_LOH LOH. Hlavičky podání oznamovací povinnosti lihu
NTB_NTEXP FSRun_NTBE NTBE. Přenosy z notebooku
NOBJED_SPC FSRun_NOB NOB. Speciální funkce k objednávkám a dodavatele
OBJ_MNU FSRun_OBJ OBJ. Speciální funkce k požadavkům
OPE_SPC FSRun_OPE OPE. Speciální funkce k operacím dokladů
OPERACE FSRun_OPE OPE. Funkce k nákupním operacím dokladů
NBH_MNU FSRun_NBH NBH. Funkce k hlavičce návrhu objednávky
POKL_SPC FSRun_POK POK. Speciální funkce k pokladním dokladům
REK_MNU FSRun_REK REK. Speciální funkce k reklamacím
ROZVOZ_SPC FSRun_DPR DPR. Speciální funkce k dokladům v rozvozu
ROZVOZ_MNU FSRun_PRU PRU. Speciální funkce k rozvozům
DOKLAD_TSK FSRun_DOK DOK. Tisk dokladu (též menu

DOKLAD_TS+/DOKLAD_TS-/DOKLAD_TN+/DOKLAD_TN-/DOKLAD_TM+/DOKLAD_TM-/DOKLAD_TSN/DOKLAD_TMO)

CIS_SPC FSRun_CIS CIS. Funkce k číselným řadám


Ve skriptech spouštěných z menu je nově možné rozeznat, jaká proměnná byla použita pro spuštění skriptu. Jméno proměnné je dostupné pomocí Settings.Values['RUN.VarName'] a číslo proměnné pomocí Settings.Values['RUN.VarNum'].

Můžete si stáhnout podrobnou příručku v angličtině popisující syntaxi, základní možnosti a příklady skriptovacího jazyka.