Podobne ako v aplikácii je možné záznam skopírovať aj cez REST API. Pri importe je namiesto bežného vytvorenia možné založiť nový záznam ako kópiu už existujúceho záznamu. Na to slúži atribút sourceId, v ktorom uvediete identifikátor kopírovaného záznamu.
Príklad
Kópia skladového pohybu, kde novo vytvorenému záznamu nastavíme iný dátum vystavenia:
<winstrom version="1.0">
<skladovy-pohyb sourceId="1179">
<datVyst>2022-09-11</datVyst>
</skladovy-pohyb>
</winstrom>
Uvedené atribúty (tu datVyst) sa priradia novo vytvorenému záznamu, ostatné sa prevezmú z kopírovaného.
Kopírovať je možné aj podľa kódu a to isté funguje vo formáte JSON:
<winstrom version="1.0">
<ucet sourceId="code:132001">
<id>code:132002</id>
<nazev>Zboží na hlavním skladě</nazev>
</ucet>
</winstrom>
{
"winstrom": {
"@version": "1.0",
"faktura-vydana": [{
"@sourceId": "123",
"firma": "code:JINY_ODBERATEL"
}]
}
}
Idempotencia
Ak je uvedený identifikátor nového záznamu, volanie je idempotentné. Opakované odoslanie požiadavky spôsobí iba bežnú aktualizáciu už existujúceho záznamu.
Ak identifikátor nie je uvedený alebo takýto záznam ešte neexistuje, vytvorí sa kópia záznamu, na ktorý odkazuje atribút sourceId.
ℹ️ Ako to spoznať v odpovedi: kópia vráti ID nového záznamu, zatiaľ čo pri opakovanom volaní s už existujúcim <id> dostanete späť ID pôvodného záznamu — nová kópia nevznikne.
Na čo si dať pozor
Pri vytváraní kópie záznamu sa obvykle musíte postarať o zaistenie unikátnosti vlastností (napr. pole Skratka pri číselníkoch), ale v niektorých prípadoch je to už zaistené automaticky (napr. pri kopírovaní dokladov).
Odkaz na neexistujúci
sourceIdskončí chybou400s kódomNOT-FOUND.Skôr než kópiu odošlete naostro, overte si výsledok testovacím uložením (
?dry-run=true) — v tagu<content />uvidíte, čo by sa skutočne uložilo.
