Функции локалей и picture-шаблонов FormCalc
Включите TXFAWidgetRuntimeOptions.ScriptOptions.EnableJavaScript, чтобы использовать эти функции в общих событиях FormCalc, скриптах calculate и validate через поставляемый движок QuickJS
Выбор локали
Исполняемое поле наследует ближайший непустой атрибут locale от предков; пустая цепочка выбирает настроенную нативную локаль Windows или Linux через ICU
Запись localeSet в документе переопределяет нативные символы чисел и валют, названия месяцев, дней и meridiem, а также шаблоны даты, времени и чисел; отсутствующие значения наследуются от системных данных, а для кастомных имён локалей действует fallback на en_US
Идентификаторы локалей принимают написание с подчёркиванием или дефисом без учёта регистра; вычисляемые имена вроде Concat("de", "_DE") разрешаются в момент исполнения
Внутренние запросы локалей делят дедлайн события и допускают 64 именованных поиска, 256 кодовых единиц UTF-16 на идентификатор и 2 МиБ суммарных метаданных; повторы восстанавливают JavaScript-checkpoint, а зафиксированный replay сессии потребляет записанные метаданные без повторного вызова провайдера
Picture-функции
| Функция | Поведение |
|---|---|
Format(picture, value, ...) | Форматирует значения клаузами date, time, datetime, num или text; стандартные составные клаузы форматируют одно и то же значение, а опциональное расширение принимает соответствующие аргументы-значения |
Parse(picture, text) | Разбирает типизированные клаузы, составные клаузы или альтернативы в текст ISO-даты/времени, десятичное число в тексте или текст без литералов |
Используйте date(de_DE){D. MMMM YYYY} для явной локали, num.currency для стиля локали и вертикальную черту для альтернатив; литералы в кавычках и удвоенные апострофы сохраняют символы как есть
Стили date, time и datetime берут разрешённые шаблоны default, short, medium, long или full; стандартный числовой шаблон localeSet даёт и num.decimal, и его целочисленную часть для num.integer
Picture-шаблоны даты и времени поддерживают год, месяц, день, названия дней недели, 12- и 24-часовые часы, минуты, секунды, доли миллисекунд, meridiem и явные смещения GMT/UTC; неверные даты вроде 30 февраля возвращают пустой текст
Числовые picture-шаблоны поддерживают обязательную 9, опциональную z, Z с пробельным дополнением, разделители целой и дробной части и групп разрядов, символы валют и коды валют ISO, проценты, знаки, скобки, суффиксы credit/debit и подразумеваемую десятичную позицию
Текстовые picture-шаблоны поддерживают A для букв Unicode, O или 0 для буквенно-цифровых символов Unicode, 9 для цифр и X для кодовых точек Unicode, включая дополнительные символы
Продвинутые picture-клаузы добавляют научную нотацию чисел с сохранением дробной точности, порядковые и недельные даты, дополнительные часы, глобальные символы и пробелы, а также разбор составного ввода
Параметры null возвращают null; неверные picture-шаблоны, неверные значения или недоступные локали возвращают пустой текст
target = Format("num(de_DE){z,zz9.99}", 1234.5)
target = Parse("date{MMM D, YYYY}", "Sep 1, 2002")
target = Format("date{YYYY-MM-DD} 'at' time{HH:MM}", "2024-03-15T13:45:09")
Функции даты и времени
| Функция | Параметры и результат |
|---|---|
DateFmt(style=0, locale), TimeFmt(style=0, locale) | Возвращают XFA-шаблоны для default 0, short 1, medium 2, long 3 или full 4; неверные стили выбирают default |
Date2Num(text, picture, locale) | Возвращает серийные дни, где 1900-01-01 — день 1; опущенный picture берёт локаль по умолчанию и также принимает ISO-даты |
Num2Date(serial, picture, locale) | Форматирует серийные дни по заданному или дефолтному date-шаблону локали |
IsoDate2Num(text) | Разбирает компактные или написанные с дефисами ISO-даты, включая опциональные суффиксы времени |
IsoTime2Num(text), Time2Num(text, picture, locale) | Возвращают миллисекунды от полуночи GMT плюс 1; явные смещения применяются, а при их отсутствии берётся текущий часовой пояс |
Num2GMTime(serial, picture, locale), Num2Time(serial, picture, locale) | Форматируют временные серийные значения от 1 до 86400000 в GMT или текущем часовом поясе |
Date(), Time() | Возвращают серийные значения текущих даты и времени, а во время replay сессии используют записанные входы часов |
Опущенные picture-шаблоны Num2Date теперь дают локализованный вывод; вызывающий код, которому нужен ISO-вывод, переведите на Num2Date(serial, "YYYY-MM-DD")
Единицы, кодирование и текстовые утилиты
| Функция | Параметры и результат |
|---|---|
UnitType(measurement) | Распознаёт алиасы in, cm, mm, pt, pc и mp; нераспознанные единицы считаются дюймами |
UnitValue(measurement, targetUnit="in") | Преобразует величины из расчёта 72 пункта в дюйме, 12 пунктов в пике и 1000 миллипунктов в пункте |
Encode(text, encoding="url"), Decode(text, encoding="url") | Поддерживают URL-эскейпинг, XML-сущности и именованные/числовые HTML-сущности с проверкой скаляров Unicode |
Uuid(style=0) | Возвращает 32 шестнадцатеричные цифры или стиль 1 с дефисами, с битами версии 4 и варианта; replay использует записанные случайные входы |
WordNum(value, style=0, locale) | Даёт числительные прописью по-английски, суммы в долларах для стиля 1 или доллары и центы для стиля 2; неверные числовые домены возвращают звёздочку |
Текущие границы picture-поддержки
Альтернативные эры, идеографические или полноширинные представления, локализованные алфавиты цифр, локализованные символы шаблонов только для отображения и полные политики группировки остаются отдельными целями; WordNum выдаёт английские слова
Нативный вычислитель скаляров сохраняет прежние функции ISO и финансов; функции локалей и picture требуют общего исполнения
API более низкого уровня
TXFALocaleData, HPDFXFALoadLocale, HPDFXFALoadDocumentLocale и HPDFXFALocaleJavaScript открывают метаданные локалей Unicode и безопасную сериализацию движка
HPDFXFAExecuteJavaScriptEvent принимает TXFALocaleDataProvider для кастомного поиска метаданных в режиме только для чтения