Apex-luokkien, Apex-käynnistimien ja Visualforce-sivujen API-versiot
International Components for Unicode (ICU) -formaatit ovat käytettävissä API-versiolla 45.0 ja sitä uudemmilla. Jos haluat käyttää ICU-paikkamääritysformaatteja mukautuksissasi, kaikkien Apex, Apex ja Visualforce täytyy käyttää API-versiota 45.0 tai sitä uudempaa.
Vaaditut versiot
| Käytettävissä: Salesforce Classicissa ja Lightning Experiencessa |
| Käytettävissä: Kaikissa versioissa |
| Tarvittavat käyttöoikeudet | |
|---|---|
| Apex-luokkien määrittäminen, muokkaaminen, poistaminen, suojauksen määrittäminen ja versioasetusten määrittäminen: | Apex-laadintaoikeus |
| Apex-testien suorittaminen: | Määritysten ja kokoonpanon tarkasteluoikeus |
| Apex-käynnistimien tarkasteleminen: | Määritysten ja kokoonpanon tarkasteluoikeus |
| Apex-käynnistimien muokkaaminen: | Apex-laadintaoikeus |
Salesforce lisäsi ICU-paikkamääritysformaatit Spring ’19 -julkaisun yhteydessä, joka vastaa API-versiota 45.0. Kun ICU-paikkamääritysformaatit otetaan käyttöön, kaikki Salesforcen tarjoamat ominaisuudet käyttävät niitä. Apex, Apex ja Visualforce käyttävät kuitenkin ICU-paikkamääritysformaatteja vain, kun ICU on käytössä ja Apex tai Visualforce API-versio on 45.0 tai sitä uudempi.
API-versiota 44.0 tai sitä vanhempaa käyttävät mukautetut koodit ja komponentit eivät voi viitata ICU-paikkamääritysformaatteihin, koska formaatit eivät ole olemassa kyseisessä API-versiossa. Tällöin mukautettu koodi ja komponentit palauttavat JDK-paikkamääritysformaatit, vaikka ICU-paikkamääritykset olisivat käytössä organisaatiossa.
Jokaisella Visualforce-sivulla, Apex-luokalla ja Apex-käynnistimellä on API-versio. Kun komponentti luodaan, sen alustava API-versio on aina Salesforce-organisaatiosi API-versio.
Kunkin Salesforce-julkaisun yhteydessä julkaistaan uusi API-versio. Salesforce ei kuitenkaan päivitä Apex-luokkiesi, Apex-käynnistimiesi ja Visualforce-sivujesi API-versiota, koska emme voi testata niitä mahdollisten ongelmien varalta. Sinun kannattaa päivittää komponenttiesi API-versio ja tarkastaa komponenttien koodi jokaisen julkaisun yhteydessä, mutta joskus se ei ole mahdollista. Tästä syystä Apex voi käyttää esimerkiksi API-versiota 41.0 organisaatiossa, jossa on API-versio 63.0.
Myös Salesforce-kumppanit ja itsenäiset ohjelmistotoimittajat (ISV) käyttävät Apex, Apex ja Visualforce tarjotakseen ominaisuuksia paketeissaan. Ohjelmistokehittäjät ovat vastuussa pakettiensa komponenttien API-versioiden päivittämisestä.
Esimerkkiskenaario ja mahdolliset virheet
Mikä on odotettu vaikutus organisaatioon, jossa on ICU-paikkamääritysformaatit käytössä, sekä Apex, Apex ja Visualforce, jotka eivät täytä vaadittua API-versiota 45.0?
Katsotaanpa esimerkiksi paikkamääritystä Espanja (Yhdysvallat) [es_US]. Lyhyiden päivämäärien JDK- ja ICU-formaatit eroavat kuukauden ja päivän järjestyksessä.
- Päivämäärien lyhyt JDK-formaatti en_US-paikkamääritykselle: kk/pp/vvvv (esimerkki: 2/11/2021)
- Päivämäärien lyhyt ICU-formaatti en_US-paikkamääritykselle: pp/KK/vvvv (esimerkki: 11/2/2021)
Jos organisaatiossa on ICU-paikkamääritysformaatit käytössä, kaikki vakiomuotoiset ja mukautetut käyttöliittymäkomponentit, riippumatta API-versiosta, näyttävät päivämäärät ICU-muodossa muodossa pp/KK/vvvv. Mukautetut komponentit, jotka käyttävät versiota 44.0 tai sitä uudempaa, näyttävät virheellisen päivämäärän. Esimerkiksi JDK-päivämäärä 11. helmikuuta 2021 (2/11/2021) näytetään ICU-paikkamääritysformaatissa 2. marraskuuta 2021 (2/11/2021).
Muissa tilanteissa tämä kuukausi- ja päivävirhe johtaa virheelliseen päivämäärään. Esimerkiksi JDK-päivämäärä 11/28/2021 (MM/pp/vvvv) aiheuttaa ParseException "Virheellinen päivämäärä ja aika" -virheen, kun ICU-paikkamääritysformaatti yrittää näyttää sen muodossa (pp/kk/vvvv). Virhe tapahtuu, koska 28. kuukautta ei ole.
Salesforce Classic muokatut päivämäärä/aika-kentät ja Visualforce suoramuokkaukset käyttävät aina nykyistä Salesforce API -versiota. Tästä syystä nämä mukautetut kentät ja suoramuokkaukset käyttävät aina ICU-paikkamääritysformaatteja, kun ICU on käytössä, riippumatta Visualforce API-versiosta. Käyttäjäsi voivat kohdata ParseException-virheen kahdessa tilanteessa:
- Käyttäjä tekee suoramuokkauksen Visualforce API-versiolla 44.0 tai sitä vanhemmalla ja tallentaa muutokset virheellisellä päivämäärällä ICU-paikkamääritysformaatissa (esimerkiksi 11/28/2021 es_US-paikkamäärityksessä).
- Käyttäjä syöttää päivämäärän/ajan mukautettuun kenttään Salesforce Classicissa.
Varmista, että Apex-luokkasi, Apex-käynnistimesi ja mukautetut Visualforce-sivusi käyttävät API-versiota 45.0 tai sitä uudempaa välttyäksesi näiltä ongelmilta, kun ICU on käytössä.
Hallittujen pakettien komponentit
Organisaatiosi Apex-luokille, Apex-käynnistimille ja Visualforce-sivuille on kaksi lähdettä. Joko joku on rakentanut ne suoraan organisaatiossasi, tai ne sisältyivät asennettuun hallittuun pakettiin.
Vain pakettien omistajat voivat muokata hallittuun pakettiin sisältyviä komponentteja. Näet hallitun paketin asentamia kohteita luetteloissasi, mutta et voi muokata niitä. Jos haluat hankkia päivityksiä näille kohteille, sinun täytyy asentaa paketista uusi versio, joka sisältää päivitykset.
Jos olet paketin omistaja, päivitä pakettisi käyttämään uusinta API-versiota Apex-luokissa, Apex-käynnistimissä ja Visualforce-sivuilla, jotka viittaavat päivämääriin, kellonaikoihin, kokonaislukuihin tai valuuttoihin.
- API-versioiden tarkastaminen
Etkö ole varma, onko organisaatiollasi Apex-luokkia, Apex-käynnistimiä ja Visualforce-sivuja? Kaikilla näistä on Määritykset-valikossa luettelo, joka sisältää niiden versionumeron. - API-version päivittäminen
API-versio 45.0 on ICU:lle vaadittu minimiversio.

