Přeskočit na hlavní obsah

Atributy - REST API

Jak pracovat s atributy ceníku a adresáře v REST API?

Autor: Petr Pech

Atributy umožňují ukládat další informace o záznamech — dají se tedy chápat jako uživatelská pole, kterými standardní evidenci rozšíříte. Nejčastěji se používají u ceníku pro lepší porovnávání zboží; podrobné vysvětlení agendy najdete v návodu Atributy ceníku.

Všechny atributy leží v jedné evidenci atribut. Ke kterému záznamu atribut patří, určuje vyplněná relace:

Relace

Atribut patří k

cenik

ceníkové položce

adresar

firmě v adresáři

doklObch, doklFak, doklSklad, doklInt

obchodnímu, fakturačnímu, skladovému nebo internímu dokladu

Povinný je jen typAtributu — odkaz do číselníku typ-atributu, který určuje i datový typ hodnoty (typAtributK): typAtribut.retezec, typAtribut.integer, typAtribut.numeric, typAtribut.datumCas nebo typAtribut.boolean. Legendu k jednotlivým polím číselníku popisuje článek Číselníky atributů.

ℹ️ Hodnotu zapisujte do elementu hodnota. Flexi ji podle typu atributu uloží do odpovídajícího pole — valString, valInteger, valNumeric, valBoolean nebo valDatCas — a při čtení dostanete oboje.

⚠️ Atributy adresáře lze zakládat, editovat a mazat pouze přes REST API. Jejich zobrazení je už možné i v desktopové aplikaci.


Ceník

Atributy v ceníku je možné založit, editovat i smazat přes API i v desktopové aplikaci. Vyčíst je můžete buď jako podřízený zdroj ceníkové položky, nebo přímo z evidence atributů:

GET https://demo.flexibee.eu/c/demo/cenik/42/atributy.xml
GET https://demo.flexibee.eu/c/demo/atribut/(cenik='code:CENIK').xml

⚠️ Filtrovat je nutné zápisem v kulatých závorkách v URL — funguje na obou adresách, tedy i na /cenik/42/atributy/(hodnota='KUZE'). Parametr dotazu ?filter= tyto adresy naopak tiše ignorují a vrátí všechny záznamy.

Import atributu:

<?xml version="1.0" encoding="UTF-8"?>
<winstrom version="1.0">
<atribut>
<hodnota>KUZE</hodnota>
<cenik>code:KUFR</cenik>
<typAtributu>code:MATERIAL</typAtributu>
</atribut>
</winstrom>

Editace existujícího atributu — s uvedením identifikátoru záznamu:

<?xml version="1.0" encoding="UTF-8"?>
<winstrom version="1.0">
<atribut>
<id>1</id>
<hodnota>TEXTIL</hodnota>
<cenik>code:KUFR</cenik>
<typAtributu>code:MATERIAL</typAtributu>
</atribut>
</winstrom>

Odstranění atributu akcí delete — stačí uvést identifikátor:

<?xml version="1.0" encoding="UTF-8"?>
<winstrom version="1.0">
<atribut action="delete">
<id>1</id>
</atribut>
</winstrom>

V desktopové aplikaci pak atribut vypadá takto:


Adresář

Princip je stejný, jen se místo cenik vyplní relace adresar:

GET https://demo.flexibee.eu/c/demo/adresar/642/atributy.xml
GET https://demo.flexibee.eu/c/demo/atribut/(adresar='code:FIRMA').xml

Import atributu:

<?xml version="1.0" encoding="UTF-8"?>
<winstrom version="1.0">
<atribut>
<hodnota>DULEZITY</hodnota>
<adresar>code:FIRMA</adresar>
<typAtributu>code:VZTAH</typAtributu>
</atribut>
</winstrom>

Editace atributu:

<?xml version="1.0" encoding="UTF-8"?>
<winstrom version="1.0">
<atribut>
<id>1</id>
<hodnota>NEDULEZITY</hodnota>
<adresar>code:FIRMA</adresar>
<typAtributu>code:VZTAH</typAtributu>
</atribut>
</winstrom>

A odstranění atributu:

<?xml version="1.0" encoding="UTF-8"?>
<winstrom version="1.0">
<atribut action="delete">
<id>1</id>
</atribut>
</winstrom>

V desktopové aplikaci pak atribut vypadá takto:


FAQ

Lze ceníkové položky filtrovat podle atributů?

Nelze. Dotaz jako /cenik/(atributy.hodnota='KUZE') vrací 400 s hlášením Vlastnost 'atributy' neexistuje. Filtrovat lze pouze v evidenci atribut a výsledná ID pak použít pro dotaz do ceníku.

Jak pracovat s atributy ceníku v aplikaci?

Projděte si návod pro webové i desktopové rozhraní.

Lze atributy importovat z Excelu?

Ano, ale pouze pro ceník — postup popisuje Import z Excelu - Atributy.

Jak zabránit vzniku duplicitních atributů při opakovaném importu?


Související

Dostali jste odpověď na svou otázku?