ÚvodPlatformaCeníkOtázkyNápovědaKontakt Kivea FlexiKivea PohodaKivea účetnictvíKivea fakturace Vyzkoušet zdarma

Čo je to?

Poznámka pre administrátora: Toto je systém používaný na jednorazové vloženie veľkého množstva dát do vášho e-shopu. Najčastejšie sa používa na počiatočné nastavenie, aktualizáciu cien pre tisíce produktov alebo synchronizáciu zásob s externým skladom.

Pre koho je to určené? Administrátori by si to mali prečítať, aby pochopili možnosti platformy pre hromadné spracovanie dát, ako sú automatické výpočty cien alebo podpora viacerých jazykov. Vytváranie samotných súborov a nastavenie technického pripojenia je však úlohou pre vývojárov alebo dátových špecialistov.

Kľúčové výhody pre e-shop:

  • Obrovská úspora času: Aktualizujte tisíce produktov, cien alebo stavov zásob v priebehu sekúnd namiesto manuálneho zadávania.
  • Inteligentné výpočty: Automaticky vypočítajte konečné ceny (napríklad s DPH) alebo generujte popisy produktov počas procesu importu.
  • Bezpečné a spoľahlivé: Systém kontroluje vaše dáta na chyby pred uložením, čím zaisťuje, že váš e-shop zostane presný a profesionálny.
  • Pripravené na viacero jazykov: Jednoducho importujte preklady pre všetky podporované jazyky v jednom kroku.

Importný systém

Mechanizmy importu dát, formáty a validačné pravidlá

Prehľad

Trieda Importer spracováva dáta vo formáte JSON alebo stream, pričom spracúva entity, polia, vzťahy a rôzne možnosti importu. Importované dáta sú štruktúrované ako objekt, kde každý kľúč je názov entity (napr. produkty, používatelia) a hodnota je pole položiek na import pre túto entitu.

Kľúčové funkcie

Štruktúra založená na entitách Dáta organizované podľa typov entít s flexibilnými operáciami a mapovaním polí

Podpora výrazov Dynamické výpočty, interpolácia premenných a komplexné transformácie

Atomické operácie Importy typu všetko alebo nič s komplexným spracovaním chýb a vrátením zmien

Kompletný príklad importu

{
  "@atomic": "batch",
  "@requireChangeSet": true,
  "products": [
    {
      "@operation": "upsert",
      "code": "WIDGET-001",
      "name": "Smart Widget",
      "basePrice": 100,
      "vatRate": 0.21,
      "price": { "e": "${basePrice} * (1 + ${vatRate})" },
      "category": { "e": "code:${categoryCode}" },
      "categoryCode": "ELECTRONICS", 
      "description": { "e": "${name} - Premium quality widget" },
      "validFrom": "today",
      "validTo": { "e": "${validFrom} + 1y" },
      "attributes": [
        {
          "key": "weight",
          "value": { "e": "${baseWeight} + 0.1" },
          "baseWeight": 2.5
        }
      ],
      "@action": "sync"
    }
  ],
  "categories": [
    {
      "@operation": "update",
      "@where": "status = 'active'",
      "status": "archived",
      "archivedAt": "now()"
    }
  ]
}

Tento príklad demonštruje:

  • Import s atomicitou ‘Batch’ so sledovaním sady zmien
  • Dynamický výpočet cien pomocou výrazov
  • Vyhľadávanie kategórií s premennými
  • Interpolácia reťazcov pre popisy
  • Dátumová aritmetika pre doby platnosti
  • Vnorené výrazy vo viacnásobných vzťahoch
  • Hromadné operácie s podmienkami @where
  • Vykonanie akcie servera po importe

Podporované typy polí

Reťazec

Textové hodnoty s podporou výrazov

Príklady:

"name": "Widget"
"description": { "e": "Hello ${world}" }

Funkcie:

  • Priame reťazcové hodnoty
  • Výrazy premenných
  • Šablónovanie

Číslo/Celé číslo

Číselné hodnoty s podporou kalkulačky

Príklady:

"price": 123.45
"amount": "100+200"
"discount": "3.5%"
"total": { "e": "${price} * 1.21" }

Funkcie:

  • Aritmetické operácie
  • Percentá
  • Funkcie (abs, sqrt, atď.)
  • Interpolácia premenných

Booleovská hodnota

Hodnoty true/false s viacerými formátmi

