Flexi2XML možno použiť ako konverzný nástroj na prevod dát z ABRA Flexi aj do nej. Vie otvoriť súbor, previesť ho do XML, aplikovať na neho konverzný skript a zapísať výsledok — a to oboma smermi. Ako nástroj získať, popisuje článok Stiahnutie Flexi2XML.
Zložitejšia konverzia z XLS do Flexi
ABRA Flexi má v sebe základné možnosti importu z XLS (Excelu). Pre zložitejšie prípady — keď názvy stĺpcov nezodpovedajú vlastnostiam evidencie, je potrebné hodnoty prepočítať alebo poskladať z viacerých súborov — je nutné použiť nástroj Flexi2XML.
Konverzia z Excelu
Nástroj načítava súbory XLS aj XLSX. Majme takýto zošit:
Cenník | Odberateľ | Cena |
8593026341407 | FLEXI | 1000.0 |
8593026341407 | ARIT | 900.0 |
8593026341407 | VFH | 1050.0 |
8593026341407 | ABRA | 1100.0 |
Konverzia z XLS do XML
Aby sme mohli vykonať ďalšie spracovanie, prevedieme zošit na XML:
flexibee2xml --from-xls soubor.xls --evidence odberatel --to-xml soubor.xml
Výsledkom je XML, kde sa z názvov stĺpcov stanú názvy elementov:
<?xml version="1.0" encoding="utf-8"?>
<winstrom version="1.0">
<odberatel>
<Ceník>8593026341407</Ceník>
<Odběratel>FLEXI</Odběratel>
<Cena>1000.0</Cena>
</odberatel>
<odberatel>
<Ceník>8593026341407</Ceník>
<Odběratel>ARIT</Odběratel>
<Cena>900.0</Cena>
</odberatel>
</winstrom>
ℹ️ Parameter --evidence určuje len názov elementu riadku. Keď ho vynecháte, každý riadok sa zabalí do všeobecného <row>.
⚠️ Na Linuxe a macOS uzavrite bodkočiarku do úvodzoviek — --delimeter ";". Bez nich ju shell považuje za oddeľovač príkazov a časť príkazu zahodí. (Prepínač sa skutočne volá --delimeter, s týmto preklepom.)
Keby názvy stĺpcov priamo zodpovedali názvom vlastností vo Flexi XML, boli by sme hotoví — presne tak funguje práca s CSV a XLS v REST API. Zvyčajne je však potrebné XML ešte upraviť, a na to slúži XSL transformácia.
Konverzia z XML do XML (XSLT)
XSL transformácie sú štandardizovaným nástrojom, v jednotlivých implementáciách však bývajú odlišnosti. Flexi2XML je preto postavený na rovnakom jadre ako ABRA Flexi — tým je zaručená maximálna kompatibilita.
Pripravme konverzný skript odberatel-in.xslt:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:java="http://xml.apache.org/xalan/java" version="1.0" exclude-result-prefixes="java">
<xsl:output method="xml" indent="yes" encoding="utf-8"/>
<xsl:template match="/winstrom">
<winstrom version="1.0">
<xsl:apply-templates select="odberatel"/>
</winstrom>
</xsl:template>
<xsl:template match="odberatel">
<odberatel>
<firma>code:<xsl:value-of select="java:flexibee.Tool.toUpper(Odběratel)"/></firma>
<cenik>code:<xsl:value-of select="java:flexibee.Tool.toUpper(Ceník)"/></cenik>
<prodejCena>
<xsl:value-of select="Cena"/>
</prodejCena>
</odberatel>
</xsl:template>
</xsl:stylesheet>
Existuje mnoho úvodov do XSLT — napríklad Kompletný sprievodca XSLT alebo úvod Jirku Koska. V XSLT je možné iterovať (<xsl:for-each/>), podmieňovať (<xsl:if/>) aj indexovať obsah (<xsl:key/>); nejde však o klasické iteratívne programovanie.
Transformáciu potom spustíme:
flexibee2xml --from-xml soubor.xml --run-xslt odberatel-in.xslt --to-xml vysledek.xml
Alebo jedným príkazom s preskočením medzikroku:
flexibee2xml --from-xls soubor.xls --evidence odberatel --run-xslt odberatel-in.xslt --to-xml vysledek.xml
Výsledok je potom možné do ABRA Flexi naimportovať buď priamo, alebo pomocou dávkového spracovania.
Prehľad prepínačov
Úplný zoznam vypíše nástroj sám s parametrom --help. Vstupný a výstupný formát sa kombinujú ľubovoľne — nástroj teda zvládne aj prevod medzi dvoma tabuľkovými formátmi bez zásahu do dát.
Prepínač | Význam |
| Vstupný súbor a jeho formát. |
| Výstupný súbor a jeho formát. |
| Názov elementu riadku vo výslednom XML; bez neho sa použije |
| Aplikuje na dáta XSL transformáciu. |
| Voliteľné parametre pre XSLT alebo pre dávkové nahrávanie. |
| Oddeľovač, kódovanie a potlačenie hlavičkového riadku pri CSV. |
| Názov súboru MEMO pri formáte DBF. |
| Odstráni duplicitné záznamy. |
| Rozdelí veľké XML na menšie súbory. |
| Dávkové nahrávanie podľa konfiguračného súboru — pozri Dávkové spracovanie. |
| Vypíše verziu nástroja a prehľad prepínačov. |
💡 Na rozdiel od REST API, ktoré neznáme parametre mlčky ignoruje, nástroj preklep v názve prepínača nahlási ako Unrecognized option a skončí. Chyba sa tak spozná hneď.
Niekoľko poznámok na záver
Výslednú XSLT transformáciu je možné uložiť ako používateľskú transformáciu priamo do firmy a používať ju potom aj z REST API parametrom
format. Ak ju chcete mať zabudovanú priamo vo Flexi, obráťte sa na našu podporu.Spracovávať je možné aj viac súborov naraz — to sa hodí, keď máte jedno CSV alebo XLS s hlavičkami faktúr a druhé s položkami.
Flexi2XML je možné použiť aj na rozsekanie veľkého XML na mnoho malých a ich následné postupné nahrávanie.
