Атрибут «Дата и время». Форматирование значений с помощью формул и N3
Введение
В свойствах атрибута «Дата и время» задаётся формат отображения из готового перечня, который нельзя изменить.
Для реализации бизнес-требований может потребоваться выводить дату и время в особом формате. Например, может быть необходимо отображать только время без даты или передавать дату и время в виде строки в формате ISO 8061. Для этого можно отформатировать значение даты и времени с помощью формулы или N3 и записать его в текстовый атрибут.
Функции форматирования дат и времени позволяют извлечь: год, месяц, число, минуты, секунды и т.п.
Здесь представлен пример форматирования значения атрибута «Дата и время» с помощью формулы и выражения на N3.
Структура атрибута «Дата и время»
-
Значение даты и времени в базе данных хранится в часовом поясе
UTC+0
:2020-12-10T07:45:00Z
-
Значение даты и времени отображается в соответствии с настройками часового пояса. См.:
- Исходный формат отображения даты и времени задаётся в свойствах атрибута из готового перечня. Этот формат используется при отображении даты и времени на формах, в таблицах и карточках, а также при выгрузке данных с помощью шаблонов экспорта. См.
- Значение даты и времени можно форматировать при объявлении, вычислении и экспорте. См.:
Прикладная задача
В HTTP-запросе требуется передавать отдельно дату и время создания записи в формате ISO 8061:
"creationDate": "YYYYMMDD"
"creationTime": "hhmmss"
Исходные данные
Имеется шаблон записи «Заявки».
В заявке имеется системный атрибут «Дата создания».
Данные заявки передаются в стороннюю систему через HTTP с помощью сценария «Отправка заявки».
Сценарий запускается по нажатию кнопки «Отправить заявку».
Настройка форматирования
-
В шаблоне «Заявки» создайте атрибут:
- Название: Дата создания ISO
- Тип данных: текст
- Формат отображения: обычный
- Вычислять автоматически
-
Вычисляемое значение:
- Формула
# Форматируем значение системного атрибута «Дата создания»
# согласно стандарту ISO 8061.
FORMAT("{0:YYYYMMDD}", LIST($_creationDate))
или
- N3
# Импортируем функции для работы с объектами и строками.
@prefix object: <http://comindware.com/ontology/object#>.
@prefix string: <http://www.w3.org/2000/10/swap/string#>.
{
# Находим атрибут «Дата создания» в шаблоне «Заявки».
("Заявки" "_creationDate") object:findProperty ?creationDateAttribute.
# Получаем значение атрибута в текущей записи.
?item ?creationDateAttribute ?creationDateValue.
# Форматируем дату и время согласно стандарту ISO 8061.
# в формате YYYYMMDDThhmmss
("{0:YYYYMMDD}" ?creationDateValue) string:format ?value.
}
-
В шаблоне «Заявки» создайте атрибут:
- Название: Время создания ISO
- Тип данных: текст
- Формат отображения: обычный
- Вычислять автоматически
-
Вычисляемое значение:
- Формула
# Форматируем значение системного атрибута «Дата создания»
# согласно стандарту ISO 8061.
FORMAT("{0:hhmmss}", LIST($_creationDate))
или
- N3
# Импортируем функции для работы с объектами и строками.
@prefix object: <http://comindware.com/ontology/object#>.
@prefix string: <http://www.w3.org/2000/10/swap/string#>.
{
# Находим атрибут «Дата создания» в шаблоне «Заявки».
("Заявки" "_creationDate") object:findProperty ?creationDateAttribute.
# Получаем значение атрибута в текущей записи.
?item ?creationDateAttribute ?creationDateValue.
# Форматируем дату и время согласно стандарту ISO 8061.
# в формате YYYYMMDDThhmmss
("{0:hhmmss}" ?creationDateValue) string:format ?value.
}
-
Поместите атрибуты Дата создания, «Дата создания ISO» и «Время создания ISO» на форму заявки.
-
В сценарии «Отправка заявки» настройте отправку значений атрибутов «Дата создания ISO» и «Время создания ISO».
Подробные примеры передачи данных с помощью HTTP см. в статьях:
Тестирование
- Создайте запись в шаблоне «Заявки».
- Дата создания отобразится в формате
23.06.2025 12:00
. - Дата создания ISO должна иметь вид
20250623
. - Время создания ISO должно иметь вид
120030
. - Отправьте заявку по HTTP.
- Дата создания ISO должна быть передана в виде строки вида
YYYYMMDD
. - Дата создания ISO должна быть передана в виде строки вида
hhmmss
.
Эта статья была полезна 1 чел.