Príklady:

"active": true
"enabled": "yes"
"visible": "ano"

Funkcie:

  • Podpora viacerých jazykov
  • Rôzne formáty (1/0, áno/nie)
  • Nerozlišujúce veľkosť písmen

Dátum/Dátum a čas

Dátumové hodnoty s podporou aritmetiky

Príklady:

"date": "2024-06-26"
"date": "1.1.2025"
"dueDate": { "e": "${createdDate} + 30d" }
"validTo": "today + 1y"

Funkcie:

  • Viacero formátov
  • Relatívne výrazy
  • Dátumová aritmetika
  • České/európske formáty

Výpočet

Vymenované hodnoty s lokalizáciou

Príklady:

"status": "active"
"priority": "Vysoká"

Funkcie:

  • Kľúč alebo lokalizovaný názov
  • Nerozlišujúce veľkosť písmen
  • Podpora aliasov

Preložiteľné

Viacjazyčné polia s tromi režimami prevádzky a kontrolou prekladov

Príklady:

"name": "Value" (merge mode)
"name": {"en": "English", "cs": "Czech"} (replace mode)
"name": [{"language": "en", "value": "English"}] (array mode)
"name@removeAll": false (preserve other translations)

Funkcie:

  • Aktualizácia špecifická pre jazyk (zlúčenie)
  • Asociatívne pole (nahradiť)
  • Formát poľa (nahradiť)
  • Ovládanie @removeAll
  • Podpora direktívy @language

Binárne/Blob

Binárne dáta s viacerými formátmi kódovania

Príklady:

"content": { "base64": "SGVsbG8gV29ybGQ=" }
"content": { "hex": "48656c6c6f20576f726c64" }
"content": { "gzip-base64": "H4sIAAAAAAAA..." }
"content": "SGVsbG8=", "content@encoding": "base64"

Funkcie:

  • Kódovanie Base64
  • Hexadecimálne kódovanie
  • Kompresia Gzip
  • Podpora prípony kódovania
  • Formáty objektov a reťazcov

Operácie importu

@operation: create

Vždy vytvoriť nový záznam

Príklad:

{ "@operation": "create", "name": "New Product" }

@operation: update

Aktualizovať existujúci záznam (vyžaduje primárny kľúč)

Príklad:

{ "@operation": "update", "id": 123, "name": "Updated Product" }

@operation: upsert

Vytvoriť, ak sa nenájde, inak aktualizovať (predvolené)

Príklad:

{ "@operation": "upsert", "code": "ABC", "name": "Product ABC" }

@operation: delete

Odstrániť zadaný záznam (záznamy)

Príklad:

{ "@operation": "delete", "id": 123 }

Kontrola správania Upsert (@update a @create)

Tieto direktívy poskytujú podrobnú kontrolu nad správaním upsertu tým, že určujú, čo sa má stať, keď záznam existuje (@update) alebo neexistuje (@create). Zvyčajne sa používajú s @operation: “upsert”.

@update

Kontroluje, čo sa stane, keď záznam už existuje počas operácie upsert.

Hodnoty:

  • ok - Aktualizovať existujúci záznam (predvolené)
  • ignore - Preskočiť aktualizáciu, ponechať nezmenené
  • fail - Vyvolať chybu, ak záznam existuje

@create

Riadi, čo sa stane, keď záznam neexistuje počas operácie upsert.

Hodnoty:

  • ok - Vytvorí nový záznam (predvolené)
  • ignore - Preskočí vytvorenie, žiadny nový záznam
  • fail - Vyvolá chybu, ak záznam neexistuje

Príklady

Preskočiť aktualizácie pre existujúce záznamy

{
  "products": [
    {
      "@operation": "upsert",
      "@update": "ignore",
      "code": "EXISTING-PRODUCT",
      "name": "Updated Name"
    }
  ]
}

Ak produkt s kódom “EXISTING-PRODUCT” už existuje, bude preskočený (nebude aktualizovaný).

Zabrániť vytváraniu nových záznamov

{
  "users": [
    {
      "@operation": "upsert",
      "@create": "fail",
      "email": "user@example.com",
      "status": "active"
    }
  ]
}

Ak neexistuje žiadny používateľ s daným e-mailom, import zlyhá s chybou namiesto vytvorenia nového používateľa.

Vytvárať iba nové záznamy

