Список задач всех пользователей со статусом и длительностью просрочки. Настройка с помощью N3


Введение

Comindware Platform предусмотрена стандартная страница «Мои задачи, которая показывает список задач для текущего пользователя с заранее заданными столбцами.

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

Здесь приведён пример вычисления с помощью языка N3 дополнительных атрибутов задач и настройки списка всех задач для всех пользователей с этими атрибутами (например, статуса и длительности просрочки).

Если вам требуется отфильтровать список задач, см. также «Фильтр списка по активным задачам текущего пользователя: по всем процессам, по конкретному процессу». .

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

Требуется настроить таблицу «Статус просрочки задач» со следующими параметрами:

  • выводить задачи всех пользователей: как активные, так и завершённые;
  • выводить только задачи, у которых задан крайний срок (задачи без крайнего срока, не должны отображаться в таблице).

    Настройка крайнего срока задачи

    Крайний срок задачи вычисляется автоматически по заданной продолжительности выполнения задачи.

    Продолжительность выполнения можно установить в свойствах пользовательской задачи на вкладке «Дополнительные».

    См. «Пользовательская задача».

  • столбцы Название, Исполнитель, Дата создания, Крайний срок, Дата завершения;

  • столбец «Просрочена» с логическим (булевым) значением в текстовом виде:
    • Да — если задача активна и крайний срок уже наступил, либо задача завершена, но дата завершения позже крайнего срока;
    • Нет — в остальных случаях.
  • столбец «Длительность просрочки» (0, если задача не просрочена).

Пример настройки

Решим задачу следующим образом:

  • Создадим служебный шаблон записей «Задачи».
  • В шаблоне записей «Задачи» создадим вычисляемые атрибуты для контроля просрочки:
    • атрибут «Длительность просрочки» типа «Дата и время» с выражением на N3 для определения длительности просрочки:
      • для активных просроченных задач — разность между текущим временем и крайним сроком;
      • для закрытых просроченных задач — разность между фактической датой завершения и крайним сроком;
      • для задач без просрочки — 0;
    • текстовый атрибут «Просрочена» с формулой для определения признака просрочки:
      • Да — если длительность просрочки больше 0;
      • Нет — если длительность просрочки 0;
  • В шаблоне «Задачи» создадим вычисляемые атрибуты с выражениями на N3 для вывода стандартных атрибутов задач:

    Название Тип данных
    Название текст
    Исполнитель Аккаунт
    Крайний срок Дата и время
    Дата завершения Дата и время
  • В шаблоне «Задачи» создадим таблицу «Статус просрочки задач» со специальным системным фильтром на N3 и поместим в неё требуемые атрибуты.

  • Добавим таблицу «Статус просрочки задач» на информационную страницу.

Внимание!

Для корректного вычисления выражений указывайте в них те системные имена шаблонов и атрибутов, которые используются в вашем приложении. Они могут отличаться от указанных в примере.

Настройка атрибутов шаблона записи «Задачи»

