Вы находитесь здесь:
Версии API для классов Apex, триггеров Apex и страниц Visualforce
Региональные форматы международных компонентов Юникода (ICU) доступны в версии API 45.0 или более поздней. Чтобы использовать региональные форматы ICU в настройках, обновите классы Apex, триггеры Apex и страницы Visualforce к последней версии API..
Требуемые версии
| Доступно в версиях: Salesforce Classic и Lightning Experience |
| Доступно в версиях: все версии |
| Необходимые полномочия пользователя | |
|---|---|
| Для определения, редактирования, удаления, настройки параметров безопасности и настройки версий для классов Apex: | Автор Apex |
| Для выполнения тестов Apex: | Просмотр настройки и конфигурации |
| Для просмотра триггеров Apex: | Просмотр настройки и конфигурации |
| Для редактирования триггеров Apex: | Автор Apex |
Salesforce добавил региональные форматы ICU в выпуске Spring ’19, которые соответствовали версии API 45.0. Когда региональные форматы ICU включены, все предоставленные функции Salesforce используют форматы ICU. Однако, классы Apex, триггеры Apex и страницы Visualforce используют региональные форматы только в том случае, если ICU включен, а версия API страницы Apex или Visualforce — 45.0 или более поздняя.
Настраиваемый код и компоненты, использующие версию API 44.0 или более раннюю, не могут ссылаться на региональные форматы ICU, поскольку они не существуют в этой версии API. В этом случае настраиваемый код и компоненты возвращают региональные форматы JDK, даже если в организации включены регионы ICU.
Каждая страница Visualforce, класс Apex и триггер Apex имеют версию API. Исходная версия API всегда является версией API организации Salesforce при создании компонента.
Новая версия API доступна в каждом выпуске Salesforce. Однако, Salesforce не обновляет версию API классов Apex, триггеров Apex и страниц Visualforce, поскольку мы не можем протестировать их на наличие потенциальных проблем. В идеале, вы обновляете версию API для компонентов и проверяете код в каждом выпуске, но иногда этого не происходит. Поэтому, например, класс Apex может использовать API версии 41.0 в организации с версией API 63.0.
Независимые поставщики ПО (ISV) также используют классы Apex, триггеры Apex и страницы Visualforce для предоставления функций в пакетах. ISV отвечают за обновление версий API компонентов пакета.
Пример сценария и потенциальных ошибок
Каким ожидаемым эффектом для организации являются включенные региональные форматы ICU, а также классы Apex, триггеры Apex и страницы Visualforce, не соответствующие минимально требуемой версии API 45.0?
Рассмотрим регион «Испанский (США) [es_US]» в качестве примера. Форматы коротких дат JDK и ICU отличаются порядком отображения месяца и дня.
- Короткий формат даты JDK для es_US: ММ/дд/ггг (пример: 2/11/2021)
- Короткий форматы даты ICU для es_US: дд/ММ/гггг (пример: 11/2/2021)
В организации с включенными региональными форматами ICU все стандартные и настраиваемые компоненты пользовательского интерфейса, независимо от версии API, будут отображать даты в формате ICU как дд/ММ/ггг. Настраиваемые компоненты, использующие версию 44.0 или ниже, отобразят неправильную дату. Например, дата JDK 11 февраля 2021 года (2/11/2021) отобразится в региональном формате ICU как 2 ноября 2021 года (2/11/2021).
В других сценариях несоответствие месяца и дня приводит к недопустимой дате. Например, дата JDK 28.11.2021 (ММ/дд/ггг) приводит к ошибке ParseException "Недопустимые дата и время", когда региональный формат ICU пытается отобразить его как (дд/ММ/ггг). Ошибка возникает из-за отсутствия 28-го месяца.
Настраиваемые поля даты/времени, редактируемые в Salesforce Classic и посредством встроенного редактирования на страницах Visualforce, всегда используют текущую версию Salesforce API. Из-за этого алгоритма, если ICU включен, эти настраиваемые поля и встроенные правки всегда используют региональные форматы ICU, вне зависимости от версии API страницы Visualforce. Ваши пользователи могут столкнуться с ошибкой ParseException в двух ситуациях:
- Пользователь выполняет встроенное редактирование на странице Visualforce в API версии 44.0 или более ранней и сохраняет изменения с недопустимой датой в региональном формате ICU (например, 28.11.2021 в регионе es_US).
- Пользователь вводит дату/время в настраиваемое поле в Salesforce Classic.
Во избежание этих проблем при включении ICU, убедитесь, что классы Apex, триггеры Apex и настраиваемые страницы Visualforce используют API версии 45.0 или более позднюю.
Компоненты в управляемых пакетах
В вашей организации есть два источника для классов Apex, триггеров Apex и страниц Visualforce. Либо кто-то создал их напрямую в вашей организации, либо они были добавлены в управляемый пакет, который был установлен.
Только ответственные за пакет могут редактировать компоненты, добавленные в управляемый пакет. Элементы, установленные управляемым пакетом, отображаются в списках, но не могут быть изменены. Чтобы получить обновления для этих элементов, необходимо установить новую версию пакета, содержащую обновления.
Если вы являетесь ответственным за пакет, обновите пакет, чтобы использовать последнюю версию API в классах Apex, триггерах Apex и страницах Visualforce, ссылающихся на даты, время, целые числа и валюты.
- Проверка версий API
Не уверены, есть ли в вашей организации классы Apex, триггеры Apex и страницы Visualforce? У каждого есть список в настройках, содержащий номер версии. - Обновление версии API
Версия API 45.0 является минимальной обязательной версией для ICU.