{
  "categories": [
    {
      "@operation": "upsert",
      "@update": "fail",
      "@create": "ok",
      "code": "NEW-CATEGORY",
      "name": "New Category"
    }
  ]
}

Toto vytvorí kategóriu, ak neexistuje, ale zlyhá, ak už existuje (čím sa zabezpečí, že sa vytvoria iba nové kategórie).

Kľúčové body

  • Predvolené správanie je “ok” pre @update aj @create
  • Tieto direktívy fungujú iba s @operation: “upsert”
  • “ignore” ticho preskočí operáciu
  • “fail” vyvolá chybu a môže narušiť atomické importy
  • Užitočné pre synchronizáciu dát a zabránenie prepísaniu

Transakčné režimy (@atomic)

Direktíva @atomic riadi transakčné správanie a stratégiu spracovania chýb počas importu. Vyberte vhodný režim na základe veľkosti vašich dát, tolerancie chýb a požiadaviek na výkon.

@atomic: true (Predvolené)

Všetky importy sú atomické – buď sa celý súbor potvrdí, alebo žiadny. Najbezpečnejšie, ale môže byť pomalšie pre veľké importy.

Charakteristiky:

  • ✓ Všetko alebo nič – Kompletná integrita transakcie
  • ✓ Vrátenie zmien pri chybe – Akákoľvek chyba zruší všetky zmeny
  • ⚠ Obmedzené chyby – Maximálne 100 nahlásených chýb

@atomic: false

Každý prvok sa importuje nezávisle. Čiastočné importy sú možné – niektoré záznamy môžu byť úspešné, zatiaľ čo iné zlyhajú.

Charakteristiky:

  • ✓ Nezávislé záznamy – Každý záznam vo vlastnej transakcii
  • ✓ Čiastočný úspech – Importujte čo najviac dát
  • ⚠ Izolácia chýb – Chyby neovplyvňujú iné záznamy

@atomic: “batch” (Odporúčané)

Najrýchlejší a najefektívnejší režim. Importy sa spracúvajú v dávkach pre optimálny výkon pri zachovaní primeranej izolácie chýb.

Charakteristiky:

  • 🚀 Vysoký výkon – Optimalizované pre veľké súbory dát
  • ⚖️ Vyvážený prístup – Výkon s izoláciou chýb
  • 📦 Vrátenie dávky – Neúspešná dávka neovplyvňuje ostatné

Príklady

Prísny import všetko alebo nič

{
  "@atomic": true,
  "products": [
    { "code": "P001", "name": "Product 1" },
    { "code": "P002", "name": "Product 2" },
    { "code": "INVALID", "name": "" }
  ]
}

Ak ktorýkoľvek produkt zlyhá pri validácii, žiadny z produktov nebude importovaný. Všetky zmeny sa vrátia späť.

Importovať jednotlivé záznamy

{
  "@atomic": false,
  "products": [
    { "code": "P001", "name": "Product 1" },
    { "code": "P002", "name": "Product 2" },
    { "code": "INVALID", "name": "" }
  ]
}

Platné produkty (P001, P002) budú úspešne importované, zatiaľ čo neplatný bude preskočený so správou o chybe.

Optimalizované dávkové spracovanie

{
  "@atomic": "batch",
  "products": [
    { "code": "P001", "name": "Product 1" },
    { "code": "P002", "name": "Product 2" },
    { "code": "P003", "name": "Product 3" }
  ]
}

Produkty sa spracúvajú v optimalizovaných dávkach. Ak jedna dávka zlyhá, ostatné dávky môžu byť stále úspešné, čo poskytuje najlepšiu rovnováhu výkonu a spoľahlivosti.

Výber správneho režimu

  • Použite true pre kritické dáta, kde akákoľvek chyba by mala zastaviť import
  • Použite false pre importy s najlepším úsilím, kde je čiastočný úspech prijateľný
  • Použite “batch” pre veľké súbory dát vyžadujúce optimálny výkon
  • Predvolené je true pre maximálnu integritu dát
  • Zvážte svoju stratégiu spracovania chýb a požiadavky na výkon

Veľkosť dávky (@batchSize)

Direktíva @batchSize prepíše počet položiek spracovaných v jednej databázovej transakcii. Predvolená hodnota je 50; maximálna povolená hodnota je 1000 (vyššie hodnoty sú ticho obmedzené, aby sa predišlo chybám nedostatku pamäte). Nulové a záporné hodnoty sú odmietnuté s chybou.

