Перейти к содержанию

Атрибут «Дата и время». Форматирование значений с помощью формул и N3

Введение

В свойствах атрибута «Дата и время» задаётся формат отображения из готового перечня, который нельзя изменить.

Для реализации бизнес-требований может потребоваться выводить дату и время в особом формате. Например, может быть необходимо отображать только время без даты или передавать дату и время в виде строки в формате ISO 8061. Для этого можно отформатировать значение даты и времени с помощью формулы или N3 и записать его в текстовый атрибут.

Функции форматирования дат и времени позволяют извлечь: год, месяц, число, минуты, секунды и т.п.

Здесь представлен пример форматирования значения атрибута «Дата и время» с помощью формулы и выражения на N3.

Структура атрибута «Дата и время»

Прикладная задача

В HTTP-запросе требуется передавать отдельно дату и время создания записи в формате ISO 8061:

"creationDate": "YYYYMMDD" 
"creationTime": "hhmmss"

Исходные данные

Имеется шаблон записи «Заявки».

В заявке имеется системный атрибут «Дата создания».

Данные заявки передаются в стороннюю систему через HTTP с помощью сценария «Отправка заявки».

Сценарий запускается по нажатию кнопки «Отправить заявку».

Настройка форматирования

  1. В шаблоне «Заявки» создайте атрибут:

    • Название: Дата создания 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.
      }
  2. В шаблоне «Заявки» создайте атрибут:

    • Название: Время создания 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.
      }
  3. Поместите атрибуты Дата создания, «Дата создания ISO» и «Время создания ISO» на форму заявки.

  4. В сценарии «Отправка заявки» настройте отправку значений атрибутов «Дата создания ISO» и «Время создания ISO».

    Подробные примеры передачи данных с помощью HTTP см. в статьях:

Тестирование

  1. Создайте запись в шаблоне «Заявки».
  2. Дата создания отобразится в формате 23.06.2025 12:00.
  3. Дата создания ISO должна иметь вид 20250623.
  4. Время создания ISO должно иметь вид 120030.
  5. Отправьте заявку по HTTP.
  6. Дата создания ISO должна быть передана в виде строки вида YYYYMMDD.
  7. Дата создания ISO должна быть передана в виде строки вида hhmmss.
К началу