Skriptovací programovací jazyk: Porovnání verzí
m |
m (→Funkce) |
||
Řádek 35: | Řádek 35: | ||
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á. | 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: | Dostupné funkce: | ||
− | DelAll | + | 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 | ||
+ | Function Conv | ||
+ | |||
Dostupné jsou také funkce IfS a IfL se syntaxí obdobnou funkci IF (ta není ve skriptovacím jakyku dostupná). | Dostupné jsou také funkce IfS a IfL se syntaxí obdobnou funkci IF (ta není ve skriptovacím jakyku dostupná). | ||
Řádek 60: | Řádek 81: | ||
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=== | ===Tvorba sestav=== |
Verze z 20. 11. 2012, 13:45
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
Function Conv
Dostupné jsou také funkce IfS a IfL se syntaxí obdobnou funkci IF (ta není ve skriptovacím jakyku dostupná).
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).
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.
Tvorba sestav
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 až 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šší).
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).
Můžete si stáhnout podrobnou příručku popisující syntaxi, základní možnosti a příklady skriptovacího jazyka.