Táto direktíva nemá žiadny účinok, ak sa použije @atomic: false, pretože každá položka je vždy zabalená vo vlastnej individuálnej transakcii.

Príklad

{
  "@atomic": "batch",
  "@batchSize": 200,
  "products": [
    { "code": "P001", "name": "Product 1" },
    { "code": "P002", "name": "Product 2" }
  ]
}

Produkty budú potvrdené po 200 naraz v rámci jednej transakcie.

Kedy upraviť predvolené nastavenie

  • Zvýšte (napr. 200 – 500) pri importe jednoduchých, plochých entít bez vnorených vzťahov na zlepšenie priepustnosti
  • Znížte (napr. 10 – 20) pri importe entít s mnohými vzťahmi MANY alebo náročnými automatizáciami na zníženie zaťaženia pamäte
  • Predvolená hodnota 50 je dobrá rovnováha pre väčšinu prípadov použitia

Spustenie automatizácie (@automation)

Spustite preddefinované automatizácie na aplikovanie komplexných transformácií a obchodnej logiky počas importu

Direktíva @automation umožňuje vykonávať preddefinované automatizácie na importovaných záznamoch. To vám umožňuje aplikovať komplexné transformácie, výpočty alebo obchodnú logiku, ktorá je definovaná v entitách automatizácie.

Ako to funguje

  1. Výber záznamu – Záznamy sa vyberajú pomocou @where alebo sa identifikujú podľa ID
  2. Vyhľadanie automatizácie – Automatizácia sa načíta podľa jej ID alebo vyhľadávacieho kľúča (code:)
  3. Vykonanie skriptu – Skript importu automatizácie sa analyzuje a aplikuje na každý zodpovedajúci záznam
  4. Aktualizácie polí – Zmeny definované v automatizácii sa aplikujú na záznam
  5. Uložiť – Aktualizovaný záznam sa uloží do databázy

Príklady

Základné vykonanie automatizácie

{
  "products": [
    {
      "@where": "price < 100",
      "@automation": "code:price-calculation-automation"
    }
  ]
}

Vykonajte automatizáciu na všetkých produktoch, kde je cena nižšia ako 100.

Automatizácia výpočtu ceny

Krok 1: Vytvorte automatizáciu

{
  "automations": [
    {
      "@operation": "create",
      "name": "Apply Standard Markup",
      "code": "price-calculation-automation",
      "type": "massUpdate",
      "importScript": "{\"products\":[{\"price\":{\"e\":\"${cost} * 1.3\"}}]}"
    }
  ]
}

Krok 2: Použite automatizáciu

{
  "products": [
    {
      "@where": "category = 'electronics'",
      "@automation": "Apply Standard Markup"
    }
  ]
}

Podmienené aktualizácie polí

{
  "automations": [
    {
      "name": "Low Stock Alert",
      "type": "massUpdate",
      "importScript": "{\"products\":[{\"@where\":\"quantity < 10\",\"status\":\"low-stock\",\"alertSent\":true}]}"
    }
  ]
}

// Apply to products
{
  "products": [
    {
      "@where": "quantity < 10",
      "@automation": "Low Stock Alert"
    }
  ]
}

Automatizácia obsahuje vlastnú podmienku @where na dvojitú kontrolu kritérií.

Kombinovanie s inými direktívami

{
  "products": [
    {
      "@where": "status = 'pending'",
      "@automation": "code:calculate-totals",
      "@action": "approve"
    }
  ]
}

Poradie vykonania: 1) Záznam nájdený, 2) Automatizácia vykonaná, 3) Akcia servera vyvolaná.

Osvedčené postupy

  • Používajte popisné názvy: Automatizácie pomenujte jasne, aby ste naznačili ich účel
  • Dôkladne testujte: Testujte na vzorových dátach pred nasadením do produkcie
  • Vyhnite sa samo-referenciám: Nikdy nevytvárajte automatizácie, ktoré odkazujú samé na seba
  • Používajte podmienky @where: Zabezpečte, aby sa automatizácie vzťahovali len na príslušné záznamy
  • Monitorujte hĺbku: Udržujte plytké vnorenie automatizácie (max. 5 úrovní)
  • Dokumentujte logiku: Dokumentujte komplexnú logiku automatizácie

Riešenie problémov

