Automatické doplňování hodnot z uživatelsky nadefinovaných sestav z HELIOS iNuvio do excelovské tabulky
Parser pro sestavy z HELIOS iNuvio a HELIOS Easy - firemní controllingové sestavy v Excelu.
Pro našeho klienta používající systém HELIOS jsme řešili zajímavý a poměrně složitý problém: Jak použít agregovaná data ze sestavy v HELIOSu pro automaticky generovaný report v Excelu, i když se tato HELIOS sestava často mění.
Úkolem bylo vyvinout program na automatické doplňování hodnot z uživatelsky nadefinovaných sestav v HELIOSu do excelovské tabulky. A to na denní, týdenní a měsíční bázi, kdy některé hodnoty se doplňují pouze aktuální (například týdenní), některé hodnoty se doplňují i zpětně a nahrazují již uložené hodnoty v excelovské tabulce.
Proč mít reporting v Excelu, když je možné podívat se na požadované hodnoty přímo v HELIOSu? Zobrazování v Excelu je pro mnoho uživatelů jednodušší. Spousta z nich ani nemá přístup do HELIOSu. A v Excelu je pak možné data dále analyzovat a k dispozici jsou i historické údaje za posledních několik let, ke kterým se vždy přidají ty z aktuálního období ze sestavy z HELIOSu. A také jsou v excelovských tabulkách s výhodou používané odkazy z jednoho reportu na jiný, což v sestavách HELIOSu není možné.
Jak jsme k řešení zadání přistoupili?
Sestava v HELIOSu, což je principiálně „naklikaný“ SQL dotaz, se skládala nejen z různých připojených tabulek, ale i z podmínky, kde se přidávala čísla jednotek. My jsme ale tuto sestavu potřebovali pro náš program, který její data zpracovával a vyplňoval automaticky každý den různě agregovanou excelovskou sestavu (nestačilo ani pouhé spuštění SQL dotazu sestavy).
Existovalo několik možností řešení. Jedno ze snadno implementovatelných bylo, že SQL dotaz ze sestavy vytáhneme z HELIOSu do textového souboru a při jeho změně v HELIOSu ho bude muset uživatel změnit souběžně i v textovém souboru. Bylo nám však jasné, že donutit „standardního“ uživatele k této akci je prakticky nemožné. Museli jsme přemýšlet dát. Jak program upravit, aby změnu v HELIOS sestavě poznal a na změnu aspoň upozornil? Všechny tyto úpravy byly nepraktické a vyžadovaly by součinnost uživatele a „správce“ programu, který automaticky generuje sestavy. Tušili jsme, že musí existovat ještě jiné řešení - sice složité naprogramovat, ale uživatelsky jednoduché.
A taky jsme ho vymysleli.
Použili jsme existující SQL free tokenizer a pomocí něho jsme vytvořili vlastní jednoduchý parser-tree SQL dotazu z načtené sestavy z HELIOSu. Jakmile jsme měli SQL dotaz zpracovaný v parser-tree, už jsme ho mohli podle potřeby upravit, tj. odstranit nepotřebné sloupce, upravit podmínky, jinak seskupovat, prostě modelovat SQL dotaz podle našich potřeb. Nebyl to už textově zapsaný SQL dotaz, ale šlo s ním manipulovat jako s objektovou strukturou.
Krása tohoto řešení spočívá v tom, že uživatel má volnou ruku pro úpravu sestavy v HELIOSu (pochopitelně při dodržení výběru potřebných sloupců atp.) a náš program si s těmito změnami poradí.
Podařilo se vyvinout způsob, jak automaticky doplňovat excelovské tabulky vypočtenými hodnotami z uživatelských sestav v HELIOSu s tím, že program si bez ručního zásahu poradí se změnami v uživatelských sestavách v HELIOSu i s drobnými úpravami excelovské tabulky.
Aktuálně klient řešení používá pro načítání dvou desítek evidencí na denní, týdenní i měsíční bázi.