Toiminnot ovat työkaluja, jotka auttavat sinua pääsemään käsiksi dynaamiseen dataan, kuten tarkistamaan, onko huomenna työpäivä tai löytämään lähettäjän seuraava pyhäpäivä. Niitä käytetään kirjoitettaessa edistyneitä ehtoja. Tämä opas selittää, miten toiminnot toimivat ja miten niitä käytetään.
Tämän artikkelin sisältö:
- Mikä on toiminto?
- Toiminnon syötteet ja data
- Saatavilla olevien toimintojen lista
- Toimintojen tarkastelu
- Erityiset toiminnot
- Pyöristystoiminnot
-
Join-toiminnot
Mikä on toiminto?
Toiminto on uudelleenkäytettävä työkalu, joka palauttaa dataa tiettyjen syötteiden perusteella. Esimerkiksi toiminto voi kertoa sinulle:
- Seuraavan julkisen pyhäpäivän
- Onko tietty päivämäärä työpäivä
- Numeron, päivämäärän tai tekstimerkkijonon syötteesi perusteella
Jos et anna syötettä (jota kutsutaan argumentiksi), toiminto käyttää oletusta, yleensä tämän päivän päivämäärään ja asiaankuuluvaan aikavyöhykkeeseen perustuen.
Toiminnon syötteet ja data
Jotkut toiminnot hyväksyvät yhden tai useamman argumentin (syötteen). Näiden syötteiden on noudatettava kahta sääntöä:
- Oikea tyyppi: Toiminto, joka odottaa päivämäärää, ei hyväksy numeroa tai tekstiä.
- Oikea järjestys: Jos toiminto odottaa ensin merkkijonoa ja toisena numeroa, sinun on noudatettava tätä järjestystä.
Voit joskus jättää pois myöhemmät argumentit, mutta sinun on aina sisällytettävä aikaisemmat.
Kelvollinen: FunctionB(String, Integer)
Kelvoton: FunctionB(String, Date)
Toiminnot palauttavat eri tyyppistä dataa:
- Tekstiä (esim. pyhäpäivän nimi)
- Numeroita (esim. päivien määrä tiettyyn päivämäärään)
- Päiviä (esim. seuraava työpäivä)
Voit käyttää tätä dataa jatkoehdoissa, kuten lisäämällä päiviä päivämäärään tai vertailemalla arvoja.
Saatavilla olevien toimintojen lista
| Nimi | Tulostyyppi | Argumenttityypit | Pakolliset argumentit | Vain saatavilla lausekkeille ? |
| todayIsWeekendSender/todayIsWeekendReceiver | Boolean | - | - | - |
| todayIsHolidaySender/todayIsHolidayReceiver | Boolean | - | - | - |
| dateNowSender/dateNowReceiver | Date | Date | - | - |
| nextHolidayDateSender/nextHolidayDateReceiver | Date | Date | - | - |
| nextWorkDateSender/nextWorkDateReceiver | Date | Date | - | - |
| nearestWorkDateSender/nearestWorkDateReceiver | Date | Date | - | - |
| carrierEtaFromDate | Date | - | - | Kyllä |
| carrierEtaToDate tai carrierEtaDate | Date | - | - | Kyllä |
| dateTimeNowSender/dateTimeNowReceiver | DateTime | - | - | - |
| carrierEtaFromDateTime | DateTime | - | - | Kyllä |
| carrierEtaToDateTime tai carrierEtaDateTime | DateTime | - | - | Kyllä |
| timeNowSender/timeNowReceiver | Time | - | - | - |
| todayAsNumberInYearSender/todayAsNumberInYearReceiver | Integer | - | - | - |
| weekdayNumberSender/weekdayNumberReceiver | Integer | - | - | - |
| weekday | Integer | DateTime | - | - |
| maximumPackageWeightKg | Double | - | - | - |
| minimumPackageWeightKg | Double | - | - | - |
| totalPackageWeightKg | Double | - | - | - |
| maximumPackageVolumeCm3 | Double | - | - | - |
| minimumPackageVolumeCm3 | Double | - | - | - |
| totalPackageVolumeCm3 | Double | - | - | - |
| maximumPackageLengthCm | Double | - | - | - |
| minimumPackageLengthCm | Double | - | - | - |
| totalPackageLengthCm | Double | |||
| maximumPackageWidthCm | Double | - | - | - |
| minimumPackageWidthCm | Double | - | - | - |
| totalPackageWidthCm | Double | |||
| maximumPackageHeightCm | Double | - | - | - |
| minimumPackageHeightCm | Double | - | - | - |
| totalPackageHeightCm | Double | |||
| maximumPackageCircumferenceCm | Double | |||
| minimumPackageCircumferenceCm | Double | |||
| maximumPackageLengthCircumferenceCm | Double | |||
| minimumPackageLengthCircumferenceCm | Double | |||
| monthNowSender/monthNowReceiver | String | - | - | - |
| dayNowSender/dayNowReceiver | String | - | - | - |
| nextWorkDaySender/nextWorkDayReceiver | String | Date | - | - |
| nearestWorkDaySender/nearestWorkDayReceiver | String | Date | - | - |
| carrierEtaFromDay | String | - | - | Kyllä |
| carrierEtaToDay tai carrierEtaDay | String | - | - | Kyllä |
| carrierEtaInterval | String | - | - | Kyllä |
| toUpperCase | String | Merkkijono | - | - |
| allPackageContents | Array | - | - | - |
Toimintojen tarkastelu
Ehdot arvioidaan kahdessa vaiheessa:
- Vaihe 1: Perustarkistukset (ei tarkastelevia toimintoja)
- Vaihe 2: Edistyneet tarkistukset tarkastelevien toimintojen avulla
Tarkastelevat toiminnot katsovat yksityiskohtaisempaa tai ulkopuolista dataa (kuten pyhäpäiviä) ja ne on merkitty "INSPECTING"-tunnisteella. Jos tarkastelevia toimintoja ei käytetä, vaihe 2 on tyhjä.
Tarkastelevilla toiminnoilla ei ole normaalia palautustyyppiä. Sen sijaan ne vaikuttavat Kassan toimitusvaihtoehtoihin yleisemmällä tavalla, esimerkiksi järjestämällä palautettuja vaihtoehtoja uudelleen.
| Nimi | Tulos |
| enabled | Boolean |
| costPrice | Double |
| salesPrice | Double |
Erityiset toiminnot
Seuraavat "yksikkötoiminnot" ovat myös käytettävissä yhdessä tiettyjen operaatioiden kanssa (yksikään niistä ei tue argumentteja):
| Nimi | Tulostyyppi |
| hour | TimePeriod |
| minute | TimePeriod |
| year | Period |
| month | Period |
| day | Period |
| workdaySender/workdayReceiver | WorkdayPeriod |
Työpäivät voivat vaihdella sijainnin mukaan. Mikä on työpäivä lähettäjälle, voi olla pyhäpäivä vastaanottajalle. Siksi työpäiväyksikkö on käytettävä joko lähettäjän tai vastaanottajan kanssa.
Kun lisäät työpäiviä päivämäärään, viikonloput ja kansalliset pyhäpäivät otetaan huomioon asianmukaisen aikavyöhykkeen mukaan.
Huom: Voit lisätä tai vähentää vain enintään 60 työpäivää. Kaikki tätä suurempi (esim. 61) käsitellään arvona 60. Tämä rajoitus auttaa ylläpitämään järjestelmän vakautta ja sitä voidaan lisätä vain varoen.
Tarjoamme myös vakiofunktioita, jotka edustavat yleisesti käytettyjä arvoja ehdoissa. Ne yksinkertaistavat lausekkeita, kuten tarkistamalla, osuu päivämäärä viikonpäivälle, esimerkiksi ”weekday(dateNowSender) between monday;friday”.
| Nimi | Tulostyyppi |
| monday | Integer |
| tuesday | Integer |
| wednesday | Integer |
| thursday | Integer |
| friday | Integer |
| saturday | Integer |
| sunday | Integer |
Pyöristystoiminnot
Pyöristystoimintoja voidaan käyttää arvon (esim. hinnan) pyöristämiseen. Arvo voi olla joko numeerinen tai toiminto, kuten costprice/salesprice:
round(123.45) → pyöristää ylöspäin kokonaisluvuksi
round(123.45; 10.0) → pyöristää ylöspäin kymppiin
round(123.45; 10.0; “down”) → pyöristää alaspäin kymppiin
round(123.45; 10.0; “down99”) → pyöristää alaspäin kymppiin ja vähentää pienimmän määrän desimaalien mukaan saadakseen 119.99
Join-toiminnot
join()-toiminnolla voit yhdistää useita merkkijonoarvoja yhdeksi merkkijonoksi. Tämä voi olla erityisen hyödyllistä, kun haluat dynaamisesti rakentaa hakusanoja useiden tietopisteiden perusteella ja käyttää näitä avaimia hakemaan arvoja Ehtolistasta.
Tyypillisiä käyttötapauksia ovat:
- Yhdistelmäavainten rakentaminen hakuja varten (esim. Alue + Valuutta)
- Monimutkaisen sääntölogiikan yksinkertaistaminen
- Dynaaminen arvojen valinta, kuten ilmaisrajojen tai hintatasojen valinta alueen, painon, tilavuuden tai valuutan perusteella
Yhdistämällä arvot ajon aikana join() voi korvata pitkät ehtolausekkeet lyhyemmällä sääntölogiikalla.
Toiminnon syntaksi
join("/"; ["hello";"world"]) => "hello/world"
join("+"; ["hello"; 1; 2; 3]) => "hello+1+2+3"
Esimerkki:
cart_price >= toNumber(join(""; [tocountry from "Zones"; currency]) from "FreeShipThresholds")
Yllä olevassa lausekkeessa maa käännetään alueeksi käyttämällä hakua tocountry Ehtolistasta nimeltä "Zones", jonka odotetaan palauttavan merkkijonon, kuten "Zone1". Käyttämällä join-toimintoa alue yhdistetään valuutan kanssa, jolloin saadaan esimerkiksi "Zone1EUR". Tätä arvoa käytetään sitten rajan hakemiseen Ehtolistasta nimeltä "FreeShipThresholds".
Tuloksena on yksi yhdistetty merkkijono.