Automatizácia sa nevykonáva

  • Overte, či je ID automatizácie/vyhľadávací kľúč správny
  • Skontrolujte, či je typ automatizácie massUpdate alebo aiMassUpdate
  • Uistite sa, že automatizácia nie je zakázaná
  • Overte, či je pole importScript platný JSON

Chyba prekročenia hĺbky automatizácie

  • Skontrolujte kruhové referencie automatizácie
  • Znížte úroveň vnorenia automatizácie
  • Skontrolujte reťazec automatizácie na prítomnosť slučiek

Zmeny neboli použité

  • Overte, či podmienka @where v importScript zodpovedá záznamu
  • Skontrolujte, či sú názvy polí v skripte automatizácie správne
  • Uistite sa, že importScript je správne naformátovaný

Vzťahy a vyhľadávania

Podľa primárneho kľúča

Odkazujte pomocou primárneho kľúča súvisiacej entity

"category": 123

Podľa vyhľadávania

Odkazujte pomocou typu a hodnoty vyhľadávania

"category": "code:ELECTRONICS"

Podľa externého ID (ext:)

Odkazujte pomocou externých identifikátorov uložených v extIds (podporuje dvojbodky v hodnote). Externé ID sú definované ako páry kľúč-hodnota v poli extIds entity, čo umožňuje flexibilné odkazovanie bez spoliehania sa na interné ID. Odporúčame použiť predponu ako ext:SYSTEM:, aby sa predišlo konfliktom s inými integráciami.

"category": "ext:SYSTEM:CATEGORY:123"

Používanie výrazov

Dynamické vyhľadávanie pomocou premenných

"category": { "e": "code:${categoryCode}" }

Vytvoriť s dodatočnými poľami

Automatické vytvorenie súvisiacej entity s viacerými poľami pomocou @create-as

"category_id": "code:ELEC",
"category_id@if-not-found": "create",
"category_id@create-as": {
  "name": "Electronics",
  "code": "ELEC"
}

Viaceré hodnoty

Vyskúšajte viacero metód rozlíšenia

"category": [123, "code:FALLBACK"]

Viacnásobné vzťahy

Polia vzťahov jeden k mnohým

"items": [
  { "name": "Item 1", "quantity": 10 },
  { "name": "Item 2", "quantity": 5 }
]

Špeciálne prípony polí

@atomic

Riadi správanie transakcií a stratégiu spracovania chýb

Hodnoty:

  • true (všetko alebo nič)
  • false (nezávislé záznamy)
  • batch (dávkové spracovanie)

@operation

Riadi akciu pre položku

Hodnoty:

  • create
  • update
  • upsert
  • delete

@where

Definuje podmienky pre hromadné operácie

Hodnoty:

  • Formát objektu
  • Formát výrazu

@m

Určuje autora/zdroj zmeny

Hodnoty:

  • api/a
  • human/user/u
  • default/d
  • import/i
  • ai

@if-not-found

Riadi správanie, ak vyhľadávanie zlyhá

Hodnoty:

  • fail
  • null
  • create
  • skip

@create-as

Určuje dodatočné polia pri vytváraní súvisiacej entity s @if-not-found=create

Hodnoty:

  • Objekt s názvami a hodnotami polí

@action

Vyvolá akciu servera na importovanom zázname

Hodnoty:

  • merge
  • sync
  • vlastné akcie

@automation

Vykoná preddefinovanú automatizáciu na importovanom zázname

Hodnoty:

  • ID automatizácie
  • názov/vyhľadávanie automatizácie

@batchSize

Nastavuje počet položiek spracovaných v jednej transakcii (predvolené: 50, maximum: 1000)

Hodnoty:

  • Kladné celé číslo (1–1000)

@requireChangeSet

Vyžaduje, aby sa zmeny sledovali v rámci sady zmien

Hodnoty:

  • true
  • false

@removeAll

Odstráni všetky existujúce súvisiace položky, ktoré nie sú v importe

Hodnoty:

  • true
  • false

@update

Riadi správanie, keď záznam existuje počas upsertu

Hodnoty:

  • ok
  • ignore
  • fail

@create

Riadi správanie, keď záznam neexistuje počas upsertu

Hodnoty:

  • ok
  • ignore
  • fail

Reťazcové výrazy

Výkonný šablónovací jazyk pre dynamické generovanie reťazcov s premennými, funkciami a podmienenou logikou

