Форматирование дат и чисел¶
При вводе и выводе дат, времени, чисел и денежных сумм система использует параметры форматирования, соответствующие настройкам сотрудника.
Справочник параметров форматирования¶
Настройки форматирования определяются в карточках справочника, который доступен в рабочем месте “Администратор” в представлении “Служебные → Форматирование дат и чисел”.
Дважды нажмите на строку с карточкой, чтобы открыть диалог с параметрами. Или нажмите на кнопку “карандаша”, чтобы создать новую карточку.
Поля карточки:
- Заголовок - отображаемое пользователю имя параметров форматирования. Может быть любой строкой, в т.ч. неуникальной. Обычно это название культуры (языка), заданной в поле “Имя культуры”.
- Имя культуры - строковый уникальный идентификатор карточки, который должен соотноситься с действительной культурой по стандарту ISO 639-1.
- Влияет на то, какие параметры будут заполнены по умолчанию во всех других полях по нажатию на кнопку “Обновить настройки из указанной культуры”. В дальнейшем их можно изменить.
- Может быть указана культура с регионом, например,
en-US
(Английский - США) илиru-RU
(Русский - Россия). Рекомендуется так делать только в случае, когда для одного и того же языка требуется обеспечить несколько различных параметров форматирования. - Используется для определения параметров при первом логине пользователя.
- Формат ввода и вывода дат - определяет порядок следования компонент даты “день”, “месяц” и “год”, который будет учитываться для любых выводимых дат, и будет влиять на то, каким образом даты вводятся в контролах карточки и параметрах фильтрации. Допустимые значения и пример форматирования даты “7 июня 2022 г.” (без учёта символа разделителя и настроек ведущих нулей):
- “Месяц, день, год” -
06/07/2022
- “День, месяц, год” -
07/06/2022
- “Год, месяц, день” -
2022/06/07
- “Год, день, месяц” -
2022/07/06
- “Месяц, день, год” -
- Символ-разделитель даты - единственный символ, разделяющий компоненты даты (дни, месяцы, годы). Например, если указан символ точки
.
:27.06.2022
; если указан символ слэш/
:27/06/2022
. - Символ-разделитель времени - единственный символ, разделяющий компоненты времени (часы, минусы, секунды). Обычно указывается двоеточие
:
:17:52:30
. - 24-часовой формат - если флаг установлен, то используется 24-часовой формат ввода и вывода времени, при этом не используются строки “до полудня” и “после полудня”:
17:52:30
. Если флаг не установлен, то используется 12-часовой формат с дополнительным выводом (и вводом) текста “до полудня” и “после полудня”05:52:30 PM
. - Текст “до полудня” (для 12-часового формата) - текст, выводимый после времени для 12-часового формата, если время в интервале 24-часового формата
00:00-11:59
. Также текст используется при вводе времени. Игнорируется, если установлен флаг “24-часовой формат времени”. - Текст “после полудня” (для 12-часового формата) - текст, выводимый после времени для 12-часового формата, если время в интервале 24-часового формата
12:00-23:59
. Также текст используется при вводе времени. Игнорируется, если установлен флаг “24-часовой формат времени”. - Количество дней с ведущим нулём - флаг определяет, что компонент даты с количеством дней вводится и выводится с ведущим нулём, если число меньше 10. Например, флаг установлен (при выводе “день, месяц, год”):
07.06.2022
; флаг не установлен:7.06.2022
. - Количество месяцев с ведущим нулём - флаг определяет, что компонент даты с количеством месяцев вводится и выводится с ведущим нулём, если число меньше 10. Например, флаг установлен (при выводе “день, месяц, год”):
07.06.2022
; флаг не установлен:07.6.2022
. - Количество часов с ведущим нулём - флаг определяет, что компонент времени с количеством часов вводится и выводится с ведущим нулём, если число меньше 10. Например, флаг установлен (при выводе “день, месяц, год”):
07:52:30
; флаг не установлен:7:52:30
. - Символ-разделитель числовых групп - единственный символ, разделяющий группы разрядов (единицы, тысячи, миллионы).
- Учитывается системой при выводе десятичных чисел (контролы “Десятичное число” в карточках, а также колонки и параметры фильтрации в представлениях типа
Decimal
илиCurrency
), обычно это используется для денежных сумм. - Также используется для вывода размеров файлов
4 500 KB
. - Игнорируется при вводе в любых числовых контролах.
- Пример числа “1 миллион” с разделителем “пробел”:
1 000 000.00
(если в поле указан пробел,то при выводе он автоматически заменяется на неделимый пробел); пример с разделителем,
:1,000,000.00
.
- Учитывается системой при выводе десятичных чисел (контролы “Десятичное число” в карточках, а также колонки и параметры фильтрации в представлениях типа
- Символ-разделитель десятичной точки - единственный символ, разделяющий целую и дробную часть для десятичных и вещественных чисел.
- Используется как при выводе, так и при вводе.
- Пример числа с разделителем
.
:3.14
; с разделителем,
:3,14
. - Если символы-разделители числовых групп и десятичной точки оба отличны от символа “точка”
.
, то система позволяет ввести точку для разделения целой и дробной части числа, причём после ввода она автоматически заменится на действительный символ десятичной точки. Например, для параметровru
числовые группы разделяет “пробел”, а десятичная точка - символ “запятая”; в этом случае пользователю допустимо ввести3.14
, что будет интерпретировано как3,14
.
Note
При создании карточки с параметрами форматирования рекомендуем заполнить имя культуры, после чего нажать на кнопку “Обновить настройки из указанной культуры”. После этого все поля карточки будут заполнены валидными значениями, и при необходимости, их можно скорректировать.
Параметры форматирования в типовом решении¶
В библиотеке карточек Platform.jcardlib
в типовом решении доступны следующие карточки с преднастроенными параметрами форматирования дат и чисел.
-
en
(заголовокEnglish
) - параметры для английского языка. -
ru
(заголовокРусский
) - параметры для русского языка.
Вы можете переопределить указанные карточки в проектном решении, экспортировав и заменив их в папке конфигурации проектного репозитория по пути Configuration/Cards/Format settings
.
Определение параметров форматирования¶
При первом логине пользователя автоматически определяется имя культуры, по которым система связывает с сотрудником карточку с параметрами форматирования.
-
В desktop-клиенте это соотносится с культурой в панели управления в разделе “Язык и региональные параметры”.
-
В web-клиенте используется язык интерфейса браузера.
Алгоритм определения параметров форматирования по имени культуры:
- Если отсутствуют параметры для культуры с регионом, то задействуются параметры нейтральной культуры, где указан только язык. Например, у пользователя определены региональные параметры “Русский (Россия)”, что соответствует культуре
ru-RU
. Если отсутствует карточка с именем культурыru-RU
, то используются настройки из карточкиru
“Русский”. - Если отсутствуют подходящие параметры для языка сотрудника, то используется карточка для английского языка
en
.
Изменение параметров форматирования¶
После того, как пользователь выполнил логин, в его карточке сотрудника определённые выше параметры записываются в поле “Форматирование дат и чисел”, и в дальнейшем используются они.
Пользователь может изменить параметры форматирования, выбрав в правой боковой панели плитку “Мои настройки → Форматирование дат и чисел → (Заголовок карточки с параметрами)” (текущие параметры отмечены галкой).
- desktop-клиент предложит пользователю перезапустить приложение. Пользователь может также изменить язык интерфейса, после чего закрыть окно приложения и вновь его открыть из Tessa Applications. До перезапуска параметры форматирования не оказывают влияния на ввод и вывод дат и чисел.
- web-клиент откроет диалог подтверждения на перезапуск приложения. Если пользователь согласится, то страница браузера автоматически обновится, что аналогично нажатию на кнопку обновления страницы браузера. При этом повторный логин не потребуется, и пользователь продолжит работу от ранее открытой сессии, в свойствах которой (в таблице
Sessions
) будут изменены текущие используемые настройки форматирования. Это поведение аналогично изменению языка интерфейса.
Перед первым логином пользователя администратор системы может открыть его карточку сотрудника, и заполнить предпочитаемое значение в поле “Форматирование дат и чисел”. В этом случае автоматическое определение не будет выполняться.
Также возможна ситуация, когда в карточке сотрудника поле не заполнено (логин не выполнялся), но система должна отправить пользователю почтовое уведомление, отобразив для него даты и числа понятным образом. Для этого, по аналогии с определением языка уведомлений, используется поле “Настройки форматирования дат и чисел в уведомлениях по умолчанию” в карточке настроек “Типовое решение”.
Note
Значение параметров форматирования дат и чисел по умолчанию для новых сотрудников можно установить, указав в схеме данных в поле PersonalRoleSatellite.FormatName
имя культуры в поле “Значение по умолчанию”. Все созданные сотрудники автоматически получат эти параметры форматирования (в т.ч. в уведомлениях) и смогут изменить их уже после логина.
История действий¶
В соответствии с настройками сотрудника для каждой сессии назначаются параметры форматирования. Администратору системы эта информация доступна в истории действий в записи типа “Вход в систему”.
В поле Форматирование дат и чисел выводится актуальный заголовок и в скобках имя культуры для карточки справочника Форматирование дат и чисел, которая связана с пользователем на момент логина.
Форматирование в представлениях¶
Представление форматирует ввод для параметров фильтрации и вывод для колонок, в зависимости от их типов.
-
Тип колонки в конструкторе представлений:
-
Тип параметра фильтрации в конструкторе представлений:
-
Тип колонки в схеме данных, если тип в конструкторе представлений указан в формате
$Таблица.Колонка
:
Тип | Тип форматирования | Пример |
---|---|---|
Boolean | Логическое значение | да |
Currency | Десятичное число | 12,345.67 |
Date | Дата без времени | 6/27/2022 |
DateTime | Дата и время | 6/27/2022 5:52:30 PM |
DateTime2 | Дата и время | 6/27/2022 5:52:30 PM |
Decimal | Десятичное число | 12,345.67 |
Double | Вещественное число | 12345.67 |
Single | Вещественное число | 12345.67 |
Time | Время без даты | 5:52:30 PM |
другие | Строка | 1234567 |
Типы форматирования разделяются следующим образом:
- Вещественное число:
- Символ-разделитель десятичной точки используется для разделения целой и дробной частей числа.
- Дробная часть не дополняется оконечными нулями. Если число целое, то дробная часть не выводится, как и символ-разделитель десятичной точки. Например, значение
1
отображается как1
, а значение12.345
как12.345
. - Символ-разделитель числовых групп игнорируется при вводе и не используется при выводе.
- При вводе допустимо использовать символ “точка”
.
в качестве символа-разделителя десятичной точки, если символ-разделитель числовых групп отличен от точки. - Пример вывода:
12345.67
.
- Десятичное число:
- Символ-разделитель десятичной точки используется для разделения целой и дробной частей числа.
- В дробной части всегда выводится ровно две цифры, для целых и нецелых чисел. Например, значение
1
отображается как1.00
, а значение12.345
как12.35
(последний разряд округляется). - Символ-разделитель числовых групп игнорируется при вводе, но используется при выводе для разделения разрядов целой части (тройки цифр).
- При вводе допустимо использовать символ “точка”
.
в качестве символа-разделителя десятичной точки, если символ-разделитель числовых групп отличен от точки. - Пример вывода:
12,345.67
.
- Дата и время:
- Используются и параметры форматирования для даты, и параметры форматирования для времени.
- Компоненты даты и времени разделяются пробелом, и могут быть перенесены на разные строки, в зависимости от свободного места.
- Если время выводится в 12-часовом формате, то разделитель
AM/PM
указывается через неделимый пробел правее времени, что предотвращает перенос компоненты времени и разделителяAM/PM
на разные строки. - Если время выводится в 12-часовом формате, то при вводе разделитель
AM/PM
по умолчанию указан в позицииAM
. Чтобы его изменить, переместите выделение на эту позицию ([стрелка влево]
,[стрелка вправо]
), и нажмите клавишу[стрелка вверх]
или[стрелка вниз]
. Также можно ввести первую буквуA
дляAM
илиP
дляPM
. - Пример вывода:
6/27/2022 5:52:30 PM
- Дата без времени:
- Используются параметры форматирования для даты.
- Компонента времени игнорируется, если присутствует.
- Пример вывода:
6/27/2022
.
- Время без даты:
- Используются параметры форматирования для времени.
- Компонента даты игнорируется, если присутствует.
- Если время выводится в 12-часовом формате, то разделитель
AM/PM
указывается через неделимый пробел правее времени, что предотвращает перенос компоненты времени и разделителяAM/PM
на разные строки. - Если время выводится в 12-часовом формате, то при вводе разделитель
AM/PM
по умолчанию указан в позицииAM
. Чтобы его изменить, переместите выделение на эту позицию ([стрелка влево]
,[стрелка вправо]
), и нажмите клавишу[стрелка вверх]
или[стрелка вниз]
. Также можно ввести первую буквуA
дляAM
илиP
дляPM
. - Пример вывода:
5:52:30 PM
.
- Интервал:
- Используются параметры форматирования для времени.
- Компонента даты игнорируется, если присутствует.
- Время всегда выводится в 24-часовом формате.
- Пример вывода:
0:05:00
.
- Логическое значение:
- Строка
да
илинет
, в зависимости от того, отображается ли значениеtrue
илиfalse
. - Вывод не зависит от параметров форматирования, но зависит от языка интерфейса. При этом используются строки локализации
$Format_Boolean_Yes
дляtrue
и$Format_Boolean_No
дляfalse
.
- Строка
- Строка:
- Значение выводится в стандартной строковой форме, при этом не используются параметры форматирования.
- Это относится не только к строковым типам, но и к уникальным идентификаторам и целым числам.
- Для колонок строковых типов значение локализуется, если отмечен флаг
Localizable
. При этом локализуется как сама строка$String
(если начинается с символа$
), так и плейсхолдеры локализации внутри строки{$String}
. - Пример вывода:
1234567
.
Параметр с настройками форматирования в SQL-запросе¶
При выполнении представления в SQL-запрос передаётся служебный параметр FormatSettings
, в котором система автоматически указывает имя культуры параметров форматирования, которые являются текущими используемыми в сессии. Например, это строка en
или ru
.
Это позволяет использовать форматирование в теле SQL-запроса, отфильтровав таблицу FormatSettings
по колонке Name
, передав в неё значение параметра #param(FormatSettings)
.
Рассмотрим представление с таким SQL-запросом:
Оно отобразит поле Формат ввода и вывода дат в соответствии с текущими параметрами форматирования у пользователя:
Такое использование нельзя назвать полезным. Но смысл в том, что в SQL-запросе можно обратиться к хранимым функциям, которые используют данные из таблицы FormatSettings
для формирования строки с датой, временем, числом или денежной суммой. Пример в следующем разделе.
На вкладке “Отладка” допустимо указать значение этого параметра, где он назван Форматирование дат и чисел.
Параметр будет подставлен в сформированный текст запроса:
Note
Вы можете опираться на то, что параметр FormatSettings
передаётся во все представления, независимо от того, как они используются (в рабочих местах, в ссылочных полях, в коде расширений и др.).
При вызове в API метода получения данных представления ITessaView.GetDataAsync
этот параметр, как и параметр с языком интерфейса Locale
, не следует передавать явно, т.к. система подставит его автоматически при выполнении запроса на сервере.
Хранимая функция FormatAmount¶
В платформе доступна хранимая функция FormatAmount
, которая форматирует переданное число в соответствии с правилами форматирования десятичных чисел, описанными ранее.
Функция возвращает строку с форматированным значением, которую можно использовать для вывода суммы вместе с валютой в форме 10,000.00 USD
.
Первым параметром функция получает число, вторым - имя культуры для параметров форматирования, в который обычно передаётся значение служебного параметра FormatSettings.
Пример использования доступен в типовом представлении ContractsDocuments
, где в колонку “Сумма” выводится сумма договора вместе с наименованием валюты (если она указана).
Поскольку в колонке не только десятичное число (сумма), но и текст с валютой, то для форматирования недостаточно указать тип колонки Decimal. Вместо этого используется колонка строкового типа, а её содержимое формируется в SQL.
Note
Аналогичные хранимые функции допустимо реализовать в проектном решении, чтобы в тексте запроса представления можно было формировать строки, содержащие не только отформатированные денежные суммы, но и другие числа, а также дату и время.
Форматирование в карточках¶
Рассмотрим, как в различных контролах, отображаемых в типах карточек, диалогов и заданий, используются параметры форматирования.
Числовые контролы¶
В контролах “Вещественное число” и “Десятичное число” при вводе и выводе значений применяются параметры форматирования, аналогичные таковым для параметров фильтрации представлений вещественного типа и десятичного типа соответственно.
-
Вещественное число:
- Символ-разделитель десятичной точки используется для разделения целой и дробной частей числа.
- Дробная часть не дополняется оконечными нулями. Если число целое, то дробная часть не выводится, как и символ-разделитель десятичной точки. Например, значение
1
отображается как1
, а значение12.345
как12.345
. - Символ-разделитель числовых групп игнорируется при вводе и не используется при выводе.
- При вводе допустимо использовать символ “точка”
.
в качестве символа-разделителя десятичной точки, если символ-разделитель числовых групп отличен от точки.
-
Десятичное число:
- Символ-разделитель десятичной точки используется для разделения целой и дробной частей числа.
- В дробной части всегда выводится ровно две цифры, для целых и нецелых чисел. Например, значение
1
отображается как1.00
, а значение12.345
как12.35
(последний разряд округляется). - Символ-разделитель числовых групп игнорируется при вводе, но используется при выводе для разделения разрядов целой части (тройки цифр).
- При вводе допустимо использовать символ “точка”
.
в качестве символа-разделителя десятичной точки, если символ-разделитель числовых групп отличен от точки.
Дата и время¶
В контроле “Дата и время” в зависимости от настройки отображения “Тип” определяется, будет ли выполняться ввод и вывод даты и времени, даты без времени, времени без даты или интервала. При этом применяются параметры форматирования, аналогичные таковым для параметров фильтрации представлений.
-
Дата и время:
- Используются и параметры форматирования для даты, и параметры форматирования для времени.
- Компоненты даты и времени разделяются отступом.
- Если время выводится в 12-часовом формате, то при вводе разделитель
AM/PM
по умолчанию указан в позицииAM
. Чтобы его изменить, переместите выделение на эту позицию ([стрелка влево]
,[стрелка вправо]
), и нажмите клавишу[стрелка вверх]
или[стрелка вниз]
. Также можно ввести первую буквуA
дляAM
илиP
дляPM
.
-
Дата без времени:
- Используются параметры форматирования для даты.
- Компонента времени игнорируется, если присутствует.
-
Время без даты:
- Используются параметры форматирования для времени.
- Компонента даты игнорируется, если присутствует.
- Если время выводится в 12-часовом формате, то при вводе разделитель
AM/PM
по умолчанию указан в позицииAM
. Чтобы его изменить, переместите выделение на эту позицию ([стрелка влево]
,[стрелка вправо]
), и нажмите клавишу[стрелка вверх]
или[стрелка вниз]
. Также можно ввести первую буквуA
дляAM
илиP
дляPM
.
-
Интервал:
- Используются параметры форматирования для времени.
- Компонента даты игнорируется, если присутствует.
- Время всегда выводится в 24-часовом формате.
Формат поля¶
Контролы “Строка” (с флагом “Только для чтения”), “Текст”, “Ссылка”, “Список” имеют настройку “Формат поля”, которая описывает, каким образом выводится строковое представление для колонок, указанных в настройке “Поля карточки”.
В первую очередь определяется порядок физических колонок, которые выводит контрол в соответствии с настройкой “Поля карточки”. В примере выше сначала указана комплексная колонка Partner
, которая в соответствии со схемой данных имеет физические колонки PartnerID
и PartnerName
, и дополнительно указана колонка DocDate
.
Это определяет следующий набор плейсхолдеров, ссылающихся на значение в колонке:
{0} - PartnerID
{1} - PartnerName
{2} - DocDate
Между цифрой и закрывающейся фигурной скобкой можно через двоеточие указать стандартную строку формата, аналогичную форматированию “custom format” в плейсхолдерах.
g
: дата со временем без указания секунд (пример:27.05.2022 18:09
).G
: дата со временем с секундами (пример:27.05.2022 18:09:30
).d
: дата без времени (пример:27.05.2022
).t
: время без указания секунд (пример:18:09
).T
: время с секундами (пример:18:09:30
).N
: число с разделителями разрядов, что удобно при выводе денежных сумм (пример:1 200 340,60
).
Note
За подробностями по использованию строк форматирования дат, времени и чисел обратитесь к документации .NET. Перечисленные здесь строки, а также строки с отдельными компонентами даты и времени поддерживаются в web-клиенте.
В формате поля {1}, {2:d}
выводится имя контрагента из колонки PartnerName
и далее, через запятую, дата документа DocDate
, которая форматируется строкой d
как дата без времени в соответствии с параметрами форматирования пользователя.
Warning
Для вывода даты и времени рекомендуем указать одну из стандартных строк форматирования, чтобы определить выводимые компоненты. По умолчанию для всех типов данных, содержащих дату и/или время (Date
, Time
, DateTime
, DateTime2
), определено форматирование по строке G
, т.е. вывод даты и времени с секундами. Для других типов данных значения выводятся аналогично колонкам представления.
Для параметров форматирования en
настроенный контрол будет выглядеть следующим образом (здесь в соответствии с настройками пользователя форматируется только дата, в плейсхолдере которой указана строка формата {2:d}
):
Note
Настройка “Формат поля” влияет на вывод значений в контролах, но не на их ввод. В контроле “Строка” настройка “Формат поля” игнорируется, если не указан флаг “Только для чтения”. В контролах “Ссылка” и “Список” значение форматируется после подтверждения ввода (когда значение подставлено с символом ;
на конце).
Формат колонки в контроле “Таблица”¶
В контроле “Таблица” по кнопке “Колонки и форма” настраивается список колонок, отображаемых пользователю в таблице. Для каждой колонки в настройке “Формат колонки” указывается строка формата, формируемая аналогично формату поля в строковых контролах.
В соответствии со значением в настройке “Поля строки” определяется список плейсхолдеров, соотносящихся с физическими колонками. В примере это:
{0} - WorkingDayStart
{1} - WorkingDayEnd
Note
Если связать колонку с комплексной колонкой, то плейсхолдеры назначались бы физическим колонкам внутри комплексной. Пример приведён в описании настройки Формат поля.
Между цифрой и закрывающейся фигурной скобкой можно через двоеточие указать стандартную строку формата, см. выше.
Строка формата {0:t} - {1:t}
выводит время без указания секунд из поля строки WorkingDayStart
, и через дефис - время без указания секунд из WorkingDayEnd
, при этом используются параметры форматирования пользователя.
Вот так это выглядит с параметрами форматирования en
:
Warning
Для вывода даты и времени рекомендуем указать одну из стандартных строк форматирования, чтобы определить выводимые компоненты. По умолчанию для всех типов данных, содержащих дату и/или время (Date
, Time
, DateTime
, DateTime2
), определено форматирование по строке G
, т.е. вывод даты и времени с секундами. Для других типов данных значения выводятся аналогично колонкам представления.
Контрол “Представлени唶
Контрол “Представление” выводит колонки и позволяет вводить параметры фильтрации в соответствии с той метаинформацией, которая указана у связанного с контролом представления.
Обратитесь к разделу Форматирование в представлениях. Перечисленные там особенности форматирования актуальны и для представлений, отображаемых в карточках.
Если же с представлением связано расширение “Таблица в представлении”, то по кнопке “Колонки и форма” определяются настройки отображаемых колонок.
Обратитесь к разделу Формат колонки в контроле “Таблица” за описанием настроек, их работа аналогична.
Форматирование в плейсхолдерах¶
Плейсхолдеры используются в различных функциях системы: в шаблонах файлов, в теме и тексте уведомлений, для определения дайджеста карточки, в действиях бизнес-процессов и др. Полный список мест использования доступен в профильном разделе документации.
При формировании строковых значений всех плейсхолдеров, например, {f:...}
и {t:...}
, используются правила форматирования, аналогичные колонкам представления, в зависимости от типа данных, который получает каждый из плейсхолдеров на входе. Например, для плейсхолдера {f:Table.Column}
форматирование определяется типом колонки по описанным выше правилам.
Warning
Важным исключением является вывод даты и времени. По умолчанию для всех типов данных, содержащих дату и/или время (в схеме данных это Date
, Time
, DateTime
, DateTime2
, в коде .NET - DateTime
, в коде TypeScript - Moment
), определён вывод даты и времени с секундами в соответствии с текущими параметрами форматирования в сессии. Если требуется вывести только дату или только время, то укажите строку “custom format”.
Строки “custom format” в плейсхолдерах, указываемые после двоеточия (или после второго двоеточия, если после первого у этого плейсхолдера указывается параметр, такой как алиас колонки), могут дополнительно отформатировать вывод плейсхолдера по правилам, описанным выше.
Примеры плейсхолдеров:
{f:DocumentCommonInfo.DocDate:d}
заменяется на дату без времени из поля карточки “Дата документа”.{date}
, возвращающий текущие дату/время, в записи{date:T}
заменяется на текущее время с секундами без даты.{t:DocumentCommonInfo:Amount:N} {t:DocumentCommonInfo:CurrencyName}
заменяется на сумму договора с валютой, такую как10,000.00 USD
. Обратим внимание, что здесь строку:N
можно опустить, т.к. тип колонкиAmount
-Decimal
, а значит, к ней автоматически применяется форматирование для десятичного числа.
Использование в API¶
Для обеспечения корректного применения текущих параметров форматирования пользователя при выводе дат, времени, чисел и денежных сумм, следуйте рекомендациям при использовании API в скриптах и расширениях.
C# / .NET (в скриптах, в серверных расширениях и в desktop-клиенте):
- Используйте статические методы класса
FormattingHelper
для форматирования значений с учётом параметров пользователя:FormatValue
,FormatToString
,FormatDecimal
,FormatDateTimeWithoutSeconds
и др. - Методы
LocalizationManager.Format
позволяют сочетать локализацию (с учётом языка интерфейса пользователя) и форматирование подставляемых значений (с учётом параметров форматирования пользователя). - В проектах расширений основные методы
LocalizationManager
иFormattingHelper
добавлены как глобальные функции, которые можно вызывать без указания имени класса и подключения пространств имён, в соответствии с файломGlobalUsings.cs
в корне проекта. МетодыLocalizationManager.Format(Async)
вызываются какLocalizeFormat(Async)
. - При вызове метода
string.Format
с аргументами типовDateTime
,double
,decimal
явно передавайте текущую культуру какstring.Format(LocalizationManager.CurrentCulture, format, args)
. - При вызове метода
ToString
для объектовDateTime
,double
,decimal
передавайте текущую культуру какobj.ToString(format, LocalizationManager.CurrentCulture)
. - Для форматирования даты, времени, чисел и денежных величин используйте поддерживаемые типовые плейсхолдеры форматирования .NET. Например, укажите
{0:g}
вместо{0:dd.MM.yyyy HH:mm}
в вызовеstring.Format
для вывода даты и времени без секунд для учёта настроек форматирования пользователя. - Метод
LocalizationManager.GetCurrentFormattingSettingsAsync
возвращает объект с настройками форматирования текущего пользователяIFormattingSettings
, свойства которого соответствуют полям карточки. - При разработке элементов управления карточки, наследуемых от класса
ControlViewModelBase
, текущие настройки форматирования доступны через свойствоFormattingSettings
.
TypeScript (в web-клиенте):
- Используйте функции из модуля
tessa/platform/formatting/formattingHelper
для форматирования значений с учётом параметров пользователя:formatValue
,formatToString
,formatDecimal
,formatDateTimeWithoutSeconds
и др.- Пример импорта:
import { formatToString } from 'tessa/platform/formatting'
.
- Пример импорта:
- Используйте функцию
localize
из модуля@tessa/application
как для локализации, так и для сочетания локализации (с учётом языка интерфейса пользователя) и форматирования подставляемых значений (с учётом параметров форматирования пользователя).- Пример импорта:
import { localize } from 'tessa/localization'
.
- Пример импорта:
- Используйте свойство
FormattingManager.instance.settings
, которое возвращает объект с настройками форматирования текущего пользователяIFormattingSettings
, свойства которого соответствуют полям карточки. - Для форматирования объектов
Moment
, содержащих дату/время, используйте методformat
, которому передаются pattern-свойства объектаFormattingManager.instance.settings
. Например,momentObj.format(FormattingManager.instance.settings.dateTimeWithoutSecondsPattern)
.