Для формирования требуемых атрибутов задач создадим служебный шаблон записи.

  1. Создайте шаблон записи «Задачи».
  2. В шаблоне «Задачи» создайте атрибут для вычисления длительности просрочки:
  • Название: Длительность просрочки
  • Системное имя: Длительностьпросрочки
  • Тип данных: длительность
  • Описание: Длительность просрочки задачи
  • Вычислять автоматически: флажок установлен
  • Вычисляемое значение: N3

    # Импортируем функции для работы с объектами, статусами задач, 
    # сеансами, временем и сравнения величин
    @prefix cmw: <http://comindware.com/logics#>.
    @prefix taskStatus: <http://comindware.com/ontology/taskStatus#>.
    @prefix session: <http://comindware.com/ontology/session#>.
    @prefix cmwtime: <http://comindware.com/logics/time#>.
    @prefix w3math: <http://www.w3.org/2000/10/swap/math#>.
    {
    # Получим текущее время (UTC) для сравнения со сроками
    # в переменную ?nowUTC.
    session:context session:requestTime ?nowUTC.
    # Получим крайние сроки всех задач в переменную ?dueDates
    # Предикат cmw:dueDate возвращает крайний срок задачи
    ?item cmw:dueDate ?dueDates.
    if {
    # Активная задача с истёкшим сроком — просрочена.
    # Получим активные задачи
    ?item cmw:taskStatus taskStatus:inProgress.
    # Получим задачи, у которых крайний срок
    # предшествует текущей дате.
    ?dueDates w3math:lessThan ?nowUTC.
    # Вычисляем разность между текущим временем и крайним сроком.
    (?nowUTC ?dueDates) cmwtime:getSpan ?overdueDuration.
    }
    # Возвращаем длительность просрочки
    then {?overdueDuration -> ?value. }
    else {
    # Завершённая задача: просрочена,
    # если завершена после крайнего срока.
    if {
    # Получаем завершённые задачи.
    ?item cmw:taskStatus taskStatus:completed.
    # Получим задачи, у которых дата завершения
    # cmw:completionDate больше крайнего срока.
    ?item cmw:completionDate ?endDates.
    ?dueDates w3math:lessThan ?endDates.
    # Вычисляем разность
    # между датой завершения временем и крайним сроком.
    (?endDates ?dueDates) cmwtime:getSpan ?overdueDuration.
    }
    # Возвращаем длительность просрочки
    then {?overdueDuration -> ?value. }
    # Возвращаем 0, если задача не просрочена
    else {0 -> ?value. }.
    }.
    }
  1. Создайте атрибут для вычисления статуса просрочки:
  • Название: Просрочена
  • Системное имя: Просрочена
  • Тип данных: текстовый
  • Описание: Текстовый статус просрочки задачи
  • Вычислять автоматически: флажок установлен
  • Вычисляемое значение: формула

    IF(GREATER("Длительностьпросрочки", 0), "Да", "Нет") 
  1. Создайте атрибут для вычисления названия задачи:
  • Название: Название
  • Системное имя: Название
  • Тип данных: текст
  • Описание: Заголовок задачи
  • Вычислять автоматически: флажок установлен
  • Вычисляемое значение: N3

    @prefix cmw: <http://comindware.com/logics#>. 
    {
    ?item cmw:title ?value.
    }
  1. Создайте атрибут для вычисления исполнителя:
  • Название: Исполнитель
  • Системное имя: Исполнитель
  • Тип данных: аккаунт
  • Описание: Аккаунт исполнителя задачи
  • Хранить несколько значений: флажок установлен
  • Вычислять автоматически: флажок установлен
  • Вычисляемое значение: N3

    @prefix cmw: <http://comindware.com/logics#>. 
    @prefix assert: <http://comindware.com/logics/assert#>.
    {
    # Собираем список всех исполнителей, назначенных задаче.
    ?item a cmw:UserTask.
    (
    {?item cmw:assignee ?.
    ?item cmw:assignee ?users.}
    {?item cmw:possibleAssignee ?.
    ?item cmw:possibleAssignee ?users}
    )assert:union true.
    ?users -> ?value.
    }
  1. Создайте атрибут для вычисления даты создания:
  • Название: Дата создания
  • Системное имя: Датасоздания
  • Тип данных: дата и время
  • Описание: Дата создания задачи
  • Вычислять автоматически: флажок установлен
  • Вычисляемое значение: N3

    @prefix cmw: <http://comindware.com/logics#>. 
    {
    ?item cmw:dueDate ?value.
    }
  1. Создайте атрибут для вычисления фактической даты завершения:
  • Название: Дата завершения
  • Системное имя: Датазавершения
  • Тип данных: дата и время
  • Описание: Фактическая дата завершения задачи
  • Вычислять автоматически: флажок установлен
  • Вычисляемое значение: N3

    @prefix cmw: <http://comindware.com/logics#>. 
    {
    ?item cmw:completionDate ?value.
    }

Настройка таблицы «Статус просрочки задач»

  1. В шаблоне «Задачи» создайте таблицу «Статус просрочки задач».
  2. В конструкторе таблицы на вкладке «Основные» задайте системный фильтр на N3:

    # Импортируем функции для работы с объектами 
    @prefix cmw: <http://comindware.com/logics#>.

    # Получаем все пользовательские задачи,
    # у которых задан крайний срок cmw:dueDate
    {
    ?item a cmw:UserTask.
    ?item cmw:dueDate ?.
    }

    С таким фильтром в таблице будут отображаться задачи всех пользователей у которых задан крайний срок, с любым статусом: активные и завершённые.

    Фильтрация задач без крайнего срока

    Если крайний срок не задан, задачи попадать не будут попадать в таблицу.

  3. Добавьте в столбцы таблицы атрибуты:

    • ID
    • Название
    • Просрочена
    • Длительность просрочки
    • Исполнитель
    • Дата создания
    • Крайний срок
    • Дата завершения
  4. Добавьте таблицу «Статус просрочки задач» на требуемую информационную страницу приложения. Например, на страницу «Мои задачи».

  5. Откройте результирующую таблицу и проверьте её состав.
К началу


Номер Статьи: 5154
Размещено: Tue, Feb 17, 2026
Последнее обновление: Thu, Feb 19, 2026

Online URL: https://kb.comindware.ru/article/spisok-zadach-vseh-polzovatelej-so-statusom-i-dlitelnostyu-prosrochki-nastrojka-s-pomoshyu-n3-5154.html