Základná interpolácia premenných

Použite syntax ${variableName} na vloženie hodnôt premenných. Premenné sa riešia z aktuálneho kontextu importu.

Príklady:

"name": "Hello ${firstName}!" → "Hello John!"
"description": "${brand} - ${model}" → "Apple - iPhone"
"fullName": "${UPPER(firstName)} ${lastName}" → "JOHN Doe"

Reťazcové funkcie

Manipulácia s textom

  • UPPER(text) – Prevod na veľké písmená
  • LOWER(text) – Prevod na malé písmená
  • TRIM(text) – Odstránenie medzier z oboch koncov
  • LTRIM(text) – Odstránenie medzier z ľavého konca
  • RTRIM(text) – Odstránenie medzier z pravého konca
  • UPPERFIRST(text) – Kapitalizácia prvého písmena
  • REPLACE(text, search, replacement) – Nahradenie textu
  • SUBSTR(text, start, length) – Extrakcia podreťazca

Informácie a nástroje pre reťazce

  • LEN(text) – Získanie dĺžky reťazca
  • STRIPHTML(html) – Odstránenie HTML značiek
  • ADDSLASHES(text) – Únikové úvodzovky
  • XMLESCAPE(text) – Únikové XML znaky
  • COALESCE(val1, val2, ...) – Prvá hodnota, ktorá nie je null/prázdna
  • ENCODE/DECODE(text, format) – Operácie kódovania (podporované formáty: base64, hex, base64url)

Funkcie regulárnych výrazov

Použite regulárne výrazy na porovnávanie vzorov a extrakciu textu v rámci reťazcových výrazov.

Porovnávanie vzorov

REGEXPMATCH(pattern, text)

Testuje, či text zodpovedá vzoru. Vráti true, ak vzor zodpovedá textu, inak false.

Príklady:

"${REGEXPMATCH('^[A-Z]', 'Hello')}" → true (starts with capital)
"${REGEXPMATCH('^[0-9]+$', 'Hello')}" → false (not all digits)

Extrakcia textu

REGEXP(pattern, text)

Extrahujte text pomocou regulárneho výrazu. Vráti prvú zachytávaciu skupinu, ak existuje, inak celý zhodný text. Vráti null, ak sa nič nezhoduje.

Príklady:

"${REGEXP('^([A-Z])[a-z]+', 'Hello')}" → "H" (first capturing group)
"${REGEXP('^[A-Z][a-z]+', 'Hello')}" → "Hello" (full match, no groups)

Bežné prípady použitia

Validácia e-mailu

"${REGEXPMATCH('^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$', email)}"

Extrakcia telefónneho čísla

"${REGEXP('\\(([0-9]{3})\\) [0-9]{3}-[0-9]{4}', '(555) 123-4567')}" → "555"

Validácia dát

"${IF(REGEXPMATCH('^[A-Z]{2}[0-9]{4}$', code), 'Valid format', 'Invalid format')}"

Extrakcia ceny

"${REGEXP('Price: \\$([0-9]+\\.[0-9]{2})', 'Price: $19.99')}" → "19.99"

Podmienená logika

Funkcia IF

Použite IF(podmienka, hodnotaAkTrue, hodnotaAkFalse) pre podmienený výber hodnoty.

Príklady:

"status": "${IF(age >= 18, 'Adult', 'Minor')}" → "Adult"
"message": "${IF(isActive = true, 'Available', 'Unavailable')}" → "Available"

Ternárny operátor

Alternatívna podmienená syntax: podmienka ? hodnotaAkTrue : hodnotaAkFalse (rovnaká ako funkcia IF, ale stručnejšia)

Príklady:

"status": "${age >= 18 ? 'Adult' : 'Minor'}" → "Adult"
"message": "${isActive ? 'Available' : 'Unavailable'}" → "Available"

Vnorený ternárny operátor

Ternárne operátory môžu byť vnorené pre komplexnú podmienenú logiku.

Príklady:

"category": "${age > 65 ? 'Senior' : (age > 18 ? 'Adult' : 'Minor')}" → "Adult"
"grade": "${score >= 90 ? 'A' : (score >= 80 ? 'B' : (score >= 70 ? 'C' : 'F'))}" → "A"
"access": "${userRole = 'admin' ? 'Full Access' : (userRole = 'user' ? 'Limited Access' : 'No Access')}" → "Full Access"

Ternárny operátor s logickými operátormi

Skombinujte ternárne operátory s logickými operátormi pre komplexné podmienky.

Príklady:

"eligibility": "${age >= 18 && isActive ? 'eligible' : 'not eligible'}" → "eligible"
"access": "${isAdmin || isManager ? 'access granted' : 'access denied'}" → "access granted"
"welcome": "${(age > 18 && status = 'verified') || isVIP ? 'Welcome' : 'Access denied'}" → "Welcome"

Priorita operátorov

Priorita (od najvyššej po najnižšiu)

  1. Volania funkcií
  2. Zoskupovanie zátvorkami
  3. Násobenie a delenie (*, /)
  4. Sčítanie a odčítanie (+, -)
  5. Spájanie reťazcov (.)
  6. Porovnávacie operátory
  7. Logické AND (&&)
  8. Logické OR (||)
  9. Ternárny podmienený operátor (? :)

Pokročilé príklady

Komplexná podmienená logika

{
  "userStatus": {
    "e": "${(age >= 18 && isVerified = true) || isAdmin = true ? 'Authorized' : 'Unauthorized'}"
  },
  "priceCategory": {
    "e": "${price > 1000 ? 'Premium' : price > 500 ? 'Standard' : 'Budget'}"
  },
  "statusMessage": {
    "e": "${isActive ? (lastLogin ? 'Active User' : 'Inactive User') : 'Disabled Account'}"
  }
}

Viacúrovňové vnorenie funkcií

{
  "processedName": {
    "e": "${UPPER(TRIM(REPLACE(rawName, '_', ' ')))}"
  }
}

Podmienené vytváranie reťazcov

{
  "fullAddress": {
    "e": "${street}${IF(LEN(apartment) > 0, ', Apt ' + apartment, '')}${IF(LEN(city) > 0, ', ' + city, '')}"
  }
}

Validácia a formátovanie

{
  "emailStatus": {
    "e": "${IF(LEN(email) > 0 && email != null, 'Email: ' + LOWER(TRIM(email)), 'No email provided')}"
  }
}

Komplexná obchodná logika

{
  "accessLevel": {
    "e": "${IF((userRole = 'admin' || userRole = 'moderator') && isActive = true && LEN(lastLogin) > 0, 'Full Access', IF(userRole = 'user' && isActive = true, 'Limited Access', 'No Access'))}"
  }
}

Čistenie a transformácia dát

{
  "cleanDescription": {
    "e": "${TRIM(STRIPHTML(REPLACE(rawDescription, '\\n', ' ')))}"
  }
}

Príklady pre rýchlu referenciu

Základné operácie

"Hello ${world}!"
"${UPPER('hello')} ${LOWER('WORLD')}"
"${IF(isActive, 'Active', 'Inactive')}"
"${isActive ? 'Active' : 'Inactive'}"

Komplexné podmienky

"${IF(age >= 18 && status = 'verified', 'Welcome', 'Access denied')}"
"${price > 100 ? 'Premium' : price > 50 ? 'Standard' : 'Budget'}"
"${COALESCE(nickname, firstName, 'Anonymous')}"

Príklady formátu výrazov

Akékoľvek pole môže použiť formát výrazu poskytnutím objektu s vlastnosťou “e” obsahujúcou reťazec výrazu.

Príklady kalkulačky čísel

"amount": "100+200" → 300
"amount": "3.5%" → 0.035
"amount": "abs(-100)" → 100
"amount": "(100+50)*2" → 300
"amount": "sqrt(16)" → 4

Príklady kalkulačky dátumov

"date": "1.1.2025" → 2025-01-01
"date": "15.6.25" → 2025-06-15
"date": "today + 1y" → one year from today
"date": "1.1.2025 + 5M" → 2025-06-01

Interpolácia premenných

"price": { "e": "${basePrice} * 1.21" }
"fullName": { "e": "Hello ${firstName}!" }
"dueDate": { "e": "${createdDate} + 30d" }

Režimy aktualizácie pre preložiteľné polia

Komplexný sprievodca spracovaním viacjazyčných polí s rôznymi stratégiami aktualizácie

Preložiteľné polia podporujú viacero režimov aktualizácie s rôznym správaním pri spracovaní existujúcich prekladov.

Tri režimy aktualizácie

Režim 1: Aktualizácia špecifická pre jazyk (režim zlúčenia)

"name": "Value"

Aktualizuje preklad iba pre aktuálne vybraný jazyk (@language alebo systémový predvolený jazyk)

Používa: nastavenie @language na začiatku importného súboru (alebo systémový predvolený jazyk)
Predvolené: "name@removeAll": false (zachováva preklady v iných jazykoch)

Príklad: Ak je aktuálny jazyk “en” a existujúce preklady sú {"en": "Old", "cs": "Starý"}, potom "name": "New" vedie k {"en": "New", "cs": "Starý"}

Režim 2: Priame asociatívne pole (režim nahradenia)

"name": {"en": "English", "cs": "Czech"}

Nahradí všetky preklady zadanými jazykmi

Predvolené: "name@removeAll": true (odstráni všetky ostatné existujúce preklady, ktoré nie sú špecifikované)

Príklad: Ak sú existujúce preklady {"en": "Old", "cs": "Starý", "de": "Alt"}, potom "name": {"en": "New", "fr": "Nouveau"} vedie k {"en": "New", "fr": "Nouveau"} (nemecký preklad je odstránený)

Režim 3: Priamy formát poľa (režim nahradenia)

"name": [{"language": "en", "value": "English"}, {"language": "cs", "value": "Czech"}]
"name": [{"language": "en", "name": "English"}, {"language": "cs", "name": "Czech"}]

Alternatívny formát podporujúci vlastnosti “value” aj “name”

Predvolené: "name@removeAll": true (odstráni všetky ostatné existujúce preklady, ktoré nie sú špecifikované)

Príklad: "name": [{"language": "en", "value": "New"}] odstráni všetky ostatné jazykové preklady a ponechá iba anglický

Kontrola odstraňovania prekladov

@removeAll: true

Odstrániť všetky ostatné preklady neuvedené v aktuálnej aktualizácii

Upozornenie: Týmto sa natrvalo odstránia nešpecifikované preklady

@removeAll: false

Zachovať existujúce preklady, aktualizovať/pridať len špecifikované

Bezpečné: Existujúce preklady sa zachovajú a zlúčia

Zhrnutie predvoleného správania

  • Režim 1 (špecifický pre jazyk): @removeAll: false (zlúčiť)
  • Režim 2 a 3 (priame polia): @removeAll: true (nahradiť)

Praktické príklady

Zlúčiť s existujúcimi (zachováva ostatné jazyky)

{
  "@language": "en",
  "products": [
    {
      "code": "WIDGET-001",
      "name": "New English Name",
      "name@removeAll": false
    }
  ]
}

Týmto sa aktualizuje iba anglický preklad, pričom sa zachovajú existujúce české, nemecké atď. preklady.

Nahradiť všetky preklady

{
  "products": [
    {
      "code": "WIDGET-001",
      "name": {"en": "English", "cs": "Czech"}
    }
  ]
}

Automaticky nastaví @removeAll: true, čím sa odstránia všetky ostatné jazykové preklady.

Formát poľa s selektívnou kontrolou odstraňovania

{
  "products": [
    {
      "code": "WIDGET-001",
      "name": [{"language": "en", "value": "English"}],
      "name@removeAll": false
    }
  ]
}

Prepísať predvolené nastavenie na zachovanie ostatných jazykov pri použití formátu poľa.

Osvedčené postupy

  • Použite režim 1 pre inkrementálne aktualizácie prekladov
  • Použite režimy 2/3 pre hromadné importy prekladov z externých systémov
  • Vždy explicitne špecifikujte @removeAll, keď je správanie kritické
  • Zvážte použitie direktívy @language pre konzistentné spracovanie jazykov naprieč importom
  • Otestujte správanie prekladov s ukážkovými dátami pred hromadnými importmi

Časté úskalia


Ďalšie kroky

Teraz, keď rozumiete importnému systému, naučte sa, ako vytvárať šablóny mapovania na transformáciu vašich dát.

[navigate:/help/en/api/mapper|Pokračovať na mapovanie dát|settings]

Súvisiace články

  • [navigate:/help/en/user-flows/automatic-imports|Pracovné postupy Automatického importu|refresh-cw]
  • [navigate:/help/en/user-flows/data-migration|Sprievodca migráciou dát|upload]
  • [navigate:/help/en/api/webhooks|Dokumentácia k webhookom|webhook]